.BIN ファイルを XModem 転送にパイプ

.BIN ファイルを XModem 転送にパイプ

.binファームウェアをアップグレードするには、モデムに転送してファイルを送信する必要がありますXModem

モデムがローカルコンピュータに接続されている場合、コマンドは次のようになります。

sz -X -k -b -vvv - file_to_transfer.BIN > /dev/ttyUSB0 < /dev/ttyUSB0 

ファイルを受け取るためにモジュール側で必要なコマンドも作成しました。

問題は、内部的にこれらのモデムがあるリモートホストでこれを行う必要があることです。ホストコンピュータにファイルを保存するメモリが不足しているため、ファイルをデバイスに転送できません。

最後のアイデアは、ファイルをszコマンドにパイプすることです。次のコマンドを使用してローカルで試しました。

cat file_to_transfer.BIN | sz -X -k -b -vvv - > /dev/ttyUSB0 < /dev/ttyUSB0

このコマンドは、次のエラーメッセージを表示します。

Sending s2382.lsz, 0 blocks: Give your local XMODEM receive command now.
Xmodem sectors/kbytes sent:   0/ 0kRetry 0: Timeout on sector ACK

Retry 0: Timeout on sector ACK

Retry 0: Timeout on sector ACK

Retry 0: Timeout on sector ACK

Retry 0: Timeout on sector ACK

Retry 0: Timeout on sector ACK

Retry 0: Timeout on sector ACK

Retry 0: Timeout on sector ACK

Retry 0: Timeout on sector ACK

Retry 0: Timeout on sector ACK

Retry 0: Timeout on sector ACK

Retry 0: Retry Count Exceeded

なぜこれがうまくいかないのか、この問題を解決するためのより良いアイデアがあるのか​​を説明してください。

答え1

少し遅れているようですが、同様の問題が発生しました。

fifo(名前付きパイプ)を使用します。バラよりhttps://linux.die.net/man/3/mkfifo

# Create a temporary fifo
mkfifo /tmp/sz_fifo

# Write the file to the fifo and place in the background
# (Replace "cat" with some other command to stream over the network)
cat file_to_transfer.BIN > /tmp/sz_fifo &

# sz will read the file from the fifo
sz -X -k -b -vvv - /tmp/sz_fifo > /dev/ttyUSB0 < /dev/ttyUSB0

# Clean up
rm /tmp/sz_fifo

関連情報