VB如何获取USB口条码q的扫描数据?

VB如何获取USB口条码q的扫描数据?,第1张

这么跟你说吧,条码扫描器就相当于自动打字的键盘一样,会把扫描到的条码自动转换为数字然后发送到电脑中。你打开记事本,然后扫描一些条码试试就知道了。

你的条码扫描器的说明书应该还激穗粗有各种族态设置方法的说明的,可以给扫描器增添各种功能,比如在条码数字的后明镇面增加一个回车键,这在编程中比较有用。

我用过的扫描q的输入是用的com输入,在VB里添加MSComm控件即可拿烂。视设备管理器里识别为com几就选com几。

扫描的时候,MSComm控件有comEvReceive事件,可以作为触发事件的,比如控件名是MSComm1

那这个MSComm1_OnComm()里,如果有这个触发事件,就可以声明一个字符型来接受MSComm1.input

这个输入可能根据不同扫描q不同要进行些处理以得到你需要的条码实值

当然条码q具体给你什么你可以去Windows自带的Hyper Terminal里看到

有个了这个条码值,在你图里对应的第二个表里其他的Textbox或者label控件就可以写相应的Caption了,无非是if,case判断了

不加数据库连接的话就没那么复杂了

空口说白话也不行,以下是基于Motolora Symbol P370/470型对条绝哗码值的一些处理,直接写在OnComm里了,process_no就是看到这个号码做相应处理的判断,可以另起炉灶写一个到时候调用就是

Private Sub MSComm1_OnComm()

Dim st As String

If MSComm1.CommEvent = comEvReceive Then

st = MSComm1.Input

If st <>Chr(3) Then

st_all = st_all + st

Else

Txt_Pt.Text = Trim(Mid(st_all, InStr(st_all, Chr(2)) + 1, 10))

st_all = ""

Process_no

End If

End If

End Sub

以上只是com接收事件和取值的例子,判断不必参考的,关键无非是把接收值读入st,再对st_all这个全局变量赋值(不然你一会用那个条码值可没有个地方记录了)

非com输入恕消宏漏在下暂时无能为力

扫描q的原理和键盘是差不多的,扫芹液描条码后它会自动转换为数字然后模拟通过键盘端口发送到电脑中,就像是人手从键盘中键入这些数字一样。所以对于VB而言,它是无法判断这些数字是通过扫描q发来还是通过真正的键盘发来的,因此如果把接收的文本框设为只读或锁定,那么就会连扫描q发来的信息也一起拒之门外的。改用Label也不行,因为它没有键盘事件。

这件事的完美解决方法要在扫描q上找。扫描q的说明灶消书应该有说明如何自定义数字输出格式的(我用过的就有),你可以在数字前面添加一个特殊的字符,比如~,使数字传送到电脑后变成类似下面的格式:

~1234567890(后面加个回车键)

这样你在文本框的KeyPress事件中先检测是否是~字符,如果不是就拒绝接收,如果是就继续接收直到回车键。

不过,你最好还是允许手工收入为好,扫描q的设计原理本身就是为了自动输入与手工输隐首知入相结合的,否则一旦扫描q发生故障,连个应急措施度没有。你可以在程序中对输入结果进行检测,比如长度、是否合法字符等,另外一般条形码中都包含校验码的,通过比对校验码和其他数字,可知道是否有错。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12563687.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存