我使用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字节数据时,我收到错误。
答案 0 :(得分:0)
USB打印机设备创建多个端点,很可能您正在寻址可能是只读的端点。使用USB诊断免费软件了解将设备连接到主机时的终点。其中一个端点是读写,这是为了从设备读取。