问题标签 [zmodem]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
702 浏览

.net - 是否可以通过 ZModem 通过 USB 传输文件?

尤其是有 .NET 库可用于此目的吗?两个小时的谷歌搜索没有任何结果,所以我并不乐观,但是......

最大的问题:是否可以通过 USB 使用 ZModem?

TIA。

0 投票
2 回答
2301 浏览

scripting - 帮我用expect通过ssh驱动Zmodem

有一个漂亮的小工具叫做 zssh,它可以很容易地使用 实用程序 通过现有的 ssh 连接lszrz使用 zmodem传输文件。它非常方便......但似乎我应该能够使用expect. 我已经走到这一步了...

rz这在看到一个框架后启动ZRQINIT,它显然连接 rz到 ssh 会话,但它不起作用。 rz说:

……等等。

有没有办法使这项工作?谢谢!

0 投票
2 回答
10969 浏览

protocols - 了解 ZMODEM 协议

我需要在我的程序中包含基本的文件发送和文件接收例程,并且它需要通过 ZMODEM 协议。问题是我无法理解规范。

作为参考,这里是规范

规范没有定义各种常量,所以这里有一个来自 Google 的头文件

在我看来,该文档中有很多未定义的重要内容:

  • 它经常提到 ZDLE 编码,但它是什么?我究竟什么时候使用它,什么时候不使用它?
  • 在 ZFILE 数据帧之后,传输文件的元数据(文件名、修改日期、大小等)。其后是 ZCRCW 块,然后是根据规范未定义类型的块。ZCRCW 块据称包含 16 位 CRC,但规范没有定义计算 CRC 的数据。
  • 它没有定义它使用的 CRC 多项式。我偶然发现 CRC32 poly 是标准的 CRC32,但我对 CRC16 poly 没有这样的运气。没关系,我是通过反复试验找到的。CRC16 多边形是 0x1021。

我四处寻找参考代码,但我能找到的都是 90 年代初的不可读、未记录的 C 文件。我还从 MSDN 中找到了这组文档,但它与我运行的测试非常模糊和矛盾:http: //msdn.microsoft.com/en-us/library/ms817878.aspx(您可能需要通过谷歌的缓存查看)

为了说明我的困难,这里有一个简单的例子。我在服务器上创建了一个包含“Hello world!”的纯文本文件,它被称为 helloworld.txt。

我使用以下命令从服务器启动传输:

这会提示服务器发送以下 ZRQINIT 帧:

与此有关的三个问题:

  • 填充字节(0x2A)是任意的吗?为什么这里有两个,但在其他情况下只有一个,有时甚至没有?
  • 规范最后没有提到 [CR] [LF] [XON],但 MSDN 文章提到了。为什么会在那里?
  • 为什么 [LF] 设置了位 0x80?

在此之后,客户端需要发送一个 ZRINIT 帧。我从 MSDN 文章中得到了这个:

除了 [LF] 0x80 标志问题之外,我还有两个问题:

  • 为什么这次不包括[XON]?
  • CRC 是根据二进制数据还是 ASCII 十六进制数据计算的?如果是二进制数据,我得到 0x197C,如果是 ASCII 十六进制数据,我得到 0xF775;这些都不是框架中的实际内容(0xBE50)。(已解决;它遵循您使用的任何模式。如果您处于 BIN 或 BIN32 模式,则为二进制数据的 CRC。如果您处于 ASCII 十六进制模式,则为 ASCII 十六进制字符表示的内容的 CRC .)

服务器以 ZFILE 帧响应:

好的。这是有道理的。如果我计算 [04 00 00 00 00] 的 CRC32,我确实得到 0x33A251DD。但是现在我们最后没有任何 [CR] [LF] [XON]。为什么是这样?

在这一帧之后,服务器也会立即发送文件的元数据:

这甚至没有标题,它只是直接跳转到数据。好吧,我可以忍受。然而:

  • 我们有了第一个神秘的 ZCRCW 框架:[18 6B]。这个框架有多长?CRC 数据在哪里,是 CRC16 还是 CRC32?它没有在规范中的任何地方定义。
  • MSDN 文章指定 [18 6B] 后面应该跟 [00],但事实并非如此。
  • 然后我们有一个未定义类型的帧:[18 50 D3 0F F1 11]。这是一个单独的框架还是 ZCRCW 的一部分?

客户端需要使用 ZRPOS 帧进行响应,同样取自 MSDN 文章:

与 ZRINIT 帧相同的问题:CRC 错误,[LF] 设置了位 0x80,并且没有 [XON]。

服务器响应一个 ZDATA 帧:

与 ZFILE 相同的问题:CRC 一切正常,但 [CR] [LF] [XON] 在哪里?

在此之后,服务器发送文件的有效负载。由于这是一个简短的示例,它适合一个块(最大大小为 1024):

从文章似乎提到的内容来看,有效载荷是用 [ZDLE] 转义的。那么如何传输恰好与 [ZDLE] 的值匹配的有效负载字节呢?还有其他类似的价值观吗?

服务器以这些帧结束:

我完全迷失在第一个。第二个与 ZRINIT 和 ZDATA 帧一样有意义。

0 投票
1 回答
5061 浏览

c++ - Zmodem 使用 C/C++ 接收文件

我被分配在 Windows 平台上编写一个 c++ 程序,以使用 zmodem 通过串行端口从远程服务器检索文本文件。几乎和这个人一样,但在窗户上。

这是我卡住的地方:我可以使用串行电缆与服务器通信,但是当服务器发送文件时,它使用 zmodem 协议,所以我看到服务器向我发送 rz\r**.B00000000\r

所以我阅读了zmodem 协议的规范,但我不明白如何开始接收文件。我根据规范中提到的头文件发送 ZRINIT 。但文件传输并未开始。

我的问题是这个。当我收到发送文件的请求并期望开始接收数据包时,我可以简单地发送字节吗?我可能发送了错误的代码吗?在那种情况下,是否有一个如何编码的示例我是否应该不费心尝试自己编写协议并找到一个自动为我执行此操作的库?如果是这样,它是否适用于 Windows?或者我应该寻找一个从命令行获取输入的通信程序?

我真的只需要一些关于如何进行的建议。

我阅读了有关sexyz 的信息,但找不到下载页面。

欢迎任何意见。

更新

我对协议有了更多了解。该规范在第 8 节和第 12 节中提到了发送方和接收方之间的交易是如何工作的。从那我已经能够解密一些头文件的代码,比如 ZRQINIT、ZRINIT、ZFILE ......例如

我仍然缺少很多,即 ZRP0S、ZRFIN。如果有人可以找到定义这些字符串的位置的链接,那将对我有很大帮助。

0 投票
0 回答
589 浏览

zmodem - Using sz (ZMODEM protocol file transfer) non-interactively

How to use sz command (send files using ZMODEM) non-interactively. I want run a script to transfer a file from unix server to winodws from fixed source directory to fixed destination directory. The sz manual page says

With ZMODEM AutoDownload enabled, Professional-YAM and ZCOMM will automatically recieve the files after performing a security check.

But I'm not getting how to use it.

0 投票
1 回答
1183 浏览

serial-port - 执行 lrzsz 以通过 minicom 发送文件时出错

我想使用 minicom 通过串口将小目标代码发送到 Ezsdk 6.0 Beagleboard。我找到了 lrzsz ( http://ohse.de/uwe/software/lrzsz.html ) 并与 arm-linux-gnueabihf-gcc 交叉编译。我得到了 lrb、lrx、lrz、lsb、lsx、lsz。但是在船上执行此操作时,它显示

文件属性

请帮我将 lrzsz 移植到 ezsdk 6.0

谢谢

0 投票
1 回答
15041 浏览

serial-port - 以非交互方式使用 zmodem/picocom/minicom 传输文件

我们正在尝试使用 minicom(在主机 pc 中)和 picocom(在基于 arm 的评估板)组合传输文件。在评估板方面,我们有/dev/ttygserial,在主机 pc 方面,我们有/dev/ttyUSB0

主机端minicom设置如下,

  1. 串行设备 -/dev/ttyUSB0
  2. 波特率 - 115200

将 minicom 设置为接收模式的步骤。

  1. ctrl+a R,选择zmodem
  2. 现在 minicom 将开始等待来自另一端的文件。

在评估板方面,我们使用 picocom 如下发送文件。

  1. 在命令行执行picocom -b 115200 -s "sz -vv" /dev/ttygserial
  2. 现在按Ctrl+A and Ctrl+S
  3. Picocom 将通过打印询问文件名**file
  4. 一旦提供文件名并按下回车,文件就会发送到主机。

所有这些步骤都有效,我们能够将不同类型的文件从评估板传输到 pc,但现在我们想将此过程放入 C 代码中。为此,我有以下疑问,

  1. minicom是否可以使用单个命令设置为文件接收模式?(意思是非交互的)?
  2. 是否可以在单个命令中使用 picocom 发送文件(意味着非交互式)?
  3. 还有其他建议吗?
0 投票
1 回答
276 浏览

embedded-linux - zmodem 上传以奇怪的错误结束

我目前正在尝试通过zmodem将一些文件上传到一个带有busybox的嵌入式linux的小型系统。虽然大多数文件通过 9600 BAUD 连接需要很长时间,但有一个文件总是失败(cramfs_cmc-pu2_v2.45.img)。它大约有 4MB,也是最大的。对于上传,我使用Le Putty,一个支持 zmodem 的 Putty 分支。不幸的是,没有其他方法可以上传文件,因为该机器上的 ftp 服务器无法正常工作。

问题是上传总是以这种奇怪的东西结束(经过几个小时完全没有反馈):

我猜它的闪存用完了,但 df 只给了我

在这种情况下,由于文件系统是 jffs2,因此计算可用空间很困难。

也许有人知道如何用那个古老的协议解决这个问题。提前致谢。

编辑:与此同时,我将文件拆分为许多较小的文件并尝试上传它们。它总是在两个文件之后失败。这支持了没有足够可用空间的怀疑。

0 投票
1 回答
2910 浏览

embedded-linux - minicom/picocom 不使用 zmodem 将文件传输到嵌入式 linux 板

我有一个基于 TI DM368 处理器的嵌入式 linux 设备,内核版本为 2.6.32.17 和 BusyBox v1.13.2 (2011-03-24 18:58:44 CDT) 文件系统。

我在通过串口使用 minicom/picocom 中的 zmodem 将文件从我的计算机(ubuntu 14.04)传输到电路板时遇到问题。

问题是当我在 minicom 或 picocom 中使用 zmodem 发送文件时,它说超时发生并且“传输不完整”。我必须在板上运行某种守护程序或程序吗?

zmodem 应该非常简单,我从来没有遇到过 zmodem 和嵌入式 linux 板的问题。

这是按 ^A +S 并输入文件路径和名称后 picocom 的输出:

picocom zmodem 错误.png

这是按 ^A +S 并选择所需文件后的 minicom 输出:

怎么了?

0 投票
2 回答
781 浏览

java - 尝试通过 java telnet 服务器使用 lrzsz 使用 zmodem 发送文件

我正在尝试使用 lrzsz 通过读取 java 中的 stdio 并将其转发到已连接客户端的套接字来通过 zmodem 发送文件。

然而,zmodem 下载是通过损坏来的。它出错了。