Invia file tramite protocollo xmodem o kermit con schermo GNU


23

Lavoro con un dispositivo RS-232 tramite GNU screen.

$ screen /dev/ttyUSB0 115200

Ad un certo punto devo inviare un file locale al dispositivo usando il protocollo xmodemo kermit. Su Windows uso TeraTerm che ha una voce di menu corrispondente. Come posso raggiungere questo obiettivo nella schermata GNU?

Risposte:


25

il modo migliore per passare un file tramite xmodem è usare sx. In debian questa applicazione fa parte del pacchetto 'lrzsz'.

In debian:

schermata di installazione apt-get lrzsz

screen / dev / ttyUSB0 115200

Quindi premere Ctrl-Aseguito da :e digitare:

exec !! sx yourbinary.bin

Questo invierà il file a ttyUSB0 tramite il protocollo xmodem


Questa operazione può essere eseguita in modo non interattivo, con screen cuo con qualsiasi altro pacchetto?
Vorac,

3
@Vorac puoi sempre faresx binary.bin | socat FILE:/dev/ttyUSB0,b115200,raw -
GnP

2
Come dare il comando di ricezioneGive your local XMODEM receive command now
AQU

Dove viene mantenuto quel pacchetto? Non riesco a trovarlo
not2qubit

8

Se si desidera utilizzare zmodem, è necessario impostare l' zmodemopzione su pass, se la sessione dello schermo è già in esecuzione, premere CTRL+A :e basta accedere zmodem pass. Per inviare i dati basta usare il szcomando dal lrzszpacchetto.

Se si desidera ricevere dati tramite schermo, è necessario impostare il valore su catch.


zmodem catchè un'opzione che cerco da anni! Buon viaggio, minicom.
ijustlovemath,

4

Avevo bisogno di automatizzare il trasferimento seriale di un file .bin su un xbee con xmodem, quindi ho usato questo codice bash sciatto:

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

La terza riga invia un comando all'altro lato (xbee) per iniziare l'ascolto di un trasferimento di file. Quindi probabilmente sei bravo solo con:

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

2

Se si sta tentando di farlo tramite la schermata su OSX, è possibile seguire la procedura stabilita dall'utente32704 con alcune piccole modifiche. Dovrai prima compilare lrzsz dal sorgente, che puoi trovare qui:

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

Quindi, al posto exec !! sx yourbinary.bintuo dovresti usare:

exec !! lsz -X yourbinary.bin

3
brew install lrzsz
Daniele Brugnara

sudo port install lrzsz
miken32,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.