Jul*_*ius 1 python serial-port pyserial
据我所知,XON 和 XOFF 只是用于两个串行设备之间握手的特殊 ASCII 字符。但我不清楚当我使用这种类型的流量控制进行通信时实际会发生什么。我的消息开头是否只有一个 XON 字符,末尾有一个 XOFF 字符?即,当我使用PySerial编写如下内容时:
import serial
ser = serial.Serial('COMx', 9600, xonxoff = True)
ser.write('Hi!\r\n')
Run Code Online (Sandbox Code Playgroud)
设备是否确实收到此信息:
\x11Hi!\r\n\x13
Run Code Online (Sandbox Code Playgroud)
(\x11分别是Python 中的\x13XON 和 XOFF 字符。)或者还有其他事情发生吗?(遗憾的是,随着PortMon 的消亡,我自己没有一个简单的方法来测试这一点。)
XON/XOFF 用于流量控制。如果您正在处理信息并且由于输入缓冲区已满而无法接收更多信息,那么您将发送 XOFF 告诉对方停止发送。当你的输入缓冲区有一些空间时,你会发送一个 XON 告诉对方再次开始发送。我见过的应用程序(我多年前做过很多这样的事情)仅在需要时使用它们,而不是作为消息的标准部分。
XON/XOFF 的问题之一是,在嘈杂的线路上,可能无法正确接收这些字符,因此接收方可能会在缓冲区已满 80% 时发送 XOFF,也可能在缓冲区已满 90% 时再次发送 XOFF,然后开始发送如果发送方不停止,则更频繁地发送。
类似地,接收方可能会在准备好接收时发送 XON,但如果没有收到更多消息,则可能会定期发送以确保不会错过第一个消息。
为了成功实施,这两个字符都不能出现在消息的任何部分中。维基百科对其中一些内容的解释比我更好。
在 PySerial 中,您不必实际显式发送它们。它会为您处理,或者您也可以使用 API 发送。
| 归档时间: |
|
| 查看次数: |
6134 次 |
| 最近记录: |