【问题标题】:Automatically detecting a serial port's configuration?自动检测串口的配置?
【发布时间】:2010-10-17 07:05:12
【问题描述】:

我正在围绕现有硬件产品设计软件。我可以完全控制通信协议,但我不确定如何促进设备检测。

设备可能具有必须在运行时检测到的一系列可能配置(即波特率、数据位、奇偶校验位、停止位)。让软件找出它正在使用的配置的最简单、最可靠的方法是什么?同样,我可以完全控制通信协议,因此我可以定义任何我希望的机制。

【问题讨论】:

    标签: serial-port zeroconf


    【解决方案1】:

    这是全双工还是半双工设备?您可以在串行线的两端控制请求发送和监控清除发送吗?串行线路是点对点(如 RS-232)还是多点(如 RS-485)?如果您在与新连接的设备协商时要干扰其他已连接的设备,这将产生(尽管很小)差异。

    如果您将握手过程想象成调制解调器协商链路层协议,它会使用一组标准消息来描述它想要进行的通信类型并等待来自另一端的“确认”。在您的情况下,我建议您的头端使用比特率范围生成“让我们谈谈”标准消息,并等待来自设备的确认。

    我还建议减少设备的配置选项数量。忘记可变数据位、奇偶校验位和停止位。串行通信世界不再像 70 年代那样不稳定。只需使用 8 个数据位、无奇偶校验、一个停止位并改变比特率。消息末尾的 CRC 提供了大量的错误检查。

    【讨论】:

    • 现在我正在研究全双工 RS-232,但 RS-485 看起来很有趣。两端的双工和控制请求/清除发送有什么区别?我可以使用所需的配置开始通信并在不断开连接的情况下即时更改为首选配置吗?
    • 全双工是指同时发送和接收协议数据单元(消息)。 RTS/CTS 是发送消息交换开始/继续信号的简单方法,例如一位 msg。在错误率变得太高之前,您绝对可以慢慢开始并逐步提高链接可以处理的速度。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多