3

我正在使用 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 字节数据时出现错误。

4

1 回答 1

0

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

于 2016-11-12T05:03:01.260 回答