Kirim file dengan xmodem atau protokol kermit dengan layar GNU

23

Saya bekerja dengan perangkat RS-232 melalui GNU screen.

$ screen /dev/ttyUSB0 115200

Pada titik tertentu saya perlu mengirim file lokal ke perangkat menggunakan protokol xmodematau kermit. Pada Windows saya menggunakan TeraTerm yang memiliki item menu yang sesuai. Bagaimana saya bisa mencapai ini di layar GNU?

George M
sumber

Jawaban:

25

cara terbaik untuk melewatkan file melalui xmodem adalah menggunakan sx. Dalam debian aplikasi ini adalah bagian dari paket 'lrzsz'.

Dalam debian:

apt-get install layar lrzsz

layar / dev / ttyUSB0 115200

Kemudian tekan Ctrl-Adiikuti oleh :dan ketik:

exec !! sx yourbinary.bin

Ini akan mengirim file ke ttyUSB0 melalui protokol xmodem

pengguna32704
sumber
Bisakah operasi ini dijalankan secara non-interaktif, baik dengan screen cuatau paket lain?
Vorac
3
@Vorac selalu bisa Anda lakukansx binary.bin | socat FILE:/dev/ttyUSB0,b115200,raw -
GnP
2
Cara memberi perintah terimaGive your local XMODEM receive command now
AQU
Di mana paket itu dikelola? Saya tidak dapat menemukannya.
not2qubit
8

Jika Anda ingin menggunakan zmodem, Anda harus mengatur zmodemopsi pass, jika sesi layar Anda sudah berjalan, tekan CTRL+A :dan cukup masukkan zmodem pass. Untuk mengirim data cukup gunakan szperintah dari lrzszpaket.

Jika Anda ingin menerima data melalui layar Anda harus mengatur nilainya catch.

Ulrich Dangel
sumber
zmodem catchadalah pilihan yang sudah lama saya cari! Baguslah, minicom.
ijustlovemath
4

Saya perlu mengotomatiskan transfer serial file .bin ke xbee dengan xmodem jadi saya menggunakan kode bash yang ceroboh ini:

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

Baris ketiga mengirim perintah ke sisi lain (xbee) untuk mulai mendengarkan transfer file. Jadi Anda mungkin baik hanya dengan:

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

Jika Anda mencoba melakukan ini melalui layar pada OSX, Anda dapat mengikuti prosedur yang ditetapkan oleh user32704 dengan beberapa modifikasi kecil. Anda harus membuat lrzsz dari sumber terlebih dahulu, yang dapat ditemukan di sini:

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

Maka, alih-alih exec !! sx yourbinary.binAnda harus menggunakan:

exec !! lsz -X yourbinary.bin
minn3h
sumber
3
brew install lrzsz
Daniele Brugnara
sudo port install lrzsz
miken32