我在这里找到了一些关于我的问题的很好的问答,但找不到合适的。
我有一个条形码阅读器,它可以读取条形码并将扫描的代码作为键盘输入发送。没关系,我可以轻松捕捉输入
browser.addKeyListener(new KeyAdapter() {
@Override public void keyPressed(KeyEvent e) {
if(e.keyCode >=48 && e.keyCode <=57) {
System.out.println("number caught");
}
}
});
但是我的应用程序中会有更多的输入,所以我需要知道它是通过条形码阅读器还是通过键盘发送的。我认为这可以通过在代码中添加一些计时器来验证某些“序列”读取的时间长度来实现。
我只是想不通,(我的意思是背后的逻辑),我缺少逻辑。
- 用户正在输入一些信息,(字母数字)
- 用户希望使用条码阅读器读取条码
我尝试了计时器,例如
if(System.currentTimeMillis() - lastPressProcessed ??? 500) {
在触发 keyListener 之后,但我认为我错过了一些东西。
旁注:
USB 条码读取代码速度很快,因此模拟击键的速度非常快,整个条码在大约 1 秒内写入 + 进位/r/n
(也enter
被按下)。
旁注2:条形码的长度会有所不同,所以我不能在短时间内读取一些长度并决定它是用户输入还是条形码输入(最大数字读取 13 + enter
)。
旁注3:我没有条形码输入字段,我试图在“背景”上运行它。
我正在寻求有关主题的逻辑/伪代码建议。
谢谢你。
编辑
经过深入研究后,我找到了解决方案,我将把这个 Q 留在这里,仅供其他可能觉得这个可用的用户使用。
解决方案 ——移至回答+编辑