以下のコードはシリアル通信で、受信したデータをカンマ区切りでそれぞれ配列に格納するコードです。
例えば 10.5,20.5 と受信すると、ch[0]に10.5、ch[1]に20.5が格納され、
10.5
20.5
と出力されます。
1回目の受信は正常に作動しますが、2回目からゴミが入り込みます。
例えば先ほど同様 10.5,20.5 と受信すると、
210.5
20.5
と、最初の数字に2が入り込みます。なぜでしょうか?
因みにSerial.flush()を使用してみましたが、ダメでした。
char buf[20]; int i = 0; double ch[2]; bool dec = false; void setup() { Serial.begin(9600); Serial.println("start"); } void loop() { while(Serial.available() > 0) { buf[i] = Serial.read(); if(buf[i] == 'e') { buf[i] = '\0'; Serial.println(buf); ch[0] = atof(strtok(buf, ",")); ch[1] = atof(strtok(NULL, ",")); Serial.println(ch[0]); Serial.println(ch[1]); ch[0] = 0; ch[1] = 0; i = 0; } i++; } }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/02/19 14:59