2015年9月20日日曜日

Arduino: Character to Integer

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 件のコメント:

コメントを投稿