首页 > 范文大全 > 正文

条型码扫描在VF数据库中的应用

开篇:润墨网以专业的文秘视角,为您筛选了一篇条型码扫描在VF数据库中的应用范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

【摘要】本文主要阐述了一维条码读入器在学生实验室考勤管理库中的应用。其中详细论述了在数据库VisualFoxPro6.0中,如何完成串行口激光扫描枪与PC机的硬件连接方式,以及在vfP中如何实现一维码条形码读入的程序控制方法,完成信息检索等功能。

【关键词】数据库;一维条码;激光扫描;VFP程序控制

一、绪论

一维条形码是一种用线条和线条之间的间隔按照一定的规则表示数据的条形符号。条形码阅读器用以扫描条形码,将光信号转变为电信号,经电路识别译码后输入到微处理器设备存储显示,同时可通过信息传输设备传送到系统计算机进行数据管理。学生图书证上印刷有学号一维条形码,可作为学生校内身份识别信息,因此可以用作VFP数据库刷卡考勤登记之用。

二、硬件连接

本设计采用镭码A380激光扫描枪,使用串行口与PC机连接,激光扫描枪串口DB9,其引脚如图1所示:2脚TXD输出:扫描枪向主机发送读入的条码学号,3脚RXD输入:扫描枪接收反馈命令和控制码,5脚GND。9脚由外部提供5V电源。扫描枪预先设定:串行口方式,其传输波特率设置为2400。扫描枪串口信号线直接连PC机的RS-232 DB9 COM1母口端口上。

三、实现过程

学生实验室考勤管理库的应用首先要建立:学生信息、成绩表、实验课程、教师信息等表单库,如图2所示。

在预先记录了数据相应信息的库内,通过学生学号的信息读入,完成到课率的登记,以及平时成绩的评判记录等,其中学生的信息读入是关键。设计中利用了每位学生的图书卡上已有学号一维条码,作为学生的校内身份验证信息,因此可以通过刷卡用作数据库考勤登记之用。其中软件编程思想及端口设置、串口命令使用等将在程序分析中详细解释。

程序处理流程如图3所示。

在串口通信方面,VFP中提供了一个Communications控件,类名:MSComm,其文件名是MSCOMM32.OCX,它允许通过串口进行数据传输和接收,为应用程序提供了一种串行通信的手段。在串口接受端,VFP通知程序从输入缓冲区中取字符有两种方法:一是用轮询方法循环判断INBUFFERCOUNT是否为0;另外是用RTHRESHOLD属性触发“ONCOMM”事件,在本设计中使用前者。在WINDOWS串行通信驱动程序的事件驱动特性中有着读入不稳定的缺陷,如INPUTLEN=0时,有可能取出不完整的数据。本设计INPUTLEN=1,即每次从缓冲区中取一个字符,采用轮询方法,定时检测输入缓冲区,并将读入的单个字符逐个拼接直到读到回车结束,因此保证了扫描数据的完整性。

四、关键程序分析

*自定义扫描子过程

*PROCEDURE scan &&定义扫描子过程

#define COM1 1 &&此段程序由于串口初始化部分

buffer=""&&存储缓冲变量名字,定义为字符型

scan_xh=""&&字符类型变量,保存拼接结果

mPort=1 &&使用COM1串口。

thisform.MSComm1.Settings= "2400,N,8,1"&&2400波特,无奇偶校验,8位数据,1停止位。

thisform.MSComm1.inbuffercount =0&&返回接受区中已传到但还未取走的字符个数,清除缓冲区

thisform.MSComm1.InputLen=1&&从接收缓冲区中读取的1个字符数。设置InputLen为0时,使用Input将使MSComm控件读取接收缓冲区中全部的内容。

thisform.MSComm1.Inputmode=0&&设置或返回接收数据的数据类型,0为文本型数据

&&INPUTLEN、INPUTMOD必须在端口打开之前定义

thisform.MSComm1.PortOpen=.T.&&打开端口

**等待数据返回到串行端口。

ct=0&&记录时间初值

do while.t.

thisform.label7.caption=time()&&使表单的时间一直和系统同步

buffer=thisform.MSComm1.Input&&接收串口扫描单字符

if buffer="" &&如果是空,一直扫描,直到时间到

ct=ct+1 &&扫描时间记录,如扫描枪未接或通讯失败错误避免一直读

if ct>500000

exit

else

loop

endif

else

if buffer=chr(13)&&回车:扫描结束标志,结束串行数据拼接

exit

else &&每次扫入一个字符且与前面字符拼接

scan_xh=scan_xh+buffer

endif

endif

enddo

thisform.MSComm1.PortOpen=.F.&&关串口

**显示结果。

if ct>500000

messagebox("扫描失败",1+32+0,"请重新扫描!")

else

thisform.text2.value=scan_xh &&学号送显

endif

return

*ENDPROC

五、应用结果

如图4所示。先点“开始签到”进入签到系统,打开镭码A380激光扫描枪电源,对准学生图书卡条码扫描,听到“嘟”一声后完成扫描读入。条形码扫描正确后,显示在学号位置,同时通过:学生信息、成绩表、实验课程、教师信息等表单的索引链接,查询到学生姓名、实验课等其它信息,完成自动填充显示,并且弹出提示框:“签到成功!下一位”。如果扫描信息不正确或扫描枪没有工作,在计时时间到十秒后,则弹出信息框提示:“扫描失败,请重新扫描!”,这时可以点“退出”,重复按“开始签到”,继续下一次扫描。

参考文献

[1]史济民,等.VisualFoxPro及其应用系统开发[J].北京:清华大学出版社,2006.8.

[2]镭码A380激光扫描枪使用说明书[S].广州:斯玛计算机有限公司.

[3]mscomm32.ocx通信控件使用示例[OL].http:///blog/static/164221772011929101622617/.