0

我正在从 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;
}
4

0 回答 0