我正在使用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/

10-12 00:38
查看更多