我想知道如何通过蓝牙将图像从Arduino发送到Android。
环境:Android,Arduino Mega 2560,Arducam OV5642模块(用于摄像头),HC-06。
我可以使用Android和蓝牙操作Arduino相机并在Arduino上捕获图像。但是我无法收到图像。字节数组分为多个基于'\ n'的数据包,因此我无法将它们更改为图像。我测试了一个附加所有数据包的字符串,但没有成功。
我知道我可以使用BitmapFactory.decodeByteArray
和setImageView
进行字节到位图和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'字符是原因,不是吗?请告诉我如何。