web-dev-qa-db-ja.com

GNU screenを使用してxmodemまたはKermitプロトコルでファイルを送信する

GNU screenを介してRS-232デバイスで作業します。

$ screen /dev/ttyUSB0 115200

ある時点で、xmodemまたはKermitプロトコルを使用してローカルファイルをデバイスに送信する必要があります。 Windowsでは、対応するメニュー項目があるTeraTermを使用します。 GNU画面でこれをどのように達成できますか?

23
user14284

xmodemを介してファイルを渡す最良の方法は、sxを使用することです。 debianでは、このアプリケーションは「lrzsz」パッケージの一部です。

Debianの場合:

 apt-get install screen lrzsz 
 
 screen/dev/ttyUSB0 115200 

次に押す Ctrl-A に続く : そしてタイプ:

 exec !! sx yourbinary.bin 

これは、xmodemプロトコルを介してttyUSB0にファイルを送信します

26
user32704

Zmodemを使用する場合は、 zmodem オプションをpassに設定する必要があります。スクリーンセッションがすでに実行されている場合は、 CTRL+A :zmodem pass。データを送信するには、szパッケージのlrzszコマンドを使用します。

画面でデータを受信したい場合は、値をcatchに設定する必要があります。

8
Ulrich Dangel

Xmodemを使用して.binファイルからxbeeへのシリアル転送を自動化する必要があったため、次のずさんなbashコードを使用しました。

echo "Starting connection..."
screen -d -m -S uart_con /dev/ttyO1 115200
sleep 1
screen -S uart_con -X stuff 'F'$(echo -ne '\015')
sleep 1
screen -S uart_con -X exec \!\! sz -X /home/file_directory/example.abs.bin
echo "now transfering... "
sleep 20
pkill screen

3行目は、ファイル転送の待機を開始するコマンドを反対側(xbee)に送信します。だからあなたはおそらく次のことでうまくいくでしょう:

screen -d -m -S uart_con /dev/ttyUSB0 115200
screen -S uart_con -X exec \!\! sz -X /path_to_file/example.file
4

OSXの画面でこれを実行しようとしている場合は、いくつかの小さな変更を加えて、user32704によって示された手順に従うことができます。まず、ソースからlrzszをビルドする必要があります。ソースは次の場所にあります。

https://ohse.de/uwe/releases/lrzsz-0.12.20.tar.gz

次に、exec !! sx yourbinary.binの代わりに次を使用する必要があります。

exec !! lsz -X yourbinary.bin
2
minn3h