Получение конкретных данных от датчика приближения (расстояние) - PullRequest
0 голосов
/ 02 июля 2018

Я использую 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

...