UbuntuがBetaflightボードと通信するようにシリアルポートを設定します。

UbuntuがBetaflightボードと通信するようにシリアルポートを設定します。

USBポートを介してSBCに接続されたBetaflight Nero F7 IMUセンサーボードと通信するために、Javaフライトデータ収集プログラム(Lubuntu 16.04を実行している単一ボードコンピューターで実行)を取得しようとしています。開発に使用するノートブック(Ubuntu 16.04を実行)では正常に実行されますが、SBCから再起動した後は応答しません。

私の考えでは、基本的な転送速度(ノートブックでは115200、SBCでは9600)に関連しているようです。次のコマンドを使用してSBCでこれを変更すると、screen私のコードはセンサーと通信できます。

screen /dev/ttyACM0 115200

(再起動後)コマンドを使用して変更しても、sttyまだ会話できません。

stty -F /dev/ttyACM0 115200

どちらの場合も、ボーレートが正しく設定されているようです。

setserial /dev/ttyACM0 -av

/dev/ttyACM0, Line 0, UART: unknown, Port: 0x0000, IRQ: 0
    Baud_base: 115200, close_delay: 12, divisor: 0
    closing_wait: none
    Flags: spd_normal low_latency

Betaflight設定ユーティリティ(Chromeアプリ)を使用すると、デバイスの電源を入れて通信できます。その後、私のコードも動作します。デフォルトのボーレートは115200ですが、たとえば9600に変更すると、まだ機能します。

sttyまた、別のポート設定を取得するコマンドを実行し、設定ユーティリティでセンサーを開いた後とまったく同じにしようとしました。

stty -F /dev/ttyACM0 -a

speed 115200 baud; rows 0; columns 0; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S;
susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; discard = ^O; min = 1; time = 0;
-parenb -parodd -cmspar cs8 hupcl -cstopb cread clocal -crtscts
-ignbrk -brkint ignpar parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany -imaxbel -iutf8
-opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
-isig -icanon iexten -echo -echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke -flusho -extproc

screenただし、設定が正確に一致していても、設定プログラムを実行するまで、私のコードはSBCでまだ実行されません。センサーはノートパソコンですぐに動作するため、センサーのさまざまな状態を排除できます。screenおよび設定ユーティリティを使用して変更できますが、およびを使用してsetserial変更できない他の魔法の設定はありますかstty

関連情報