使用 GNU 屏幕通过 xmodem 或 kermit 协议发送文件

23 gnu-screen serial-port kermit

我通过 GNU 使用 RS-232 设备screen

$ screen /dev/ttyUSB0 115200
Run Code Online (Sandbox Code Playgroud)

在某些时候,我需要使用xmodemkermit协议将本地文件发送到设备。在 Windows 上,我使用具有相应菜单项的 TeraTerm。我怎样才能在 GNU 屏幕中实现这一点?

小智 29

通过 xmodem 传递文件的最佳方法是使用sx. 在 debian 中,这个应用程序是 'lrzsz' 包的一部分。

在 debian 中:

apt-get 安装屏幕 lrzsz

屏幕 /dev/ttyUSB0 115200

然后按Ctrl-A后跟:并键入:

执行!!sx yourbinary.bin

这将通过 xmodem 协议将文件发送到 ttyUSB0

  • @Vorac 你总是可以做`sx binary.bin | socat 文件:/dev/ttyUSB0,b115200,raw -` (3认同)
  • 如何给出接收命令`现在给出你的本地 XMODEM 接收命令` (2认同)

Ulr*_*gel 8

如果您想使用 zmodem,您必须将zmodem选项设置为pass,如果您的屏幕会话已经在运行,请按CTRL+A :并输入zmodem pass。要发送数据,只需使用包中的sz命令lrzsz

如果您想通过屏幕接收数据,您必须将该值设置为catch


小智 5

我需要使用 xmodem 自动将 .bin 文件串行传输到 xbee,所以我使用了这个草率的 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
Run Code Online (Sandbox Code Playgroud)

第三行向另一端(xbee)发送命令以开始侦听文件传输。所以你可能只擅长:

screen -d -m -S uart_con /dev/ttyUSB0 115200
screen -S uart_con -X exec \!\! sz -X /path_to_file/example.file
Run Code Online (Sandbox Code Playgroud)