【发布时间】:2011-03-21 03:58:55
【问题描述】:
我有一个 python 程序试图从一个串行端口读取 14 个字节 来得很慢。我想捕获所有字节 字节数组[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()
这就是我所期待的:line(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)=
---------结束输出------
【问题讨论】:
标签: python serial-port device