Datei per XModem oder Kermit-Protokoll mit GNU-Bildschirm senden


23

Ich arbeite mit einem RS-232-Gerät über GNU screen.

$ screen /dev/ttyUSB0 115200

Irgendwann muss ich eine lokale Datei mit dem Protokoll xmodemoder an das Gerät senden kermit. Unter Windows verwende ich TeraTerm mit einem entsprechenden Menüpunkt. Wie kann ich das auf dem GNU-Bildschirm erreichen?

Antworten:


25

Der beste Weg, eine Datei über xmodem zu übertragen, ist die Verwendung von sx. In Debian ist diese Anwendung Teil des 'lrzsz'-Pakets.

In debian:

apt-get install screen lrzsz

screen / dev / ttyUSB0 115200

Drücken Sie dann Ctrl-Agefolgt von :und geben Sie Folgendes ein:

exec !! sx yourbinary.bin

Dadurch wird die Datei über das xmodem-Protokoll an ttyUSB0 gesendet


Kann diese Operation nicht interaktiv ausgeführt werden, entweder mit screen cuoder mit einem anderen Paket?
Vorac

3
@Vorac können Sie immer tunsx binary.bin | socat FILE:/dev/ttyUSB0,b115200,raw -
GnP

2
So geben Sie den Befehl zum EmpfangenGive your local XMODEM receive command now
AQU

Wo wird das Paket aufbewahrt? Ich kann es nicht finden.
not2qubit

8

Wenn Sie Zmodem verwenden möchten, müssen Sie die zmodemOption auf einstellen pass. Wenn Ihre Bildschirmsitzung bereits ausgeführt wird, drücken Sie CTRL+A :und geben Sie einfach ein zmodem pass. Verwenden Sie zum Senden der Daten einfach den szBefehl aus dem lrzszPaket.

Wenn Sie Daten über den Bildschirm empfangen möchten, müssen Sie den Wert auf einstellen catch.


zmodem catchist eine Option, nach der ich schon seit Ewigkeiten gesucht habe! Gute Befreiung, Minicom.
ijustlovemath

4

Ich musste die serielle Übertragung einer .bin-Datei auf ein xbee mit xmodem automatisieren, also habe ich diesen schlampigen Bash-Code verwendet:

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

Die dritte Zeile sendet einen Befehl an die andere Seite (xbee), um auf eine Dateiübertragung zu warten. Sie beherrschen also wahrscheinlich nur:

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

2

Wenn Sie versuchen, dies unter OSX über den Bildschirm zu tun, können Sie den Anweisungen von user32704 mit einigen kleinen Änderungen folgen. Sie müssen zuerst lrzsz aus dem Quellcode erstellen, der hier zu finden ist:

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

Dann sollten Sie stattdessen exec !! sx yourbinary.binverwenden:

exec !! lsz -X yourbinary.bin

3
Brew Install Lrzsz
Daniele Brugnara

sudo port install lrzsz
miken32
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.