Arduino通过蓝牙将图像传输到Android

时间:2018-08-20 17:08:48

标签: android bluetooth arduino

我想知道如何通过蓝牙将图像从Arduino发送到Android。

环境:Android,Arduino Mega 2560,Arducam OV5642模块(用于摄像头),HC-06。

我可以使用Android和蓝牙操作Arduino相机并在Arduino上捕获图像。但是我无法收到图像。字节数组分为多个基于'\ n'的数据包,因此我无法将它们更改为图像。我测试了一个附加所有数据包的字符串,但没有成功。

我知道我可以使用BitmapFactory.decodeByteArraysetImageView进行字节到位图和imageview的操作...我该怎么办?

这是我的Arduino源代码。

myCAM.CS_LOW();
myCAM.set_fifo_burst();
length--;
while (length--) {
  temp_last = temp;
  temp = SPI.transfer(0x00);  //read a byte from spi
  if (is_header == true) {
    Serial1.write(temp);
  } else if ((temp == 0xD8) & (temp_last == 0xFF)) {
    is_header = true;
    Serial1.write(temp_last);
    Serial1.write(temp);
  }

  if ((temp == 0xD9) && (temp_last == 0xFF)) {
    break;
  }
  delayMicroseconds(30);
}

“写入”正在通过蓝牙发送。

这是Android源代码。

byte [] readBuffer = new byte[4096];
int readBufferPosition = 0;

while (true) {
  if ( isCancelled() ) return false;
  try {
    int bytesAvailable = mInputStream.available();
    if (bytesAvailable > 0) {
      byte[] packetBytes = new byte[bytesAvailable];
      mInputStream.read(packetBytes);
      for (int i = 0; i < bytesAvailable; i++) {
        byte b = packetBytes[i];
        if (b == '\n') {
          byte[] encodedBytes = new byte[readBufferPosition];
          System.arraycopy(readBuffer, 0, encodedBytes, 0, encodedBytes.length);
          String recvMessage = new String(encodedBytes, "UTF-8");
          readBufferPosition = 0;
          Log.d(TAG, "recv message: " + recvMessage);
          publishProgress(recvMessage);
        } else {
          readBuffer[readBufferPosition++] = b;
        }
      }
    }
  } catch (IOException e) {
    Log.e(TAG, "disconnected", e);
    return false;
  }
}

我认为在Android中,'\ n'字符是原因,不是吗?请告诉我如何。

0 个答案:

没有答案