我正在使用 libusb api 从 java 中的 USB 设备读取数据。我可以将数据写入设备,但无法从设备读取数据。我可以读取第一个数据组(大小:1 字节),但是当我想读取第二个数据组(大小:2 字节)时,出现超时错误(USB 错误 7:控制传输失败:操作超时)。
我的代码是这样的;
buffer = ByteBuffer.allocateDirect(1);
//03
LibUsb.controlTransfer(handle,(byte) (LibUsb.REQUEST_TYPE_VENDOR | LibUsb.ENDPOINT_IN), (byte) 0xdb, (short) 0, (short) 0, buffer, 0);
//00 04
buffer.rewind();
buffer = ByteBuffer.allocateDirect(2);
transferred = LibUsb.controlTransfer(handle,(byte) (LibUsb.REQUEST_TYPE_VENDOR | LibUsb.ENDPOINT_IN), (byte) 0xf0, (short) 0x1c30, (short) 0, buffer, 0);
if(transferred < 0){
throw new LibUsbException("Control Transfer Failed", transferred);
}
我已经用 C 语言实现了这种数据传输,但我必须在 java 中做到这一点。请帮我。
编辑:我正在更改超时,但我的应用程序没有更改。
编辑:我可以读取 1 个字节的数据。当我想读取 2 字节数据时出现错误。