我正在尝试读取一个串行端口,数据有时会“损坏”
我期待这样的数据
['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])
因此,我正在检查读取的数据大小是否正确(七个条目),第一个条目始终必须是CPS,当接收到的是\x*而不是float时,它会将读取设置为默认值
但不知何故,当一个损坏的读数发生时,这就失败了
有没有更好的方法来清除读数或确保接收到的数据是正确的
看来我想得太复杂了。一个简单的try-except语句就完成了任务
现在脚本传递一些随机读数
相关问题 更多 >
编程相关推荐