シリアルポートを介して小さなファイルを送信する必要があります(実際には/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
答え2
sx
シリアルポート自体と通信せず、標準出力で通信します。役に立つタスクを実行するには、出力をリダイレクトする必要があります。
cu
個人的には、シリアル接続を確立し、* MODEMを使用してデータの受信を開始するためにリモート側で必要なすべてを実行し、cu
エスケープコードを使用してsx
ローカルで実行するのが最も簡単だと思います。エスケープシーケンスとして~$sx
(次に渡すオプション)を使用してsx
これを実行できます。
ただし、cu
行の先頭のエスケープシーケンスのみを認識していることに注意してください。
編集する:「Line in use」メッセージは、他のデバイスがシリアルポートを使用していることを示します。fuser /dev/ttyUSB0
それが何であるかを調べるために走って殺します。または、USB-Serial ConverterをUSBポートから取り外して再接続すると、シリアルポートを占有しているすべてが確実に終了します。その後、ラインcu
は正しく機能します。
それでも問題が解決しない場合は、古いロックファイルがある可能性があります/var/lock
。ただし、kill -9
以前のツールを使用しないと、これが発生する可能性はありません。
答え3
sx
ボーレートなどを設定していません。
あなたはこのようなことをしますstty
。送信ファイルにXONまたはXOFFバイトがある場合は、xmodemに対してxon / xoffを無効にすることもできます-ixon
。
たとえば、115200、n、8、1の場合は、次のようにします。
stty -F /dev/ttyUSB0 115200 cs8 -parenb -cstopb -ixon
man stty
詳細は参照してください。
答え4
似たようなことはできませんか?
$ picocom -b 115000 /dev/ttyUSB0
// 2nd term
$ cat file > /dev/ttyUSB0