Serial通信はアスキー文字列としてデータを送受信します。つまり,20という数値を送ったとしても,それは数字で合って,数値ではありません。その後の処理を続けるには数値に変換したいわけです。
Serial communication send and receive data as ASCII characters not values.
そんなときは,atoiという関数を使います。
Use atoi (alphabet to integer) function.
void loop(){
char * val =; // * is important
int a;
// when 3-digits values are input
for (int i =0;i<=3; i++){
val[i] = Serial.read(); // [x] is important.
}
a = atoi(val); //wrong: a = atoi(val[x]);
}
255,255,255,255などのデータを送受信するときは,charではなくてとりあえずintで読んでから,カンマや改行文字などがくることをif文で判別,そうじゃないとき(数字のとき)には数字を“貯めて”から数値に変換,としたらとりあえず回りました。もっと簡単でいい方法もあるとは思いますが。
If you want to read data such as 255,255,255,255, you (1) read the data as int, (2) discriminate commas and newline characters using if statements, (3) "store" the numeral characters, and (4) convert them into int values. It works but I guess better and simpler ways exist.
0 件のコメント:
コメントを投稿