В настоящее время я пытаюсь прочитать последовательный порт, и данные иногда "повреждены".
Я ожидаю, что такие данные
['CPS', '0', 'CPM', '11', 'uSv/hr', '0.06', 'SLOW']
Первое чтение после открытия последовательного порта всегда
['\x00']
тогда считывание данных нормально в течение неизвестного времени, пока последовательный порт не выдаст нечто подобное
['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 *, для чтения устанавливается значение по умолчанию.
Но почему-то происходит сбой, когда происходит искаженное чтение
Есть ли лучший способ санации показаний или проверки правильности полученных данных?