関連:
シリアル通信関連記事一覧いよいよ最後の設定です。
前回のフォーマットで送信されたデータを受信し、これを解析して数値に戻します。
段階的に機能を作っていきましょう。
文字列を数字に変換する関数
とりあえず指定した文字列に対して、指定した場所から、指定した文字数分、数字に変換する関数を作ります。機能的にはSUMチェックでやった事と同じです。
<設定>short str_to_num(char *buf,int start,int num){
char sub_buf[5];
//部分切り出し用 int len;
short value;
len=strlen(buf);
//文字数を取得 if(num>4) return -1;
//指定数が多すぎる if(start<0) return -1;
//変換できない範囲を指定している if(start+num>len) return -1;
//変換できない範囲を指定している strncpy( sub_buf, buf+start, num );
//変換したい文字部分を切り出し sub_buf[num]='\0';
value=
strto0x(sub_buf);
//文字を数値に変換 return value;
}
<解説>16進表記の最大4文字まで変換します(short型の範囲)
変換できない状況に対応するため、いくつか保護が入れてあります。
strto0xはSUMチェックの際に作成した関数です。