【发布时间】:2025-12-28 09:25:12
【问题描述】:
我正在使用 usb4java 读取 USB 键盘(二维码扫描仪)输入。
我的代码 sn-p 如下所示:
byte[] data = new byte[16];
UsbPipe usbPipe = usbEndpoint.getUsbPipe();
if (usbPipe != null) {
if (!usbPipe.isOpen()) {
usbPipe.open();
}
if (usbPipe.isOpen()) {
UsbIrp usbIrp = usbPipe.createUsbIrp();
usbIrp.setData(data);
我有两个问题:
1] 按 A 时,字节数组数据为 2,0,0,0,0,0,0,0,2,0,4,0,0,0,0,0
按 AB 键时,字节数组数据为 2,0,0,0,0,0,0,0,2,0,4,0,0,0,0,0,2,0,5,0,0, 0,0,0
如何在java中将其转换为字符?即转换后得到A或AB。
2] 目前,我在上面的代码 sn-p 中传递固定大小的字节数组。例如,如果我期望 1 个字符,我传递 16 作为字节数组的大小,对于 2 个字符 24 作为大小等等。有没有其他优雅的解决方案让它变得动态?
PS:我的字节数组转换器sn-p:
StringBuffer sb = new StringBuffer();
for (byte b : data) {
sb.append(b);
sb.append(",");
}
String byteString = sb.toString();
return byteString;
感谢您的帮助
编辑 1:此处的完整源代码:http://tpcg.io/zt3WfM
【问题讨论】:
-
可以发完整的运行程序吗?
-
好的,我现在在外面,会在 6-7 小时内发布完整代码..
-
@AlpeshJikadra 添加了完整的源代码:tpcg.io/zt3WfM
-
如果扫描仪将自己呈现为键盘,您不能只收集按键吗? (背景:我也用条码扫描仪做过)
-
如果一个人开始搜索扫描码列表,结果是重复的。 *.com/questions/27075328/… - 扫描码从usb.org/sites/default/files/documents/hut1_12v2.pdf的第 53 页开始列出