Я пытаюсь создать al oop, который сбрасывает все данные внутри него каждую итерацию, но где-то данные не сбрасываются, даже если я инициализирую значения внутри l oop.
Вот мой код:
import time , sys , string
import serial
ser = serial.Serial("/dev/ttyUSB0", baudrate=9600,
parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE,
bytesize=serial.EIGHTBITS
)
print (ser.name)
ser.write(b'U')
#print ('test1')
time.sleep(2)
b=0
while (b <= 2):
time.sleep(0.25)
ser.write(b'R')
#print ('test2')
d = [] # establishes an empty list to iterate through all the incoming data
i=0 # beginning of the buffer
time.sleep(0.5)
while (i<=11):
d.append(str(ord(ser.read()))) #adding each incoming bit to the list
#print (d[i])
#print ('^ is the ' + str(i) + 'th term') // these two lines help establish where the useful information begins for the lidar.
i+=1
#establishing a better way to write the data out / gd = good distance
gd = []
a = 0
for a in range(8):
gd.append(str(chr(int(d[a+4]))))
print (gd)
print (gd[0] + gd[1] + gd[2] + gd[3] + gd[4] + gd[5] + gd[6] + gd[7] + ' mm')
ser.flush()
b+=1
Причина, по которой я делаю d[a+4]
, заключается в том, что первые несколько бит информации бессмысленны, поэтому мне нужно, чтобы она начиналась с этого бита каждый раз.
Программа работает в первом l oop и правильно распечатывает ее, однако, в последующих циклах она начинает запускаться из разных точек, когда я пытаюсь снова распечатать значения. Я не уверен, что что-то упустил и хотел бы получить второе мнение.
Мои выводы:
D = 0609 mm
\r:\rD = 0 mm
mm \r:\rD mm
, поэтому он зацикливается вокруг списков, которые я где-то создаю, и так как он принимает строку из оператора print, мне интересно, имеет ли это какое-то отношение к проблема.