gpt4 book ai didi

python - PySerial:如何理解从串口读取时发生超时?

转载 作者:太空狗 更新时间:2023-10-30 02:45:59 26 4
gpt4 key购买 nike

我正在使用 PySerial 从串口读取数据,如下面的代码所示。CheckReadUntil() 读取我发送到串行端口的命令的输出,直到符号序列 readUntil 出现在串行输出中。

...

self.ser = serial.Serial(comDev, 115200, timeout=10)

...

#Function that continue to read from Serial port until 'readUntil'
#sequence of symbols appears
def CheckReadUntil(self, readUntil):
outputCharacters = []
while 1:
ch = self.ser.read()
outputCharacters += ch
if outputCharacters[-len(readUntil):]==readUntil:
break
outputLines = ''.join(outputCharacters)
return outputLines

但是,如果没有序列 readUntil(出于任何原因),我将永远停留在函数 CheckReadUntil() 中。设置 timeout=10 设置超时,所以我陷入了一个循环,每 10 秒迭代一次,什么都不做,只是等待。

如何理解存在超时事件以便我可以退出无限循环?输出长度可能不同。

最佳答案

更新(之前的答案不正确,这是来自@konstantin 的工作代码):

...

self.ser = serial.Serial(comDev, 115200, timeout=10)

...

#Function that continue to read from Serial port until 'readUntil'
#sequence of symbols appears
def CheckReadUntil(self, readUntil):
outputCharacters = []
while 1:
ch = self.ser.read()
if len(ch) == 0:
break
outputCharacters += ch
if outputCharacters[-len(readUntil):]==readUntil:
break
outputLines = ''.join(outputCharacters)
return outputLines

关于python - PySerial:如何理解从串口读取时发生超时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22605164/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com