Canalize um arquivo .BIN para a transferência do XModem

2

Eu preciso enviar um arquivo .bin para um modem via XModem transfer para atualização de firmware.

Se o modem estiver conectado a um computador local, o comando será o seguinte:

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

Eu também fiz os comandos necessários no lado do módulo para receber o arquivo.

O problema é que eu preciso fazer isso em um host remoto que tenha esses modems dentro deles. Não consigo transferir o arquivo para o dispositivo, porque o host não tem memória suficiente para armazenar o arquivo.

A ideia, no final, é canalizar o arquivo para o comando sz . Eu tentei isso localmente com o comando:

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

Este comando apresenta a seguinte mensagem de erro:

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

Alguém poderia explicar por que isso não está funcionando ou se há uma ideia melhor para resolver esse problema.

    
por Arvid Karlsson 29.07.2015 / 12:01

1 resposta

0

Um pouco tarde, suponho, mas acabei de encontrar um problema semelhante.

Use um fifo (pipe nomeado). Consulte o link

# 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
    
por 05.10.2016 / 20:02