python - 一对一串行通信

标签 python serial-port arduino pyserial

如果这是一个愚蠢的问题,请不要介意我。但我花了一些时间试图找到答案,但我找不到任何可靠的答案。也许这是一个硬件问题,但我想我应该先在这里尝试。

串行通信只能一对一进行吗?出现这种情况的原因是因为我有一个 arduino 板在其串行端口上监听通信。我也有一个 python 脚本向端口提供字节。然而,每当我打开arduino的串行监视器时,与python脚本的连接都会失败。串行监视器还连接到串行端口,以通过其小文本输入字段进行通信。

所以这是怎么回事?串行通信只能在单个客户端和单个服务器之间进行吗?有没有办法让多个客户端写入服务器?我感谢您的建议。

最佳答案

多个客户端(例如 Arduino)与一台服务器(例如台式计算机)通信通常通过串行变体完成:

RS-485

这是一种广泛用于工业环境中的简单方法,您希望通过一个串行端口将许多设备连接到一台计算机。这种类型的布置也称为多点式布置,因为一根电缆围绕着建筑物,并带有 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/

相关文章:

python - 我在哪里可以找到 python 的 vtk 文档?

python - 在 python 中不使用 numpy 的 NXN 矩阵的所有对角线元素

c# - 将许多变量从 Unity 发送到 Arduino

c++ - LibSerial:无法访问 SerialStream 成员函数

c - 写入后从串行端口读取

c - 如何在 Arduino 代码中使用延迟?

python - 如何让 python 在读写 Unicode 文本文件时更加友好?

Python 同时调用 Java 和 C 模块,如何?

c - linux设置串口中断

c++ - Arduino 头文件 "No matching function for call to"