Отправить файл по протоколу xmodem или kermit с экраном GNU

23

Я работаю с устройством RS-232 через GNU screen.

$ screen /dev/ttyUSB0 115200

В какой-то момент мне нужно отправить локальный файл на устройство, используя протокол xmodemили kermit. В Windows я использую TeraTerm, у которого есть соответствующий пункт меню. Как я могу добиться этого на экране GNU?

Джордж М
источник

Ответы:

25

лучший способ передать файл через xmodem - использовать sx. В Debian это приложение является частью пакета 'lrzsz'.

В Debian:

apt-get установить экран lrzsz

screen / dev / ttyUSB0 115200

Затем нажмите, Ctrl-Aа затем :введите:

Отлично !! sx yourbinary.bin

Это отправит файл на ttyUSB0 по протоколу xmodem

user32704
источник
Может ли эта операция выполняться не в интерактивном режиме с помощью 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, вы можете следовать процедуре, изложенной user32704, с некоторыми небольшими изменениями. Сначала вам нужно собрать lrzsz из исходного кода, который можно найти здесь:

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

Тогда вместо exec !! sx yourbinary.binвас следует использовать:

exec !! lsz -X yourbinary.bin
minn3h
источник
3
brew install lrzsz
Даниэле Бругнара
sudo port install lrzsz
miken32 20.09.16