Списки не сбрасываются после выполнения l oop - PullRequest
0 голосов
/ 03 февраля 2020

Я пытаюсь создать 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, мне интересно, имеет ли это какое-то отношение к проблема.

1 Ответ

0 голосов
/ 03 февраля 2020

Я не могу добавить комментарий, поэтому вот небольшое предложение. В конце вашего основного l oop, после

b+=1

добавьте следующую строку

d, gd = [], []

, если их нет полезнее после окончания l oop (что, я подозреваю, так). Он сбросит любое значение, которое содержат обе переменные, и вы сможете снова начать с пустых списков.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...