Wyślij plik za pomocą protokołu xmodem lub kermit z ekranem GNU

23

Pracuję z urządzeniem RS-232 przez GNU screen.

$ screen /dev/ttyUSB0 115200

W pewnym momencie muszę wysłać plik lokalny do urządzenia za pomocą protokołu xmodemlub kermit. W systemie Windows używam TeraTerm, który ma odpowiedni element menu. Jak mogę to osiągnąć na ekranie GNU?

George M.
źródło

Odpowiedzi:

26

najlepszym sposobem na przekazanie pliku przez xmodem jest użycie sx. W debianie ta aplikacja jest częścią pakietu „lrzsz”.

W debian:

apt-get install screen lrzsz

screen / dev / ttyUSB0 115200

Następnie naciśnij, Ctrl-Aa następnie :i wpisz:

exec !! sx yourbinary.bin

Spowoduje to wysłanie pliku do ttyUSB0 przez protokół xmodem

użytkownik32704
źródło
Czy tę operację można wykonać nieinteraktywnie, z screen cupakietem lub dowolnym innym pakietem?
Vorac,
3
@Vorac zawsze możesz to zrobićsx binary.bin | socat FILE:/dev/ttyUSB0,b115200,raw -
GnP
2
Jak przekazać polecenie odbioruGive your local XMODEM receive command now
AQU
Gdzie jest utrzymywany ten pakiet? Nie mogę tego znaleźć
not2qubit
8

Jeśli chcesz użyć zmodem, musisz ustawić zmodemopcję pass, jeśli sesja ekranowa jest już uruchomiona, naciśnij CTRL+A :i po prostu wprowadź zmodem pass. Aby wysłać dane, po prostu użyj szpolecenia z lrzszpakietu.

Jeśli chcesz odbierać dane przez ekran, musisz ustawić wartość na catch.

Ulrich Dangel
źródło
zmodem catchto opcja, której szukałem od wieków! Dobra gra, minicom.
ijustlovemath 11.04.17
4

Potrzebowałem zautomatyzować szeregowe przesyłanie pliku .bin do xbee za pomocą xmodem, więc użyłem tego niechlujnego kodu bash:

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

Trzeci wiersz wysyła polecenie na drugą stronę (xbee), aby rozpocząć nasłuchiwanie transferu plików. Więc prawdopodobnie jesteś dobry z:

screen -d -m -S uart_con /dev/ttyUSB0 115200
screen -S uart_con -X exec \!\! sz -X /path_to_file/example.file
Nikos Sakellariou
źródło
2

Jeśli próbujesz to zrobić za pomocą ekranu w OSX, możesz wykonać procedurę opisaną przez user32704 z niewielkimi modyfikacjami. Najpierw musisz zbudować Lrzsza ze źródła, które znajdziesz tutaj:

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

Zamiast tego exec !! sx yourbinary.binpowinieneś użyć:

exec !! lsz -X yourbinary.bin
minn3h
źródło
3
brew install lrzsz
Daniele Brugnara
sudo port install lrzsz
miken32