わがロボットの譜

千葉工業大学、総合工学研究会所属の者です。とりあえず、二足歩行ロボット作成日誌です。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

PageTop

シリアル通信でscanf・・・っぽいもの

まぁとりあえず、パソコンからシリアル通信で数字を入力し、その値を返す関数を作りました。

授業で必要になったので、H8で関数書いたのですが、ついでにSHでも書きました。
例によってSH7125です。

これで、デバッグがそれなりに楽になるはず。。


int param_set(void)
{     char param[17] = {};
   int param_num = 0, digit = 1;
  int stock, i;

   for(stock = 0; param[stock-1] != ';'; stock ++)
   {
      receive_word = SCI1_IN_DATA();
     switch(receive_word)
     {
      case '0':case '1':case '2':case '3':case '4':
     case '5':case '6':case '7':case '8':case '9':
       param[stock] = receive_word;
      SCI1_PRINTF("%c", receive_word);
        break;
     case ';':
        param[stock] = receive_word;
       SCI1_PRINTF("%c\n", receive_word);
       break;
      case 'c':
       stock = -1;
       SCI1_PRINTF("\nClear\n");
       break;
      default:
        break;
     }
     for(f = 0; f <= 2000; f ++);
   }

   stock -= 2;//数字が入ってる配列まで戻す

   while(stock >= 0)
  {
     param_num += (param[stock]-48)*digit;//文字0~9はASIIコードで48~57
     digit = digit * 10;//次の桁に次の数が入るように
    stock -= 1;//次の数へ
  }
   return param_num;
}


何点が微妙な書き方が残っている気がしますが、とりあえず満足に動くので気にしてません。
数字入力後、「;」を入力すると値が反映されます。
打ち間違えた場合には「c」を入力すると、売った値をすべて消去して、打ち直しになります。

GDLの関数使っているので、GDLじゃないと動きません。
逆にGDLだったらルネサスのマイコンのH8、SHならSCIの後の数字を対応させるだけで使えるはず。。

スポンサーサイト

PageTop
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。