【问题标题】:Sending files over Half-duplex interface通过半双工接口发送文件
【发布时间】:2019-10-16 00:21:32
【问题描述】:

我正在尝试通过半双工接口 (RS-485) 在运行 debian (4.19) 的盒式 PC 和带有 im6xDL 的 SBC 之间发送文件。

感谢这个社区,我可以使用 picocom 或通过回显/读取在单元之间成功传输简单数据。

Box PC 本身支持半双工 RS-485,并具有自动 RTS 功能,因此您可以毫无问题地读取/发送数据。另一方面,SBC 需要切换到 RX 或 TX 模式。

当我尝试将文件从盒子 PC 发送到 SBC 时,结果发现这是一个问题。

On the box PC:
picocom /dev/ttyUSB0 -b 9600 -fn
C-a,C-S
***file: /home/user/test.txt
Transfer incomplete

*** exit status: 128

On the SBC
picocom /dev/ttymxc2 -b 9600 -fn -et
C-a,C-r
Terminal ready
�000000

正如您所看到的,有些地方非常错误,就像在传输文件时它无法解释这些位。

我的问题:

  1. 是否可以在半双工系统中从命令行发送文件? (SBC 需要一直处于 RX 模式)。

  2. 还有其他更直观的方法来实现这一点吗?

一如既往,感谢您的帮助和支持 :)

/W

【问题讨论】:

标签: linux rs485


【解决方案1】:

看这里:

Pymodbus - Read input register of Energy meter over rs485 on uart of raspberry pi3

我在那里提出的使用 pylibmodbus 的解决方案应该适用于任何具有 UART 和一个或两个可从 Linux 中的用户空间访问的 GPIO 线的硬件。

另一方面,如果您想做的是使用 picocom 或 minicom 之类的东西,那么您可以看看使用 555 计时器的纯硬件解决方案。

当然,如果原型电路不适合您,您可以随时购买支持半双工的 USB 转 RS485。你有很多可用的,但基于MAX13487 IC 的那些似乎工作得很好。

编辑:使用 555 计时器的解决方案不在我上面链接的帖子中,而是在此处以及半双工 RS485 链接上的更多背景资料:RS485: Inappropriate ioctl for device

【讨论】:

  • 抱歉,马科斯回复晚了。我最终将此演示的硬件更改为支持自动传输的硬件。从您的 555 计时器示例中得到了这个想法(或者更确切地说是学习了它:-))。一旦我要开始这个项目,我可能会回到你的 pymodbus 示例。再次感谢您的帮助!
  • 很高兴听到你的工作。当你在硬件中有半双工时总是更容易,但如果你不这样做,pylibmodbus 是相当可靠的
  • 你好马科斯,我现在开始真正的项目,我一直在阅读 modbus。我需要发送文件 ~10-20MB,论坛上的一般想法是 modbus 不是实现这一目标的好方法?我一直在研究将 QT 与 RS-485 库一起使用,您有什么想法吗?
  • 您好 Willie,我认为 Modbus 不是发送这么多数据的好选择。但是您不认为要使用它,如果您有两台计算机,则可以通过以 ASCII 或二进制编码的终端发送文件。也许你最好写一个新问题来详细说明你到底想做什么,好吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-01
  • 2011-02-24
  • 2015-05-27
  • 1970-01-01
  • 2014-06-07
相关资源
最近更新 更多