Есть программа, которая принимает данные из COM порта. Возникла проблема, как заставить программу ждать данные и не выполняться дальше?
При использовании бесконечного цикла while, программа нагружает ЦП до 50%.
forchar = 0
idcom = []
ser = serial.Serial(
port = 'COM2',\
baudrate=2400,\
parity=serial.PARITY_NONE,\
stopbits=serial.STOPBITS_ONE,\
bytesize=serial.EIGHTBITS,\
timeout=0)
print("connected to: " + ser.portstr)
count=1
while True:
for line in ser.readline():
forchar = forchar + 1
idcom.append(line)
if forchar >= 13:
break
Ответ
У вас порт настроен на неблокирующее чтение, так как установлен timeout=0, Либо уберите эту опцию, либо напишите timeout=None, тогда порт у вас будет ждать данные, до тех пор пока они не появятся.
Если же вам все таки нужно неблокирующее соединение, то в цикл while надо добавить небольшую задержку time.sleep, тогда нагрузка процессора уйдет.
Комментариев нет:
Отправить комментарий