バナー
 テクノロード掲示板
ようこそ! ゲスト   [登録]  [ログイン]
返答
 件名:Re:UART通信文字受信について.. 2011-06-30 22:43:40 
あだち

ゲスト

 

非常に迅速でわかりやすい対応ありがとうございました。

しっかりとcoronを活用させていただきたいとおもいます。

IP Logged
引用
 件名:Re:UART通信文字受信について.. 2011-06-30 22:29:41 
admin2
参加日時: 2009-08-19 09:20:38
投稿: 113
場所

そうですね、一旦コマンド文字列をバッファに保管してから

例えば下記のような感じで比較すれば良いかと思います。

 

  const char cs_back[4] = {'b','a','c','k'};  //比較用文字列

  u8 error_cnt=0;    //比較カウント

  u16 i;

  for(i=0;i<4;i++){

    if(buf[i] != cs_back[i]){    //文字が違う→カウント+1

      error_cnt++;

    }

  }

  if(error_cnt==0){

    //逆回転処理

  }

IP Logged
引用
 件名:Re:UART通信文字受信について.. 2011-06-30 21:37:06 
あだち

ゲスト

回答ありがとうございます。

なるほど、非常にわかりやすい説明に感謝いたします。

 

また、teratemに「back」入力でcoron側ではサーボを逆回転にするなど文字列を判別して制御を行うには格納された変数bufの文字列を任意文字列で比較すればよろしいのでしょうか? プログラミング経験が浅いもので何かと失礼いたしますが、回答よろしくお願いします。

IP Logged
引用
 件名:Re:UART通信文字受信について.. 2011-06-30 20:34:00 
admin2
参加日時: 2009-08-19 09:20:38
投稿: 113
場所

teratermで例えば"1234"と入力(CoronへUARTで送信)した文字列を

Coronのプログラム上で整数に変換して変数xに代入する方法ということで宜しいでしょうか?

 

方法はいくつかありますが、とりあえずシンプルなものとしては以下のような感じになります。

 

//teratermからUART受信した4文字("0000"~"9999")を変数xに格納する

u32 x=0;

x  = (UART_getc(1)-'0')*1000;

x += (UART_getc(1)-'0')*100;

x += (UART_getc(1)-'0')*10;

x += (UART_getc(1)-'0');

 

※上記例では、'0'〜'9'以外の文字の入力や4桁以外は考慮していないので、

適宜、入力された文字や文字数によるフィルタを追加してください。

 

IP Logged
引用
 件名:UART通信文字受信について.. 2011-06-29 19:22:00 
あだち

ゲスト

お世話になっております。

teratermにて数列を入力し、coronで整数として認識させたいのですがUART_get 関数でできませんでした。

coron内で変数を用意しteratermで入力した数列を、用意した変数に格納したいのですがどのようなプログラミングで可能でしょうか?最終的にはteratermを使いCrispy Coronを実行するような命令を行いたいと考えております。またはcoronで受けとった文字列をキャストして整数として扱うこともできますでしょうか?

ご教授お願いいたします。

 

IP Logged
引用
返答
ページ # 


Powered by ccBoard