チュートリアルの Android と Arduino 間の Bluetooth 経由のデータ転送を使用して、Arduinoからコードを受信します。
ID txtArduino で textview を作成し、使用して.append
いますが、Arduino が送信したときに不完全なテキストが表示されるのはなぜですか?
例えば:
LED オン、および: w- . イイン:13
そして、このような同様の奇妙なテキスト。
この問題を解決するにはどうすればよいですか?
PS: 必要に応じて、さらにコードを提供できます。
Android ヘッダー
h = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case RECIEVE_MESSAGE: // If receive massage
byte[] readBuf = (byte[]) msg.obj;
String strIncom = new String(readBuf, 0, msg.arg1); // Create string from bytes array
sb.append(strIncom); // Append string
int endOfLineIndex = sb.indexOf("\r\n"); // Determine the end-of-line
if (endOfLineIndex > 0) { // If end-of-line,
String sbprint = sb.substring(0, endOfLineIndex); // Extract string
sb.delete(0, sb.length()); // And clear
txtArduino.append(sbprint + "\n"); // Update TextView
//toggleDOOR.setEnabled(true);
}
Log.d(TAG, "...Mesaj:"+ sb.toString() + " Byte:" + msg.arg1 + "...");
break;
}
};
};
Arduino コード:
int cnt = 0;
int pinLed = 13;
String myKey = "0000001";
//Pin Geam Masina 2 si 3
int pinGeamInchis = 2;
int pinGeamDeschis = 3;
char incomingByte;
void setup(){
Serial.begin(9600);
//INITIALIZARE
pinMode(pinLed,OUTPUT);
pinMode(pinGeamInchis,OUTPUT);
pinMode(pinGeamDeschis,OUTPUT);
digitalWrite(pinLed,LOW);
Serial.print("Modul ON( KEY:");
Serial.print(myKey);
Serial.print(" )\r\n");
}
void loop(){
if(Serial.available()> 0){
incomingByte = Serial.read();
if(incomingByte == '0'){
//Opreste LED
digitalWrite(pinLed,LOW);
Serial.print("Pin 13: LED OFF\r\n");
//Inchide Geam
digitalWrite(pinGeamInchis,HIGH);
Serial.print("Command:W-C\r\n");
delay(500);
digitalWrite(pinGeamInchis,LOW);
Serial.print("Pin 2:Window Down\r\n");
}
if(incomingByte == '1'){
//Aprinde LED
digitalWrite(pinLed,HIGH);
Serial.print("LED ON\r\n");
//Deschide Geam
digitalWrite(pinGeamDeschis,HIGH);
Serial.print("Command:W-O\r\n");
delay(500);
digitalWrite(pinGeamDeschis,LOW);
Serial.print("Pin 3:Window Up\r\n");
}
}
}
なるほど、「コマンド」を 1 つだけ送信すれば機能します。シリアルと Android でより多くのコマンドを受信できるようにするにはどうすればよいですか?
PS: Arduino Nanoを使用しています。