Надіслати файл за допомогою xmodem або kermit-протоколу на екрані GNU


23

Я працюю з пристроєм RS-232 через GNU screen.

$ screen /dev/ttyUSB0 115200

У якийсь момент мені потрібно надіслати локальний файл на пристрій, використовуючи xmodemабо kermitпротокол. У Windows я використовую TeraTerm, який має відповідний пункт меню. Як я можу досягти цього на екрані GNU?

Відповіді:


26

найкращий спосіб передати файл через xmodem - це використовувати sx. У debian ця програма є частиною пакету 'lrzsz'.

У debian:

apt-get install lrzsz

екран / dev / ttyUSB0 115200

Потім натисніть, Ctrl-Aа потім :введіть:

exec !! sx yourbinary.bin

Це надішле файл ttyUSB0 через протокол xmodem


Чи може ця операція виконуватися неінтерактивно, з screen cuбудь-яким іншим пакетом?
Vorac

3
@Vorac ви завжди можете зробитиsx binary.bin | socat FILE:/dev/ttyUSB0,b115200,raw -
GnP

2
Як дати команду отриматиGive your local XMODEM receive command now
AQU

Де зберігається цей пакет? Я не можу його знайти.
not2qubit

8

Якщо ви хочете використовувати zmodem, вам потрібно встановити zmodemпараметр pass, якщо ваш екранний сеанс вже запущений, натисніть CTRL+A :та просто введіть zmodem pass. Для надсилання даних просто використовуйте szкоманду з lrzszпакета.

Якщо ви хочете отримувати дані через екран, вам слід встановити значення catch.


zmodem catch- це варіант, який я шукав віками! Гарна загадка, мініком.
ijustlovemath

4

Мені потрібно було автоматизувати послідовну передачу .bin-файлу в xbee з xmodem, тому я використав цей неохайний баш-код:

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

Третій рядок надсилає команду в іншу сторону (xbee), щоб почати прослуховування для передачі файлів. Тож вам, мабуть, добре просто:

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

2

Якщо ви намагаєтеся зробити це через екран на OSX, ви можете дотримуватися процедури, викладеної користувачем32704, з деякими невеликими модифікаціями. Вам потрібно спочатку створити lrzsz з джерела, який можна знайти тут:

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

Тоді замість exec !! sx yourbinary.binвас слід використовувати:

exec !! lsz -X yourbinary.bin

3
brew install lrzsz
Daniele Brugnara

sudo port install lrzsz
miken32
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.