我正在使用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字节数据时,出现错误。
最佳答案
USB打印机设备创建了多个端点,很可能您要寻址的端点可能是只读的。使用USB诊断免费软件了解将设备连接到主机时的端点。端点之一是可读写的,用于从设备中读取。
关于java - 使用Java(usb4java)从libusb中的USB设备读取数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28862377/