web-dev-qa-db-fra.com

Envoyer un fichier par Xmodem ou Kermit Protocol avec GNU écran

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 au périphérique à l'aide du protocole xmodem ou Kermit protocole. Sous Windows, j'utilise Teraterm qui a un élément de menu correspondant. Comment puis-je atteindre cet objectif GNU écran?

23
user14284

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

À Debian:

 APT-GET Écran d'installation LRZSZ [.____] 
 Écran/Dev/TTYUSB0 115200 [.____]

Puis appuyez Ctrl-A suivie par : et tapez:

[.____] EXEC !! sx yourbinary.bin 

Cela enverra le fichier à TTYUSB0 sur le protocole XMODEM

26
user32704

J'étais dans le besoin d'automatiser le transfert de série d'un fichier .bin à un Xbee avec xmodem, donc j'ai 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. Donc, vous êtes 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
4
Nikos Sakellariou

Si vous essayez de faire cela via l'écran sur OSX, vous pouvez suivre la procédure prévue par User32704 avec quelques petites modifications. Vous devrez d'abord construire LRZSZ à partir de la source, qui peut être trouvé ici:

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

Puis, au lieu de exec !! sx yourbinary.bin Tu devrais utiliser:

exec !! lsz -X yourbinary.bin
2
minn3h