如何通过串行接收/读取使用 Gtkterm 发送的原始文件?

如何通过串行接收/读取使用 Gtkterm 发送的原始文件?

我在 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以将 发送到EOFcat您将看到一个新的终端提示弹出。然后使用 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

该技术可与其他串行终端客户端配合使用,包括基于终端的客户端(即creenminicom等)。

答案2

这个答案最初由 OP 发布为一条评论

找到解决方案,只需在接收文件的另一个系统中打开 GtkTerm,并设置正确的 ttyS#,我们就会看到控制台中显示的 txt。

答案3

以下是你需要做的:

如果文件的名称是 blahblah.txt

在发送机器上:

sudo cat blahblah.txt > /dev/ttyS0

在接收机器上:

sudo cat /dev/ttyS0 > blahblah.txt

不要忘记 sudo,因为有些系统可能需要它。

相关内容