XMODEMプロトコルを使用してシリアルポートを介してファイルを送信する

XMODEMプロトコルを使用してシリアルポートを介してファイルを送信する

シリアルポートを介して小さなファイルを送信する必要があります(実際には/dev/ttyUSB0ポートにUSBシリアルコンバータが接続されています)。これはスクリプト可能でなければなりません。つまり、非対話型でなければなりません。

私が試したことは次のとおりです。

  • minicom- うまく動作しますが、インタラクティブです。--script=SCRIPTオプションが有望に見えますが、スクリプトの方法がわかりません。
  • sx- 非対話型ですが停止します。それはおそらく転送速度とバイトフォーマット(ストップビット、パリティ、データビット)を指定しなかったからです。

私のオプションは何ですか?


編集1:stty+sx

それでも幸運ではなく、minicomは38400 8N1ファイルを正しく送信しました。私が何をしているのか

sudo stty -F /dev/ttyUSB0 38400 cs8 -parenb -cstopb -ixoff
sx ~/test_signals/ones.bin -vvvvvvvvvvvv

sxちょうど凍った。出力は次のとおりです。

vorac@laptop:~/projects/megaboot$ sx ~/test_signals/ones.bin -vvvvvvvvvvvv
sx 0.12.21rc

mode:1
Sending /home/vorac/test_signals/ones.bin, 7 blocks: Give your local XMODEM receive command now.
wctx:file length=1000
                     Calling read: alarm=60  Readnum=128 

そしてちょうどそこにいる。受信者は、2バイトのcrc(「C」転送としてマークされている)の代わりに、短い1バイトのチェックサム方法(ファイルの先頭にNACK転送としてマークされています)を使用します。たぶんこれはサポートされていませんかcx


編集2:cu++sttysx

cuに関する広範な文書を読み取らないように、次のコマンドをコピーしました。この記事。まだ運がありません。

vorac@laptop:~$ sudo cu -l /dev/ttyUSB0 -s 38400
cu: open (/dev/ttyUSB0): Permission denied
cu: /dev/ttyUSB0: Line in use
vorac@laptop:~$ groups vorac
vorac : vorac adm dialout cdrom sudo dip plugdev lpadmin sambashare wireshark

ベストアンサー1

xmodem変換はここで行われます。入力/出力リダイレクト後(例参照)Wouter Verhelstが提案したように、経験に基づいて追加してください。幸いなことに、Linuxで2つのコマンドを含むbinファームウェアを受け取りました。

$ sudo stty -F /dev/ttyUSB1 9600 cs8 -parenb -cstopb -ixoff
$ sudo stty -F /dev/ttyUSB1
speed 9600 baud; line = 0;
-brkint -imaxbel

$ sx fw.bin < /dev/ttyUSB1 > /dev/ttyUSB1

おすすめ記事