我无法使用我的程序读取多个字符,我似乎无法弄清楚我的程序出了什么问题。
import serial
ser = serial.Serial(
port='COM5',\
baudrate=9600,\
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.read():
print(str(count) + str(': ') + chr(line) )
count = count+1
ser.close()
这是我得到的结果
connected to: COM5
1: 1
2: 2
3: 4
4: 3
5: 1
其实我期待这个
connected to: COM5
1:12431
2:12431
像上面提到的那样可以同时读取多个字符而不是一个一个地读取。
原文由 user2294001 发布,翻译遵循 CC BY-SA 4.0 许可协议
我看到了几个问题。
第一的:
ser.read() 一次只会返回 1 个字节。
如果你指定一个计数
它将读取 5 个字节(如果在 5 个字节到达之前发生超时则更少。)
如果您知道您的输入总是以 EOL 字符正确终止,更好的方法是使用
这将继续读取字符,直到收到 EOL。
第二:
即使您让 ser.read() 或 ser.readline() 返回多个字节,由于您正在迭代返回值,您仍然会一次处理一个字节。
摆脱
只是说: