我们在Windows 7和jre8上看到了条码扫描器和Java Swing应用程序的极端怪异行为。这是一个超过1000台PC和几种不同条码模型的大型部署。我们扫描代表9个字符的字符串的条形码:H06AVKTI2
现在"有时在某些装置上"一些后来的字符以错误的顺序出现: H06AVKTI2 H06AVKI2T H06AVKTI2
欢迎任何想法 - 我们绝望; - )
答案 0 :(得分:0)
我们最终解决了这个问题。事实证明,这个Java Swing应用程序允许配置可用于在特定条件下执行某些业务任务的键盘快捷键。有人将全局配置shift-t
和其他一些shift-_
作为业务交易的快捷方式。
现在,即使我们扫描条形码时上下文中没有这些业务交易,但只要收到shift-t
,应用程序似乎就会中断几毫秒。当条形码扫描器扫描包含" T"的代码时,它会发送这些shift-t
组合中的一种,软件需要很短的时间才能确定,这与此无关。捷径。在这些情况下,扫描的字符最终会被交换。因此,当我们扫描包含我们为...编写快捷方式的一个字符的代码时,这显然只会发生。
解决方案是将配置的快捷方式更改为ctrl-t
而不是shift-t
。
根本原因可能是该应用程序的框架开发人员实现这些全局快捷方式的方式,但这尚未得到验证。