将两个串口连接成一个串口

Posted

技术标签:

【中文标题】将两个串口连接成一个串口【英文标题】:Connect two serial port into one serial port 【发布时间】:2016-10-26 09:20:23 【问题描述】:

我想把两个串口连接成一个串口。假设有A、B、C三个系统。

A、B 和 C 使用串行通信(RS232 端口)相互连接,如星形连接。 所以,情况就是这样。 当系统 C 向系统 A 和系统 B 发送数据时,它将同时发送到两个系统。但是当系统A或系统B发送数据时,系统C没有收到。

所以我想知道如何通过串口设备与其他串口设备(多设备)进行通信。

【问题讨论】:

那行不通。 RS-232 是一种点对点协议。您可以使用多点协议,例如 RS-485。见embedded.com/design/connectivity/4023975/… 【参考方案1】:

这根本行不通。您必须将两条 TX 线连接到一条 RX 线,但 RS-232(与以太网不同)不是共享介质协议,无法检测 TX 冲突(当两个设备尝试同时通话时)。

您需要在中间实现一个设备,将它收到的内容转发给其他设备。即使这样,它也必须知道其他设备正在使用的协议以防止消息中断(例如,仅在换行符处停止)。

【讨论】:

【参考方案2】:

是的,这绝对可行,至少在某些限制下/在明确定义的电压条件下。

保持 C:TX 的接线 --> A:RX 和 B:RX

对于另一个方向,通过使用带有二极管和电阻器的“半双工”布线方案,将 A+B TX 数据组合为 C:RX 引脚的一个信号,例如如图所示Lammert Bies' circuit for Half duplex RS232 spy / monitor / sniffer cable 或在此Spy Cable circuit。恕我直言,如果 A 和 B 在 RS232 电压规格中很好,这两种变体都应该可以正常工作。

限制:A 和 B 不能同时发送数据,即只能“半双工”。如果 A 和 B 同时发送,您将收到未定义/垃圾数据。

顺便说一句,还有其他*** posts that confirm this works。检查那里收到两个赞成票的第二个答案。

【讨论】:

二极管/电阻器解决方案已记录在案并已投入使用,即使在工业级设备中也如此:bb-elec.com/Products/Serial-Connectivity/…。当然,如果您对电子产品有普遍的反感,请分别。二极管/电阻器,并认为它们像谷仓一样狡猾 - 可能完全远离整个 RS232/RS422/RS485 区域。【参考方案3】:

您可以将它们连接成一个环:Atx->Brx,Btx->Crx, Crtx->Arx 然后每个设备都必须转发消息而不是为它。这不需要任何狡猾的 diody/resistory hokum pokum。

这种方法的一大好处是它不会对节点不同时进行通信设置任何限制:-)

【讨论】:

【参考方案4】:

在此配置中它无法工作,因为串行通信 (RS232) 可以提供两个设备之间的通信,而不是更多!

      TX| -> |RX
device1 |  - | device2
      RX| <- |TX

要解决此问题,您必须使用其他协议,如 RS485 或其他。

【讨论】:

以上是关于将两个串口连接成一个串口的主要内容,如果未能解决你的问题,请参考以下文章

虚拟机的串口突然接收不到消息,求大佬帮忙看看

串口服务器的连接方式有哪几种?

两个HC-05蓝牙模块互相绑定构成无线串口模块

ch340串口驱动和西门子PLC连接不上

java comm如何监听串口断开,或者有啥接口可以判断是不是连接状态

开发板上的五方向按键如何通过串口控制