【问题标题】:Rs232 software flow controlRs232软件流控
【发布时间】:2012-04-17 23:16:36
【问题描述】:

我有一个关于 Rs232 软件流控制(又名 XOn/XOff)的一般性问题

.Net 实现(和 nativ win32 api)都定义了一个名为 WriteTimeout / ReadTimeout 的属性,这是一个以毫秒为单位的时间,超过该时间后通信被视为过期。

不,我的问题是这样的:如果我向设备发送一个 5 字节的字符串,我看不到任何 WriteTimeout,正如预期的那样。这是如何实施的?我发现有关软件流控制的所有信息都是在接收缓冲区已满时设置 XOFF; XOn 当它准备好再次接收时。

但从我看到的行为来看,我怀疑,设备在处理我发送的 5 字节信息后会发送 XON,从而为窗口创建信息以生成相应的事件。

那么何时在仅两线 RS232 实现上发送 XON?仅当缓冲区已满并重新开始接收时;或者发出信号,我们“仍然准备好”在处理完每个块后接收?

如何实现?

提前祝你好运!

科雷戈特

【问题讨论】:

  • 您到底在实施什么?你是写软件还是设计硬件?

标签: windows serial-port hardware flow-control


【解决方案1】:

在您准备好接收数据时发送XON(您的接收缓冲区为空或几乎为空)。在您无法接受更多传入数据时发送XOFF(您的接收缓冲区已满或几乎已满)。该过程记录在 Wikipedia software flow control 页面上。

【讨论】:

  • 感谢您将我指向 wiki。 “但是:另一端收到XOFF码,暂停传输。一旦第一端准备好再次接收数据,就发送XON,另一端恢复传输。”在这种情况下,只有在发送 XOFF 时才应该发送 XON?或:每次控制器处理任何数据时发送 XON?主机发送“abcdef”;客户端以 XON 响应;主机发送“ghijk”;客户端用 XON 响应?
  • 您不需要发送XON,除非您之前限制了另一端。但是,您可能希望定期发送 XON 以防止噪音被解释为 XOFF 并停止通信。
猜你喜欢
  • 2019-08-29
  • 1970-01-01
  • 1970-01-01
  • 2010-11-12
  • 2011-01-26
  • 2017-11-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多