web-dev-qa-db-ja.com

Kermitおよびlrzszを使用せずにシリアル経由でファイルを取得する

カスタムボードに組み込みLinuxがあり、そのシリアルポートを介してファイルを送受信したいと思います。

このデバイスと通信する唯一の方法はシリアル経由であり、デバイスはこのシリアルポートでコンソールを提供します。

このボードにはKermitもありませんbusybox rxまたはlrzsz

-リモートにファイルを送信しています

this thread に従って、ボードにファイルを送信できました。

Host side                              Remote side

cat file | base64 > file_b64
                                       cat > file_b64
minicom's ctrlA-S => send 'file_b64'
                                       cat file_b64 | base64 --decode > file

-リモートからファイルを取得しています

次に、リモートシステムからファイルを取得します。

Minicomにはファイルを受信するためのツールがありますが、シリアルポートのコンソールはminicomを使用してリモート側でコマンドを発行しているだけなので、その方法を見つけることができません。

ホスト側でKermitを使用してみましたが、リモート側にもKermitが必要なようです。


編集:

また、送信方法を逆にしようとしましたが、ホスト側のシリアルポートから何も受信しないため、成功しませんでした。

Host side                              Remote side

                                       cat file | base64 > file_b64
                                       (sleep 10; cat file_b64 > /dev/ttyS0) &
                                       minicom's ctrlA-X => exit minicom
cat /dev/ttyUSB0 > file_b64

Minicomの受信ツールを使用できないため、xmodemymodemzmodemおよびKermit転送のみがサポートされ、ASCIIはサポートされません。


コンソールにコマンドを入力せずにリモートからファイルを取得する方法はありますか?

5
Arkaik

最後に、私が受信側で間違ったコマンドを発行していることがわかりました。

受信コマンドは:cat < /dev/ttyUSB0 > file_b64

概要

リモートから受信するには:

          Host side                |             Remote side
                                   |
                                   |    #Encode to base64
                                   |    cat file | base64 > file_b64
                                   |
                                   |    #Send after timeout
                                   |    (sleep 10; cat file_b64 > /dev/ttyS0) &
                                   |
       #############################################################
       ### Exit minicom but keep configuration (ctrlA-Z, then Q) ###
       #############################################################
                                   |
#Receive file                      |
cat < /dev/ttyUSB0 > file_b64      |
                                   |
#Decode file                       |
cat file_b64 | base64 -di > file   |
4
Arkaik

上記の投稿を要約すると、次のようなものが見つかりました:

送信。

ターゲットで受信を開始します。

cat | base64 -d > filetotarget.bin

Ctrl-A + Qでminicomを終了し、ホストマシンで実行します。

cat filetotarget.bin | base64 > /dev/ttyUSB0

Minicomに戻り、Ctrl-Dを押して受信プロセスを終了します。

受け取る。

ターゲットで遅延送信を開始します。

sleep 10 ; cat filefromtarget.bin | base64

Ctrl-A + Qでminicomを終了します。次に、ホストで受信を開始します。

cat < /dev/ttyUSB0 | base64 -di > filefromtarget.bin
3
Serg Stetsuk