检测条码扫描器何时结束输入

问题描述:

我正在写一个应用程序,它从条形码扫描器读取输入,我希望它的工作方式是:它可以用作键盘记录器,当输入速度足够快时,从条形码扫描仪获得输入。检测条码扫描器何时结束输入

现在我的问题是我不知道什么时候从条形码扫描仪获得最后一个字符,所以我知道我有一个最终有效的条形码。

我的方法只有在接收到一个字符时才被调用,所以这是当我必须检查我的角色是否是最后一个接收到的时候。

我想做到这一点的方式是,我在我的方法是休眠MAXIMUM_TIME_BETWEEN_CHARACTERS_FROM_BARCODE_SCANNER + 1个milliseoconds,它醒来后,如果我收到任何新的角色,如果我这样做,是它验证最终创建一个新的线程线程死亡,如果没有收到新的字符,这意味着收到完整的条码,我可以使用它。

但是通过这样做,我开始获得各种奇怪的错误,比如执行死于过早。

任何人都可以提出一个不同的解决方案吗?

我在C#中编写它,如果它是相关的。

我重组这个解决方案:

我想做到这一点的是,我在我的方法是休眠MAXIMUM_TIME_BETWEEN_CHARACTERS_FROM_BARCODE_SCANNER + 1个milliseoconds年底创建一个新的线程,它唤醒它验证,如果后的方式我收到任何新字符,如果我这样做了线程死亡,如果没有收到新字符,这意味着收到完整的条码,我可以使用它。

它最终奏效了。我仍然不知道是什么导致了我之前的错误,但是在重新构建代码之后,我完全没有遇到这种方法的问题。

您是否使用实际的条形码扫描仪测试了您的程序?因为根据我的经验,我使用的条形码在扫描的字符串/数字的末尾添加换行符。

+0

这就是我的所作所为 – Jake 2012-06-21 09:21:21

+0

是的,它不会添加换行符。 – b2238488 2014-06-27 13:16:21