我想强制用户扫描枪输入信息,不可以用键盘输入,主要目的是为了防止手动输入可能会输错.
我设想了一下,不用文本框,而是用label,但具体如何用vb6实现,我不知道,有知道的请赐教!谢谢!
扫描枪是USB接口的.
|
扫描枪的原理和键盘是差不多的,扫描条码后它会自动转换为数字然后模拟通过键盘端口发送到电脑中,就像是人手从键盘中键入这些数字一样。所以对于VB而言,它是无法判断这些数字是通过扫描枪发来还是通过真正的键盘发来的,因此如果把接收的文本框设为只读或锁定,那么就会连扫描枪发来的信息也一起拒之门外的。改用Label也不行,因为它没有键盘事件。
这件事的完美解决方法要在扫描枪上找。扫描枪的说明书应该有说明如何自定义数字输出格式的(我用过的就有),你可以在数字前面添加一个特殊的字符,比如~,使数字传送到电脑后变成类似下面的格式: ~1234567890(后面加个回车键) 这样你在文本框的KeyPress事件中先检测是否是~字符,如果不是就拒绝接收,如果是就继续接收直到回车键。 不过,你最好还是允许手工收入为好,扫描枪的设计原理本身就是为了自动输入与手工输入相结合的,否则一旦扫描枪发生故障,连个应急措施度没有。你可以在程序中对输入结果进行检测,比如长度、是否合法字符等,另外一般条形码中都包含校验码的,通过比对校验码和其他数字,可知道是否有错。 |
|
举报
2012-03-29 23:01
在Text1_KeyUp事件里将text内容清空,这样就键盘就输不了了,但还可以接收扫描枪输入:
Private Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer) Text1.Text = "" End Sub |