VB 6 与 USB接口的扫描枪

我想强制用户扫描枪输入信息,不可以用键盘输入,主要目的是为了防止手动输入可能会输错.我设想了一下,不用文本框,而是用label,但具体如何用vb6实现,我不知道,有知道的... 我想强制用户扫描枪输入信息,不可以用键盘输入,主要目的是为了防止手动输入可能会输错.
我设想了一下,不用文本框,而是用label,但具体如何用vb6实现,我不知道,有知道的请赐教!谢谢!
扫描枪是USB接口的.
展开
 我来答
网海1书生
科技发烧友

2012-03-28 · 擅长软件设计、WEB应用开发、小程序
网海1书生
采纳数:12311 获赞数:26225

向TA提问 私信TA
展开全部
扫描枪的原理和键盘是差不多的,扫描条码后它会自动转换为数字然后模拟通过键盘端口发送到电脑中,就像是人手从键盘中键入这些数字一样。所以对于VB而言,它是无法判断这些数字是通过扫描枪发来还是通过真正的键盘发来的,因此如果把接收的文本框设为只读或锁定,那么就会连扫描枪发来的信息也一起拒之门外的。改用Label也不行,因为它没有键盘事件。
这件事的完美解决方法要在扫描枪上找。扫描枪的说明书应该有说明如何自定义数字输出格式的(我用过的就有),你可以在数字前面添加一个特殊的字符,比如~,使数字传送到电脑后变成类似下面的格式:
~1234567890(后面加个回车键)
这样你在文本框的KeyPress事件中先检测是否是~字符,如果不是就拒绝接收,如果是就继续接收直到回车键。

不过,你最好还是允许手工收入为好,扫描枪的设计原理本身就是为了自动输入与手工输入相结合的,否则一旦扫描枪发生故障,连个应急措施度没有。你可以在程序中对输入结果进行检测,比如长度、是否合法字符等,另外一般条形码中都包含校验码的,通过比对校验码和其他数字,可知道是否有错。
uw1984
2012-03-16 · 超过31用户采纳过TA的回答
知道答主
回答量:85
采纳率:0%
帮助的人:86万
展开全部
vb6比较常用的是mscomm控件对serial信号的接收,USB的得调到相应的控件或者扫描枪给的驱动里看看
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友bdb9803
2012-03-16 · TA获得超过1.1万个赞
知道大有可为答主
回答量:1.1万
采纳率:53%
帮助的人:9973万
展开全部
你把那个文本框的enabled设置为False,这样就无法输入了,不会影响程序运行。
更多追问追答
追问
我试过了,这样之后,扫描枪也不能输入了.
我想要的是键盘不能输入,扫描枪能输入.
追答
做一个实验:

Private Sub Command1_Click()
Text1.Text = "123"
End Sub

Private Sub Form_Load()
Text1.Enabled = False
End Sub

你会发现在enabled属性为False的情况下,无法输入,但是可以用代码改变
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
flyfox76
2012-03-16
知道答主
回答量:2
采纳率:0%
帮助的人:3236
展开全部
扫描枪并不需要用什么mscomm控件。它就象键盘一样的。你扫描条码后它直接把得到的一串数字输入到可以输入的文本框里。楼上两位说的设置locked和enabled属性都可以实现你的要求。
追问
我试过了,这样之后,扫描枪也不能输入了.
我想要的是键盘不能输入,扫描枪能输入.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
苏州老三石
2012-03-29 · TA获得超过1150个赞
知道小有建树答主
回答量:1300
采纳率:33%
帮助的人:930万
展开全部
在Text1_KeyUp事件里将text内容清空,这样就键盘就输不了了,但还可以接收扫描枪输入:
Private Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer)
Text1.Text = ""
End Sub
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式