Python 验证串行读取
我目前正在尝试读取串行端口,数据有时会“损坏” 我期待这样的数据Python 验证串行读取,python,serial-port,Python,Serial Port,我目前正在尝试读取串行端口,数据有时会“损坏” 我期待这样的数据 ['CPS','0','CPM','11','uSv/hr','0.06','SLOW'] 打开串行端口后的第一个读数始终为 ['\x00'] 然后在未知的时间内读取数据是可以的,直到serialport提供类似的内容 ['CPS','0','CPM','21','uSv/hr','\x000.11','SLOW'] 我已经试着通过测试确保读数正确 这种相当丑陋的状况检查: serialData = serialConnectio
['CPS','0','CPM','11','uSv/hr','0.06','SLOW']
打开串行端口后的第一个读数始终为
['\x00']
然后在未知的时间内读取数据是可以的,直到serialport提供类似的内容
['CPS','0','CPM','21','uSv/hr','\x000.11','SLOW']
我已经试着通过测试确保读数正确
这种相当丑陋的状况检查:
serialData = serialConnection.readline()
serialData = "".join(serialData.split())
serialList = serialData.split(",")
if (len(serialList) < 7 or serialList[5][0] == "\\"
or serialList[0] != "CPS" or serialList[2] != "CPM"):
uSvH = 0.1
else:
uSvH = float(serialList[5])
serialData=serialConnection.readline()
serialData=”“.join(serialData.split())
serialList=serialData.split(“,”)
如果(len(serialList)<7或serialList[5][0]==“\\”
或串行列表[0]!=“CPS”或串行列表[2]!=“CPM”):
uSvH=0.1
其他:
uSvH=浮动(串行列表[5])
因此,我正在检查读取数据的大小是否正确(七个条目),第一个条目始终必须是CPS,当接收到\x*而不是浮点时,它会将读取设置为默认值
但不知何故,当出现损坏的读取时,这会失败
有没有更好的方法来清理读数或确保收到的数据是正确的?看起来我的想法太复杂了。一个简单的try-except语句完成了任务
if(len(serialList) == 7):
try:
uSvH = float(serialList[5])
except ValueError:
uSvH = 0.1
if (len(serialList) < 7 or serialList[0] != "CPS" or serialList[2] != "CPM"):
uSvH = 0.1
if(len(serialList)==7):
尝试:
uSvH=浮动(串行列表[5])
除值错误外:
uSvH=0.1
如果(len(serialList)<7或serialList[0]!=“CPS”或serialList[2]!=“CPM”):
uSvH=0.1
现在脚本传递一些随机读数 看来我的想法太复杂了。一个简单的try-except语句完成了任务
if(len(serialList) == 7):
try:
uSvH = float(serialList[5])
except ValueError:
uSvH = 0.1
if (len(serialList) < 7 or serialList[0] != "CPS" or serialList[2] != "CPM"):
uSvH = 0.1
if(len(serialList)==7):
尝试:
uSvH=浮动(串行列表[5])
除值错误外:
uSvH=0.1
如果(len(serialList)<7或serialList[0]!=“CPS”或serialList[2]!=“CPM”):
uSvH=0.1
现在脚本传递一些随机读数