【问题标题】:How to send file over serial port in Windows Command Prompt如何在 Windows 命令提示符中通过串行端口发送文件
【发布时间】:2016-07-26 09:16:10
【问题描述】:

我正在尝试通过 COM 端口发送文件,但每次都失败。

首先,我在每台机器上配置一个串口,如下所示:

MODE COMx:115200,N,8

其中 x 是 COM 端口号。

在此之后我正在尝试做:

COPY file.zip COM1: /B

在接收 PC 上反之。

在大多数情况下,我的存档已损坏。但最后一次尝试什么也没给我——第一台电脑说文件已发送,但第二台电脑只是在等待数据。有谁知道如何解决这个问题?

【问题讨论】:

  • 这个串口线用过吗?您确定您有正确配置的串行电缆吗?
  • Cable 工作良好,通过使用 c# SerialPort 类发送进行检查。是的 - 我之前做过 - 文件传输得很好,但这仅适用于文本文件。也许二进制复制标志会对其他文件有所帮助。
  • 您是否通过 C## 练习发送了非文本?当然,如果二进制数据包含 Control-Z (0x1A),那么它可能会终止传输。
  • 您没有提及您在接收 PC 上运行的命令。复制 COM1:file.zip /B 不起作用。接收器应在中断控制器和 USART 上启用 IRQ,通过中断处理程序接收数据,并将它们存储在磁盘上。 OS shell 并不提供所有这些杂务。

标签: windows cmd serial-port file-transfer


【解决方案1】:

这对我来说可以将二进制文件发送到 Arduino:

mode COM21 BAUD=115200 PARITY=n DATA=8
copy yourfile.txt \\.\COM21

注意\\.\ 对于端口号 >= 10 是必需的,也可以用于端口号 1-9。

【讨论】:

  • 如何将那个文件复制到 COM21 的 /home/ 目录下?
  • 我不确定是否理解您的问题,因为用于 COM 端口的串行协议 (rs-232) 只定义了如何向/从串行设备发送和接收字节,它没有定义关于文件系统的任何事情(特别是它没有定义主目录)。大多数串行设备,例如串行鼠标或串行调制解调器,没有任何文件系统。您可以在此处找到有关 rs-232 的更多信息:en.wikipedia.org/wiki/RS-232#Sp%C3%A9cification
  • 谢谢@Ben,让我澄清一下我的问题:是否可以通过 COM 端口将文件传输到 linux 文件系统(例如 ext2)中?如果是,该命令在 Windows shell 中的外观如何?
  • 简短的回答是否定的,RS-232 协议非常低级:发送字节,接收字节,没有任何解释。 Linux 甚至不知道传输文件的开始和结束时间,或者文件名。但是您正在寻找的可能是 Kermit (en.wikipedia.org/wiki/Kermit_(protocol)) 或 Zmodem。有一些软件可以为 Windows 和 Linux 实现它,这样就可以通过串行线路传输文件。这里有一个方法:andym3.wordpress.com/…
  • 这取决于您的目的地,串行协议只是将文件的字节发送到 COM 端口。例如,您可以将文件发送到串行鼠标,它不会对该信息执行任何操作,也不会将其保存为文件(但是您会看到传输成功,因为协议中根本没有检查) .但是,如果您将其发送到另一台 Windows 计算机,其中特定软件正在“侦听”该特定串行端口,那么您可以恢复文件并将其保存在您想要的位置。此类软件的一个示例是 Kermit:kermitproject.org/k95.html
【解决方案2】:

您需要在 .zip 文件(或其他任何文件)之后以及命令行末尾为二进制文件指定 /B。例如COPY ABinary.File /B COM1 /B 否则它将在第一个非文本 ASCII 字符处停止。

尝试在接收端使用超级终端并传输>捕获文本

【讨论】:

    猜你喜欢
    • 2018-05-05
    • 2022-08-19
    • 2015-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-15
    • 1970-01-01
    相关资源
    最近更新 更多