使用java(usb4java)从libusb中的usb设备读取数据

时间:2015-03-04 18:43:18

标签: java libusb libusb-1.0 usb4java

我使用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字节数据时,我收到错误。

1 个答案:

答案 0 :(得分:0)

USB打印机设备创建多个端点,很可能您正在寻址可能是只读的端点。使用USB诊断免费软件了解将设备连接到主机时的终点。其中一个端点是读写,这是为了从设备读取。