シリアルポートを介して小さなファイルを送信する必要があります(実際には/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
++stty
sx
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