如何使用命令行接收 xmodem 文件?

如何使用命令行接收 xmodem 文件?

我在用着油灰或者皮科康使用 AT 命令直接与移动调制解调器对话,同时进行一些需要在移动模块的 EFS 分区上上传/下载一些文件的实验。用于执行此操作的协议是X调制解调器似乎大多数终端实用程序不再包含/支持这一点。 Picocom 作为第三方依赖:

Picocom can send and receive files over the serial port 
using external programs that implement the respective protocols. 
In Linux typical programs for this purpose are:

• rx(1) - receive using the X-MODEM protocol        *
• rb(1) - receive using the Y-MODEM protocol
• rz(1) - receive using the Z-MODEM protocol
• sx(1) - send using the X-MODEM protocol           *
• sb(1) - send using the Y-MODEM protocol
• sz(1) - send using the Z-MODEM protocol

然而,这些都不适用于 Win/Cygwin,而且我无法找到编译这些的源代码。 (这些天在哪里托管?)

问:使用命令行接收 Xmodem 数据的最简单方法是什么?
(还有什么其他简单的替代方案?)

我已经看过以下 Unix SE 问题:

答案1

这些rx/rb/rz/sx/sb/sz工具是软件包的一部分lrzsz,并且packages.debian.org 的包源的包元数据将上游源位置标识为:

https://ohse.de/uwe/software/lrzsz.html

请注意,所有这些程序最初都是设计用于当您有基于终端的调制解调器连接到 Unix 系统时(即从计算机的终端仿真器通过调制解调器线路直接连接到 Unix 串行端口登录,没有像 TCP 这样的网络协议/完全涉及IP)。

他们期望文件传输协议发生在其标准输入/输出上:picocom并且类似的面向串行端口的终端仿真器将自动处理必要的重定向,但如果您计划在命令行上“原始”使用它们,请记住您需要将它们的输入和输出重定向到适当的串行端口设备,否则它们将尝试与而不是串行连接设备。

答案2

首先,您需要在主机和目标之间建立连接。

在这个例子中,我使用 2 个 pl2303(将 rx 连接到 tx,将地连接到地)来连接 2 台计算机(主机、目标),这会在两侧创建一个 /dev/ttyUSB0。将 busybox 放在目标上可以在两者之间建立连接。

在目标上,您需要一个 tty 连接,您可以将其放在 initrc 上,或者如果您有控制台,则可以直接使用 getty 打开连接,如下所示:
# sh -c 'getty -Lin -l /bin/sh 115200 /dev/ttyUSB0' &

在主机上,您需要 putty 连接到目标,如下所示:
$ putty -serial -sercfg 115200,8,n,1 /dev/ttyUSB0

要开始在目标上接收文件,您可以在 putty 连接上运行 rx,如下所示:
# rx file.bz2

要开始在主机上发送文件,您可以像这样运行 sx:
$ sx file.bz2 < /dev/ttyUSB0 > /dev/ttyUSB0

您将看到块正在传输,喝杯咖啡并等待,记住这是 115200 波特,大约 11 kb/s

相关内容