我在 2 个桌面系统中下载了 Gtkterm,每个系统都有一个 RS-232 串行端口。我试图通过其中一个可用的串行端口在 2 个系统之间传输一个简单的 .txt 文件。2 个系统使用零调制解调器 RS232 电缆连接到各自的 RS-232 端口。
我选择了合适的 ttyS# 端口,并在一台计算机上发送文件。但是,我如何在另一台计算机上读取这个发送的文件?
答案1
如果您有一个从一个 ubuntu 工作站(本地)到另一个 ubuntu 机器(远程)的串行登录,则可以通过 gtkterm 发送原始文件,如下所示:
首先,检查文件的 md5sum,这样我们就可以确信我们已成功传输它。如果您要发送的文件是二进制文件(包含非 ASCII 文本),那么我建议您首先对数据进行 base64 编码。例如
[当地的]:
user@local:~$ md5sum my_file.bin
9426054eb507e98605d7a6b94189168b my_file.bin
user@local:~$ base64 my_file.bin > my_file.bin.base64
user@local:~$ gtkterm --port /dev/ttyUSB1 --speed 115200 &
[偏僻的]:
user@remote:~$ cat > my_file.bin.base64
现在使用 gtkterm 菜单“发送原始文件”并选择您的文件。您将看到文件的每个字节都回显在 gtkterm 窗口上。文件发送完成后,按下窗口Ctrl+D
中的gtkterm
以将 发送到EOF
。cat
您将看到一个新的终端提示弹出。然后使用 base64 解码文件。最后,检查数据的完整性是个好主意。
[偏僻的]:
user@remote:~$ base64 -d my_file.bin.base64 > my_file.bin
user@remote:~$ md5sum my_file.bin
9426054eb507e98605d7a6b94189168b my_file.bin
笔记 请注意,文件传输将按照串行连接的速率进行。您无法通过这种方式发送非常大的文件。此外(尤其是如果串行连接不支持流量控制),总是有可能丢失一些字节。
*奖金:
通过 gtkterm启动cat > my_file.bin.base64
远程计算机后,您可以绕过 gtkterm 进行实际文件传输。例如,您可以使用普通的 ole cat:
[当地的]:
user@local:~$ cat my_file.bin > /dev/ttyUSB1
或者如果你想要一个漂亮的进度条,可以pv
尝试一下:
[当地的]:
user@local:~$ pv my_file.bin | cat > /dev/ttyUSB1
该技术可与其他串行终端客户端配合使用,包括基于终端的客户端(即creen
,minicom
等)。
答案2
这个答案最初由 OP 发布为一条评论。
找到解决方案,只需在接收文件的另一个系统中打开 GtkTerm,并设置正确的 ttyS#,我们就会看到控制台中显示的 txt。
答案3
以下是你需要做的:
如果文件的名称是 blahblah.txt
在发送机器上:
sudo cat blahblah.txt > /dev/ttyS0
在接收机器上:
sudo cat /dev/ttyS0 > blahblah.txt
不要忘记 sudo,因为有些系统可能需要它。