【问题标题】:File access between mcu and PC through rs232 communication单片机与PC之间通过rs232通信进行文件访问
【发布时间】:2020-06-22 07:12:58
【问题描述】:

我正在使用 LPC178 开发板,我想读取 Windows PC 上的文件。我的开发板只有一个 RS2323 接口可以与之通信。

如何使用 RS232(串行)链接将文件从我的 PC 传输到我的 MCU?我找到了reference,它解释了如何在 MCU 和 PC 之间传输数据,但它与文件传输无关。

【问题讨论】:

  • “我如何完成我的整个项目”这个话题太宽泛了。 MCU 很可能不关心文件,相反,您应该为它提供来自 PC 程序的有意义的数据。您需要创建一个 PC 程序、一个 RS-232 协议和固件端。

标签: c windows serial-port embedded microcontroller


【解决方案1】:

Afaik 没有简单的解决方案,例如通过 RS232 调用诸如“复制”或“fopen”之类的东西。我很高兴在这里被证明是错误的。

最快的解决方案可能是编写一个在您的 Windows 主机上运行的小程序,它会侦听您的 RS232 通信并根据您的通信协议将您的通信输入/输出文件。这可以通过使用您选择的语言(例如 C、C++ 或 Python)的标准文件操作来完成。

【讨论】:

    【解决方案2】:

    您的问题是书中最古老的问题之一。如何在没有花哨的操作系统抽象的情况下传输文件。对于 RS232(或任何其他串行方法),存在许多文件传输协议。

    其中一个是kermit。这是 1981 年的协议,可以传输二进制和文本文件。它是able to be embedded in a micrcontroller,并且存在使用 kermit 传输/接收的程序。

    alternative old site for reference

    【讨论】:

      【解决方案3】:

      在最简单的情况下,您将使用 XMODEM、YMODEM、ZMODEM 或 Kermit 等文件传输协议 - 这些协议是在联网和互联网无处不在之前设计的,用于处理两个之间的简单点对点传输电脑。大多数终端仿真器工具(如 TeraTerm Pro 或 PuTTY)都支持它们,因此无需编写特定的 PC 软件,只需微控制器端即可。

      更复杂但更灵活的解决方案是实现 TCP/IP 堆栈和 PPP 驱动程序以及 FTP 应用层 - 可能只有在使用第三方 TCP/IP 堆栈和应用层时才实用。然后,您可以在 PC 端使用任何 FTP 客户端,因此不再需要 PC 软件。如果您只需要传输文件,这可能有点过头了,但它的优点是允许您同时将单个串行端口用于其他数据流和应用程序协议,例如 Telnet。缺点可能是,虽然 Windows 确实支持 PPP,但它隐藏在拨号网络中,坦率地说,开始工作很痛苦。

      【讨论】:

        【解决方案4】:

        您要做的第一步是确保串行通信正常工作。

        1. 从MCU连续发送一个字节到PC并显示在一些io控制台上(例如:超级终端,Dock light)
        2. 从 PC 接收到 mcu 的字节并将其回显到 PC。

        一旦您确定串行通信工作正常,然后选择一些文件传输协议并实现它。

        虽然您可以选择任何可用的协议或编写自己的协议并实施它。 出于讨论的目的,我选择 Xmodem 协议。 如果您考虑使用其他协议,您可能会在此处停止阅读答案。

        XMODEM 是一个简单的文件传输协议。 有关详细信息,请参阅http://web.mit.edu/6.115/www/amulet/xmodem.htm。 您可以通过读取协议来实现 Xmodem MCU 端。或者也可以考虑使用开源(如果有的话)

        PC 端我更喜欢使用 HyperTerminal io 控制台,因为它与 Xmodem 兼容。 在超级终端中,我所要做的就是配置设置并选择要传输到 mcu 的文件。 现在使用 Xmodem 协议从 PC 将任何文件传输到 mcu。

        你如何处理收到的单片机文件取决于你:)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-02-19
          • 2012-06-19
          • 1970-01-01
          相关资源
          最近更新 更多