Android UsbConnection.bulkTransfer()有效,但UsbConnection.controlTransfer总是返回-1

时间:2018-03-15 17:00:03

标签: java android arduino android-usb usb-hostcontroller

我正在从Android设备向Arduino Nano发送信息。 bulkTransfer返回正确的值(传输的数据长度),但Arduino收到奇怪的值。我认为这是因为Arduino(9600)的波特率与Android传输的波特率不同,但我找不到知道这个值的方法。

所以我试图调用controlTransfer来设置Android的波特率,但是controlTransfer总是返回-1。我不明白为什么bulkTransfer有效但controlTransfer失败。

我正在使用此代码:

public int sendData(byte[] nbyte) throws IOException, NullPointerException {
  if(nbyte == null) throw new NullPointerException("nbyte cannot be null");
  int result = this.usbDeviceConnection.controlTransfer(0x40, 0, 0, 0, null, 0, 0);// reset
  result = this.usbDeviceConnection.controlTransfer(0x40, 0, 1, 0, null, 0, 0);// clear Rx
  result = this.usbDeviceConnection.controlTransfer(0x40, 0, 2, 0, null, 0, 0);// clear Tx
  result =  this.usbDeviceConnection.controlTransfer(0x40, 0x03, 0x4138, 0, null, 0, 0);
  int len = this.usbDeviceConnection.bulkTransfer(this.usbEndpoint, nbyte, nbyte.length, 5000);
  if(len == -1) throw new IOException("Bulktransfer failed");
  return len;
}

0 个答案:

没有答案