2016-09-12 64 views
0

Я хочу послать один пакет на USB-устройство (контроллер Arduino) с использованием низкоуровневых API Usb4Java, но я получаю следующее сообщение об ошибке:Usb4Java: Pipe Error (-9)

org.usb4java.LibUsbException: USB error 9: Pipe error 

Вот код критическая часть:

  ByteBuffer buffer = ByteBuffer.allocateDirect(8); 
      buffer.put(new byte[] {'a', 'b', 'c'}); 
      int transfered = LibUsb.controlTransfer(handle, 
        (byte) (LibUsb.REQUEST_TYPE_CLASS | LibUsb.RECIPIENT_INTERFACE), 
        (byte) 0x09, 
        (short) 256, 
        (short) 0, 
        buffer, 
        1000); 
      System.out.println(transfered); 
      if (transfered < 0){ 
       throw new LibUsbException("Control transfer failed", transfered); 

Я думаю, что это может быть водитель связанной или связанным с параметрами LibUsb.controlTransfer(...); может быть, стоит упомянуть: источник машина работает под управлением Windows 7.

+0

Какой драйвер вы используете? – dryman

+0

Я использовал Zadig 2.2 для изменения драйвера. –

+0

ОК, который должен работать в целом. Вы уверены, что передача управления, которую вы отправляете, верна? API libusb говорит следующее: «LIBUSB_ERROR_PIPE, если запрос управления не поддерживался устройством». Похоже, что передача управления, которую вы пытаетесь отправить, не поддерживается. – dryman

ответ

1

libusb API говорит следующее об ошибках в передаче управления:

«LIBUSB_ERROR_PIPE если запрос на управление не поддерживается устройством»

выглядит как передача управления вы пытаетесь отправить не поддерживается. Возможно, это не то, что контроллер ожидает в качестве команды.