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?
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
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
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