如果这是一个愚蠢的问题,请不要介意我。但我花了一些时间试图找到答案,但我找不到任何可靠的答案。也许这是一个硬件问题,但我想我应该先在这里尝试。
串行通信只能一对一进行吗?出现这种情况的原因是因为我有一个 arduino 板在其串行端口上监听通信。我也有一个 python 脚本向端口提供字节。然而,每当我打开arduino的串行监视器时,与python脚本的连接都会失败。串行监视器还连接到串行端口,以通过其小文本输入字段进行通信。
所以这是怎么回事?串行通信只能在单个客户端和单个服务器之间进行吗?有没有办法让多个客户端写入服务器?我感谢您的建议。
最佳答案
多个客户端(例如 Arduino)与一台服务器(例如台式计算机)通信通常通过串行变体完成:
这是一种广泛用于工业环境中的简单方法,您希望通过一个串行端口将许多设备连接到一台计算机。这种类型的布置也称为多点式布置,因为一根电缆围绕着建筑物,并带有 T 形接头,可将线路分接至每个设备。
用于此目的的硬件已广泛使用。您可以购买为计算机提供硬件接口(interface)的 USB 串行适配器。从编程角度来说,该端口看起来就像 RS232 端口。对于 Arduino,您只需添加一个收发器芯片即可。存在大量串行收发器,例如
Example computer USB adapter with 485 interface Sample RS485 transceiver chip from Element14
所有设备都卡在同一总线上同时监听。使用的简单通信协议(protocol)只需在每个命令之前添加设备地址即可。例如:
- 001SETLIGHT1 <-告诉Arduino“001”打开灯
- 013SETLIGHT0 <- 告诉“013”关灯
卡在电缆上的任何设备都会忽略不以其地址开头的命令。当设备响应时,它会在前面添加其地址。
- 001SETLIGHT1DONE <- 设备“001”响应命令已被接收并执行
响应中的地址让接收方知道哪个设备正在通话。
关于python - 一对一串行通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16949369/