Gửi tệp bằng giao thức xmodem hoặc kermit với màn hình GNU


23

Tôi làm việc với một thiết bị RS-232 thông qua GNU screen.

$ screen /dev/ttyUSB0 115200

Tại một số điểm tôi cần gửi một tệp cục bộ đến thiết bị bằng cách sử dụng xmodemhoặc kermitgiao thức. Trên Windows tôi sử dụng TeraTerm có một mục menu tương ứng. Làm thế nào tôi có thể đạt được điều này trong màn hình GNU?

Câu trả lời:


25

cách tốt nhất để truyền tệp qua xmodem là sử dụng sx. Trong debian, ứng dụng này là một phần của gói 'lrzsz'.

Trong debian:

màn hình cài đặt apt-get lrzsz

màn hình / dev / ttyUSB0 115200

Sau đó nhấn Ctrl-Atheo sau :và gõ:

thực hiện !! sx yourbinary.bin

Điều này sẽ gửi tệp tới ttyUSB0 qua giao thức xmodem


Thao tác này có thể được thực hiện không tương tác, với screen cuhoặc bất kỳ gói nào khác không?
Vorac

3
@Vorac bạn luôn có thể làmsx binary.bin | socat FILE:/dev/ttyUSB0,b115200,raw -
GNP

2
Cách nhận lệnhGive your local XMODEM receive command now
AQU

Gói đó được duy trì ở đâu? Tôi không thể tìm thấy nó.
not2qubit

8

Nếu bạn muốn sử dụng zmodem, bạn phải đặt zmodemtùy chọn thành pass, nếu phiên màn hình của bạn đang chạy, nhấn CTRL+A :và chỉ cần nhập zmodem pass. Để gửi dữ liệu chỉ cần sử dụng szlệnh từ lrzszgói.

Nếu bạn muốn nhận dữ liệu qua màn hình, bạn phải đặt giá trị thành catch.


zmodem catchlà một lựa chọn tôi đã tìm kiếm từ lâu! Câu đố hay, minicom.
ijustlovemath

4

Tôi đã cần tự động chuyển tập tin nối tiếp của tệp .bin sang xbee với xmodem vì vậy tôi đã sử dụng mã bash cẩu thả này:

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

Dòng thứ ba gửi lệnh đến phía bên kia (xbee) để bắt đầu nghe chuyển tập tin. Vì vậy, bạn có thể là tốt với chỉ:

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

2

Nếu bạn đang cố gắng thực hiện điều này thông qua màn hình trên OSX, bạn có thể làm theo quy trình do user32704 đưa ra với một số sửa đổi nhỏ. Trước tiên, bạn sẽ cần xây dựng lrzsz từ nguồn, có thể tìm thấy ở đây:

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

Sau đó, thay vì exec !! sx yourbinary.binbạn nên sử dụng:

exec !! lsz -X yourbinary.bin

3
bia cài đặt lrzsz
Daniele Brugnara

sudo port install lrzsz
miken32
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.