(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 メーリングリストの案内