擅长:python、mysql、java
<p>我想这和数据解码有关。使用textIOWrapper解码对我来说很好。希望你能以我的观点做任何事情:</p>
<p>为了使p1协议的读取尽可能容易,我建议使用前面提到的TextIOWrapper,这样您仍然可以使用readline方法读取串行端口。“!”总是结束P1电报,这样可以用来检测消息的结尾,而不是使用计数器。当收到完整的电报后,可以对电报进行处理。示例:</p>
<pre><code>import io
import serial
serialport = serial.Serial( # Configure Serial communication port
port = "/dev/ttyUSB0"
baudrate = 9600,
timeout = 11,
bytesize = serial.SEVENBITS,
parity = serial.PARITY_EVEN,
stopbits = serial.STOPBITS_ONE )
p1port = io.TextIOWrapper(io.BufferedReader(serialport, buffer_size=1), newline='\n', encoding='ascii')
P1Message = []
while True:
try:
rawline = p1port.readline()
except UnicodeDecodeError:
print "Encode error on readline"
if '!' in rawline:
# Process your P1Message here
P1Message = [] # Clear message, wait for new one
else:
P1Message.append(rawline)
</code></pre>
<p>祝你好运!在</p>