Envoyer un fichier par protocole xmodem ou kermit avec écran GNU


23

Je travaille avec un périphérique RS-232 via GNU screen.

$ screen /dev/ttyUSB0 115200

À un moment donné, j'ai besoin d'envoyer un fichier local à l'appareil en utilisant le protocole xmodemou kermit. Sous Windows, j'utilise TeraTerm qui a un élément de menu correspondant. Comment puis-je y parvenir dans l'écran GNU?

Réponses:


26

la meilleure façon de passer un fichier via xmodem est d'utiliser sx. Dans debian, cette application fait partie du paquet 'lrzsz'.

Dans debian:

écran d'installation d'apt-get lrzsz

écran / dev / ttyUSB0 115200

Appuyez Ctrl-Aensuite sur :et tapez:

exec !! sx yourbinary.bin

Cela enverra le fichier à ttyUSB0 via le protocole xmodem


Cette opération peut-elle être exécutée de manière non interactive, avec screen cuou avec tout autre package?
Vorac

3
@Vorac vous pouvez toujours le fairesx binary.bin | socat FILE:/dev/ttyUSB0,b115200,raw -
GnP

2
Comment donner la commande de réceptionGive your local XMODEM receive command now
AQU

Où ce package est-il conservé? Je ne le trouve pas.
not2qubit

8

Si vous souhaitez utiliser zmodem, vous devez définir l' zmodemoption sur pass, si votre session d'écran est déjà en cours, appuyez sur CTRL+A :et entrez simplement zmodem pass. Pour envoyer les données, utilisez simplement la szcommande du lrzszpackage.

Si vous souhaitez recevoir des données via l'écran, vous devez définir la valeur sur catch.


zmodem catchest une option que je recherche depuis des lustres! Bon débarras, minicom.
ijustlovemath

4

J'avais besoin d'automatiser le transfert série d'un fichier .bin vers un xbee avec xmodem, j'ai donc utilisé ce code bash bâclé:

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 troisième ligne envoie une commande à l'autre côté (xbee) pour commencer à écouter un transfert de fichier. Vous êtes donc probablement bon avec juste:

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

2

Si vous essayez de le faire via l'écran sous OSX, vous pouvez suivre la procédure définie par user32704 avec quelques petites modifications. Vous devrez d'abord construire lrzsz à partir de la source, qui peut être trouvée ici:

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

Ensuite, au lieu de exec !! sx yourbinary.binvous, utilisez:

exec !! lsz -X yourbinary.bin

3
brew install lrzsz
Daniele Brugnara

sudo port install lrzsz
miken32
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.