Я использую Python для считывания последовательных данных с датчика приближения, я хотел бы получить только расстояние и избавиться от всех других данных, которые он производит. Данные, которые он изначально выводит, имеют вид Unicode в шестнадцатеричной форме. например:
b'\xfc\x95\x92\x82\x00\x00F\x00\x1f\x04\xef\xff\xd5\x95\x00\n'
- начальный вывод.
Когда он помещается в цикл for для доступа к данным в строке, он дает мне следующие числа.
252
149
146
130
0
0
70
0
31
4
239
255
213
Код, который я написал до сих пор:
import serial
ser = serial.Serial(port = "COM5", baudrate = 230400, bytesize =
serial.EIGHTBITS, parity= serial.PARITY_NONE, timeout = 1)
try:
ser.isOpen()
print("serial Port is open")
except:
print("error")
exit()
if (ser.isOpen()):
try:
while True:
line = ser.readline()
print (line)
for data in line:
print (data)
except Exception:
print( "Keyboard Interrupt")
else:
print("cannnot open port")
В выводе, представленном выше ^ везде, где говорится, что «255» - это начало новой строки, а измерение расстояния всегда располагается на 9 столбцов вниз и затем будет продолжаться снова, когда вы увидите «255». Подводя итог, «255» происходит один раз каждые 16 раз, а затем начинается новая строка данных. Мне нужно иметь доступ к девятому элементу данных после 255, чтобы получить расстояние.
Вот более длинный блок вывода, чтобы привести лучший пример:
"b'\xfc\xc6\x92O\x00\x00F\x00\x1f\x04\xf1\xff\xd5d\x00\n'
252
198
146
79
0
0
70
0
31
4
241
255
213
100
0
10
«
b'\xfc\xc1\x92P\x00\x00I\x00 \x04\xf1\xff\xd5d\x00\n'
252
193
146
80
0
0
73
0
32
4
241
255
213
100
0
10
b'\xfc\xc1\x92Q\x00\x00I\x00\x1f\x04\xf1\xff\xd5a\x00\n'
252
193
146
81
0
0
73
0
31
4
241
255
213
97
0
10
![Code and output](https://i.stack.imgur.com/yDHWc.jpg)