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

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

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

$ screen /dev/ttyUSB0 115200

有时我需要使用或xmodem协议将本地文件发送到设备kermit。在 Windows 上,我使用 TeraTerm,它有相应的菜单项。如何在 GNU screen 中实现这一点?

答案1

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

在Debian中:

apt-get 安装屏幕 lrzsz

屏幕 /dev/ttyUSB0 115200

然后按Ctrl-A:键入:

执行!! sx yourbinary.bin

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

答案2

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

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

答案3

我需要使用 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

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

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

答案4

引用 AltairClone.com 在 UNIX/LINUX 下使用“screen”作为终端模拟器https://altairclone.com/downloads/Using%20SCREEN%20as%20terminal%20emulator.pdf:

在UNIX/LINUX下使用“screen”作为终端模拟器

要启动会话,请键入“screen”,后跟串行设备名称和波特率:

Unix prompt> screen /dev/ttyUSB0 9600

要访问屏幕命令,请键入 ctrl-a,然后键入命令字符。要查看命令列表,请键入 ctrl-a ? (ctrl-a 之后没有空格,ctrl 不保留?)。

要退出当前屏幕,请键入 ctrl-a k

要退出所有屏幕(如果错误启动了多个屏幕),请键入 ctrl-a
某些版本的屏幕可能需要 ctrl-a ctrl-\


要使用 XMODEM 发送文件,请键入 ctrl-a :(冒号是命令字符),然后在提示符下键入:

exec !! sx [-a] filename

(使用 –a 将单个换行符转换为 CR/LF 对。)

要使用 XMODEM 接收文件,请键入 ctrl-a :(冒号是命令字符),然后在提示符处键入:

exec !! rx [-a] filename

(注意:第一个 ! 告诉 sx/rx 通过屏幕的输入连接获取 stdin。第二个 ! 告诉 sx/rx 通过屏幕的输出连接路由 stdout。)

要在 XMODEM 传输之前更改波特率,请键入 ctrl-a :(冒号是命令字符),然后在提示符下键入:

exec !! stty new_baud_rate

或者,通过键入 ctrl-a k 退出屏幕,然后以新的波特率重新启动屏幕(例如):

Unix prompt> screen /dev/ttyUSB0 new_baud_rate

要简单地发送 ASCII 或二进制文件(即不使用 XMODEM),请键入 ctrl-a :(冒号是命令字符),然后在提示符处键入:

exec !! cat filename

相关内容