Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 验证串行读取_Python_Serial Port - Fatal编程技术网

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
现在脚本传递一些随机读数