首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

怎么控制条码抢

2012-04-28 
如何控制条码抢一个窗体上有多个EDIT,其中一个用于接收条码抢的值,当焦点在这个EDIT上的时候没问题,但是当

如何控制条码抢
一个窗体上有多个EDIT,其中一个用于接收条码抢的值,当焦点在这个EDIT上的时候没问题,但是当焦点在其它EDIT上的时候,条码抢扫描的值就跑到其他EDIT中去了,如何控制条码抢,使其扫描到的值无论焦点在那个控件上都在指定的EDIT上?

[解决办法]
如果你的条码枪是COM口的,直接监控COM口就可以了。
如果是键盘口的就比较困难了。
如果条码是你自己设计的还好一点,把条码的前几位设为不常用的字母组合如:TMQY,然后监控键盘输入,如果有这几个这几个连接字符,就自动添入edit1,并使edit1获得焦点接收其它字符。

[解决办法]

探讨

引用:
如果你的条码枪是COM口的,直接监控COM口就可以了。
如果是键盘口的就比较困难了。
如果条码是你自己设计的还好一点,把条码的前几位设为不常用的字母组合如:TMQY,然后监控键盘输入,如果有这几个这几个连接字符,就自动添入edit1,并使edit1获得焦点接收其它字符。


基本只能这样了

如果多个键盘口的扫描枪,才是更大的问题。。。……

[解决办法]
探讨
只能用个键盘 hook (钩子) ,这样保证你焦点无论在那个控件上, 你的钩子函数都收到,而条码一般会以 0d,0a 作结束符,收到 0d,0a 即作结束

还有一点,由于条码输入时,是快速连续击键,速度远较用人手进行键盘输入快,这就是你键盘钩子函数判断是键盘输入或条码枪输入的依据

[解决办法]
我说的是, 
判断是键盘输入或条码枪输入的依据是:
 如果是条码枪输入,则 每一个字符输入的间隔是小于 0.05 秒的,例如 123345 这个条码串,用条码枪输入,从 1 到收完 5 , 时间间隔不超过 0.1 秒 

而用人手从键盘输入,是不可能输入 12345 这 5 个字符用到 0.1 秒,没有人类可以做到这点,所以如果超过这个时间,就是键盘输入,否则就是条码输入 

当然,输入时,为判断是否结束,需要用 结束符,一般条码枪是 0d0a,当然,也可以自定义,条码枪都有自定义功能

热点排行