是否可以将文件内容发送到GNU屏幕会话?

时间:2013-11-25 19:22:09

标签: serial-port communication gnu-screen

我通过串口连接到开发板,如此......

$ screen /dev/ttyUSB0 9600

我现在已连接到启动加载程序,它要求我以srec格式发送文件。我有文件,但如何通过屏幕会话发送?

2 个答案:

答案 0 :(得分:14)

希望你自己已经解决了这个问题,但我会回答以防其他人有同样的问题。

GNU屏幕有一个名为readreg的命令,您可以使用该命令将文件读入寄存器。在寄存器填充数据后,您可以使用paste命令粘贴该数据。

屏幕内

在屏幕内,按Ctr + a,然后按:执行命令。然后你只需写下并输入:

readreg p /path/to/thefile

执行完命令后,您应该发送一条消息Slurped X character into buffer

然后您可以再次按Ctr + a然后再按:将数据粘贴到该缓冲区中,然后输入并按Enter:

paste p

注意:p是寄存器的名称

你已经完成了。

外屏

您还可以使用-X选项在屏幕会话外执行命令。如果您有一个名为“ucontroller”的屏幕会话,它连接到您的串行端口,您可以通过执行以下命令发送命令:

screen -S ucontroller -X readreg p /path/to/thefile
screen -S ucontroller -X paste p

更多资源

我提供的信息直接来自screen(1)的手册页,这是手册页的相关部分:

  

readreg [-e encoding] [register [filename]]

     

两件事中的一件,取决于参数的数量:零   或者一个参数,它将粘贴缓冲区内容复制到   注册指定或在提示符下输入。

     

有两个参数,它将指定文件的内容读入   注册,就像readbuf将屏幕交换文件读入   粘贴缓冲区。您可以通过-e告诉屏幕文件的编码   选项。以下示例将粘贴系统的密码文件   进入屏幕窗口(使用寄存器p,副本仍然存在):

     

C-a:readreg p / etc / passwd

     

C-a:粘贴p

答案 1 :(得分:0)

引用 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 通过 screen 的输入连接获取 stdin。第二个 ! 告诉 sx/rx 通过屏幕的输出连接路由标准输出。)

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

exec !! stty new_baud_rate

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

Unix prompt> screen /dev/ttyUSB0 new_baud_rate

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

exec !! cat filename