我正在使用 usb4java 编写 Java 代码,以便与使用控制传输 (Windows) 通过 USB 连接的测量仪器进行通信。数据使用填充了设备预期的十六进制值的 ByteBuffer 进行传输。
这是相关的代码片段:
byte[] query = new byte[]{ 0x1d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 };
ByteBuffer buffer = ByteBuffer.allocateDirect(8);
buffer.put(query);
buffer.rewind();
int transferred = LibUsb.controlTransfer(handle, (byte)0x21, (byte)0x1, (short)0, (short)0, buffer, 1000);
代码工作正常,但只要缓冲区中的任何值超过 0x7F (127),就会传递一个不正确的数字,并且设备无法正确响应。
我显然达到了 Java 中使用的有符号字节类型的限制。但是有没有办法绕过它并为设备获取正确的值?
这几天真的很艰难,就在问题似乎得到解决的时候,我遇到了字节大小限制。在此先感谢您的任何建议!