(toppers-etrobo 152) EV3RT UART受信機能についてお教えください
karakuri legotechnic
legokarakuri @ gmail.com
2020年 10月 20日 (火) 23:21:04 JST
TOPPERS ETロボコンのみなさま
初めて投稿いたします。
Akiyukiと申します。
趣味でEV3のロボットを作っています。
https://akiyuki.jp/works/1713
https://www.youtube.com/watch?v=T2uEUBoGxxo
EV3RTのUART通信機能を使おうとしているのですが、下記現象があり困っています。
現象
ev3_serial_open_file(EV3_SERIAL_UART)でUARTポートを開くと、受信した内容が自動で送信側にエコーする。
受信を継続しているとUARTの受信がフリーズする。
現象を確認した環境条件
(1)EV3RT1.0「periodic-task」サンプルプログラムのapp.cのmain_taskを添付のものに差し替え、UARTで受け取った文字列をLCDに表示するプログラムに変更。
void main_task(intptr_t unused) {
static FILE *uart = NULL;
int count=0;
char str[100],lcdstr[100];
uart = ev3_serial_open_file(EV3_SERIAL_UART);
while(1){
if(fgets(str, 11, uart) != NULL){
count++;
sprintf(lcdstr, "str=%s count=%d", str,count);
ev3_lcd_draw_string(lcdstr,0,70);
}
}
}
(2)PCのUSBポートとEV3のポート1をAE-TTL-232R経由で接続
(3)PCからSerialDebuggerで1000ms毎に10文字の文字列を送る。
(4)LCDに受け取った文字列と受信回数が表示される。また、エコーした文字列がSerialDebuggerに表示される。
(5)数百秒~数千秒たつと文字列の受信が停止する。同時にエコーも止まる。受信が停止するまでの時間は毎回異なる。
備考
※文字列の送信間隔を1000msから短縮(100ms)するとより早く(数十秒~数百秒)でフリーズする
※UARTの送信元はPCでも他のEV3でも同じ結果になる
※フリーズするのはUART部分のみで、プログラムの他の部分は継続して動作する。
フリーズの原因を確認していただけませんでしょうか。
エコーを無効化することはできませんでしょうか。
回答が頂けましたら幸いです。
よろしくお願いいたします。
Akiyuki
legokarakuri @ gmail.com
-------------- next part --------------
HTMLの添付ファイルを保管しました...
URL: <http://www.toppers.jp/pipermail/etrobo/attachments/20201020/e3f657af/attachment.html>
ETROBO メーリングリストの案内