VB 6 与 USB接口的扫描枪
我想强制用户扫描枪输入信息,不可以用键盘输入,主要目的是为了防止手动输入可能会输错.我设想了一下,不用文本框,而是用label,但具体如何用vb6实现,我不知道,有知道的...
我想强制用户扫描枪输入信息,不可以用键盘输入,主要目的是为了防止手动输入可能会输错.
我设想了一下,不用文本框,而是用label,但具体如何用vb6实现,我不知道,有知道的请赐教!谢谢!
扫描枪是USB接口的. 展开
我设想了一下,不用文本框,而是用label,但具体如何用vb6实现,我不知道,有知道的请赐教!谢谢!
扫描枪是USB接口的. 展开
6个回答
展开全部
扫描枪的原理和键盘是差不多的,扫描条码后它会自动转换为数字然后模拟通过键盘端口发送到电脑中,就像是人手从键盘中键入这些数字一样。所以对于VB而言,它是无法判断这些数字是通过扫描枪发来还是通过真正的键盘发来的,因此如果把接收的文本框设为只读或锁定,那么就会连扫描枪发来的信息也一起拒之门外的。改用Label也不行,因为它没有键盘事件。
这件事的完美解决方法要在扫描枪上找。扫描枪的说明书应该有说明如何自定义数字输出格式的(我用过的就有),你可以在数字前面添加一个特殊的字符,比如~,使数字传送到电脑后变成类似下面的格式:
~1234567890(后面加个回车键)
这样你在文本框的KeyPress事件中先检测是否是~字符,如果不是就拒绝接收,如果是就继续接收直到回车键。
不过,你最好还是允许手工收入为好,扫描枪的设计原理本身就是为了自动输入与手工输入相结合的,否则一旦扫描枪发生故障,连个应急措施度没有。你可以在程序中对输入结果进行检测,比如长度、是否合法字符等,另外一般条形码中都包含校验码的,通过比对校验码和其他数字,可知道是否有错。
这件事的完美解决方法要在扫描枪上找。扫描枪的说明书应该有说明如何自定义数字输出格式的(我用过的就有),你可以在数字前面添加一个特殊的字符,比如~,使数字传送到电脑后变成类似下面的格式:
~1234567890(后面加个回车键)
这样你在文本框的KeyPress事件中先检测是否是~字符,如果不是就拒绝接收,如果是就继续接收直到回车键。
不过,你最好还是允许手工收入为好,扫描枪的设计原理本身就是为了自动输入与手工输入相结合的,否则一旦扫描枪发生故障,连个应急措施度没有。你可以在程序中对输入结果进行检测,比如长度、是否合法字符等,另外一般条形码中都包含校验码的,通过比对校验码和其他数字,可知道是否有错。
展开全部
vb6比较常用的是mscomm控件对serial信号的接收,USB的得调到相应的控件或者扫描枪给的驱动里看看
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你把那个文本框的enabled设置为False,这样就无法输入了,不会影响程序运行。
更多追问追答
追问
我试过了,这样之后,扫描枪也不能输入了.
我想要的是键盘不能输入,扫描枪能输入.
追答
做一个实验:
Private Sub Command1_Click()
Text1.Text = "123"
End Sub
Private Sub Form_Load()
Text1.Enabled = False
End Sub
你会发现在enabled属性为False的情况下,无法输入,但是可以用代码改变
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
扫描枪并不需要用什么mscomm控件。它就象键盘一样的。你扫描条码后它直接把得到的一串数字输入到可以输入的文本框里。楼上两位说的设置locked和enabled属性都可以实现你的要求。
追问
我试过了,这样之后,扫描枪也不能输入了.
我想要的是键盘不能输入,扫描枪能输入.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在Text1_KeyUp事件里将text内容清空,这样就键盘就输不了了,但还可以接收扫描枪输入:
Private Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer)
Text1.Text = ""
End Sub
Private Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer)
Text1.Text = ""
End Sub
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询