我试图从arduino BT解码一个[]字节,我得到了完美的连接,问题是当我试图解码数组时,我得到的是这个字符。我尝试使用ASCII字符集,但还是同样的问题。我使用的是UTF-8格式的android studio。
谁能告诉我发生了什么事,好吗?
public void write(byte[] bytes) {
String text = new String(bytes, StandardCharsets.US_ASCII);
Log.d(TAG, "write: Writing to outputstream: " + text);
try {
mmOutStream.write(bytes);
Log.d(TAG, "write: Writing to outputstream: " + bytes);
} catch (IOException e) {
Log.e(TAG, "write: Error writing to output stream. " + e.getMessage() );
}
}
输入流:输入流。
public void run (){
byte [] buffer = new byte[1024];
int bytes;
while(true){
try {
bytes = mmInStream.read(buffer);
String incomingMessage = new String (buffer,0,bytes, StandardCharsets.US_ASCII);
Log.d(TAG,"InputStream: " + incomingMessage);
Intent incomingMessageIntent = new Intent("incommingMessage");
incomingMessageIntent.putExtra("El mensaje", incomingMessage);
Log.d(TAG,"Mensaje enviado a la main actv " + incomingMessage);
LocalBroadcastManager.getInstance(mContext).sendBroadcast (incomingMessageIntent);
} catch (IOException e) {
Log.e(TAG,"Error leyendo Imputstream" +e.getMessage());
break;
}
}
}
在Arduino方面,你应该使用char作为发送格式。
Serial.write
将二进制数据写入串口。这些数据是以字节或一系列字节的形式发送的。
所以简单地尝试解码
Serial.print("1234ABCD\r\n");
不知道安卓上的命令,我猜Arduino口语中的字节是char,而不是二进制数据。而且一定要把用过的代码都贴出来!