我通过 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
”