gpt4 book ai didi

Java swt KeyListener "solution"条码读取

转载 作者:行者123 更新时间:2023-11-30 11:31:03 24 4
gpt4 key购买 nike

我在这里找到了一些关于我的问题的很好的问答,但找不到合适的问答。

我有一个 barcode reader读取条形码并将扫描的代码作为键盘输入发送。没关系,我可以轻松捕捉输入

browser.addKeyListener(new KeyAdapter() {   
@Override public void keyPressed(KeyEvent e) {
if(e.keyCode >=48 && e.keyCode <=57) {
System.out.println("number caught");
}
}
});

但是我的应用程序中会有更多输入,所以我需要知道它是由条形码阅读器还是键盘发送的。我认为这可以通过在代码中添加一些计时器来验证某些“序列”读取的时间长度来实现。

我只是想不通,(我的意思是它背后的逻辑),我缺少逻辑部分。

  1. 用户正在输入一些信息,(字母数字)
  2. 用户希望使用条码阅读器读取条码

我试过计时器,例如if(System.currentTimeMillis() - lastPressProcessed ??? 500) { 在触发 keyListener 之后,但我想我遗漏了一些东西。

旁注:USB 条形码读取代码速度很快,因此可以非常快速地模拟击键,整个条形码在大约 1 秒内写入 + 携带 /r/n(同时按下 enter)。

sidenote2: 条形码的长度会有所不同,所以我不能在短时间内只读取一些长度并决定是用户输入还是条形码输入(最大数字读取 13 + 输入).

sidenote3:我没有条形码输入字段,我试图在“后台”运行它。

我正在寻求有关主题的逻辑/伪代码建议

真正接近我的相关主题是here , 和 here

谢谢。

编辑

经过深思熟虑,我找到了解决方案,我将把这个问题留在这里,只是为了其他可能会觉得它有用的用户。

解决方案--移至回答+编辑

最佳答案

这段代码涵盖了我想要实现的一切,它只读取数字(实际上是 F 键下的数字,而不是小键盘上的数字,我遇到了问题,因为扫描仪依赖于键盘,所以我创建了函数 signsToNumbers () 将符号 !@#$%^&*() 转换为数字 1234567890。我可能会更改此功能,因为键盘上的每个键都有自己的唯一标识符 + 修饰符,似乎扫描器也会向应用程序发送 SHIFT 修饰符,但这并不是问题,因为我似乎只匹配 e.keyCode

下面的代码是:

  1. 等待数字输入否则什么都不做
  2. 如果插入第一个数字,它将在 if 条件下循环,直到达到 200 毫秒或收到“\r\n”
  3. 通过 URL 向服务器发送数据

代码

@Override public void keyPressed(KeyEvent e) {
if (timer == true && System.currentTimeMillis() - lastTimer < 200) {
if(e.keyCode >=48 && e.keyCode <=57) { //number pressed
lastTimer = System.currentTimeMillis();
myString = myString + Character.toString(e.character);
}
if(e.keyCode == SWT.CR) {
myString = signsToNumbers(myString);
newUrl = browser.getUrl()+ "/newcode/" + myString;
browser.setUrl(newUrl);
text.setText(newUrl);
System.out.println(myString);
System.out.println("barcode read");
myString = "";
timer = false;
lastTimer = 0;
}
}else{
if(e.keyCode >=48 && e.keyCode <=57) {
lastTimer = System.currentTimeMillis();
timer = true;
myString = Character.toString(e.character);
}
myString = "";
lastTimer = 0;
}
}
});

关于Java swt KeyListener "solution"条码读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17401612/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com