У меня есть программа на Python, которая пытается прочитать 14 байтов с последовательного порта, который
прибывают очень медленно. Я хочу, чтобы захватить все байты в
ByteArray [14]. Я понимаю, что есть новые функции байтового массива в Python 3.0, но
У меня работает только Python 2.6.6. Обновление может иметь неожиданные последствия, поэтому я должен
придерживаться 2.6.6.
Данные только периодически проходят через последовательный порт. Я получаю одно сообщение на
порт может быть каждые 2 минуты или около того. Эти данные текут очень медленно. Я вижу проблему
что мой код не может считывать данные по одному байту за раз. Я хочу создать это
данные ровно в 14 байтах, затем обрабатывают данные и начинают заново с новыми 14
байт.
Я принимаю здесь неправильный подход? Совет
ser = serial.Serial('/dev/ttyUSB1', 1200, timeout=0)
ser.open()
print "connected to: " + ser.portstr
count=0
while True:
line =ser.readline(size=14) # should block, not take anything less than 14 bytes
if line:
# Here I want to process 14 bytes worth of data and have
# the data be consistent.
print "line(" + str(count) + ")=" + line
count=count+1
ser.close()
Вот что я ожидаю: строка (1) = 0 ~ 888.ABC / заканчивается возвратом каретки
---------- начать вывод ------
line(0)=0
line(1)=~ ??1. ABC � # here get some multiple bytes and stuff gets out of synch
�ine(2)=
line(3)=0
line(4)=~
line(5)=
line(6)=8
line(7)=8
line(8)=8
line(9)=.
line(10)=
line(11)=A
line(12)=B
line(13)=C
line(14)=
line(15)=�
line(16)=
#...
line(48)=
line(49)=�
line(50)=0
line(51)=~
line(52)=
line(53)=8
line(54)=8
line(55)=8
line(56)=.
line(57)=
line(58)=A
line(59)=B
line(60)=C
line(61)=
line(62)=�
line(63)=
line(64)=
---------- конечный вывод ------