我很难用我的程序读取多个字符,我似乎无法找出我的程序出了什么问题。
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
类似上述的东西,它可以同时读取多个字符,而不是一个接一个。
我用这个小方法用Python读取Arduino串行监视器
串行一次发送8位数据,转换为1字节,1字节表示1个字符。
您需要实现自己的方法,该方法可以将字符读入缓冲区,直到到达某个哨兵。惯例是发送一条类似
12431\n
的消息,指示一行。因此,您需要做的是实现一个缓冲区,该缓冲区将存储X个字符,当您到达该缓冲区
\n
时,对该行执行操作并继续将下一行读取到该缓冲区中。注意您必须处理缓冲区溢出情况,即当接收到比您的缓冲区长的行时,等等。。。
编辑
我看到了一些问题。
首先:
ser.read()一次只返回1个字节。
如果指定计数
它将读取5个字节(如果在5个字节到达之前发生超时,则会减少)
如果您知道您的输入总是以EOL字符正确终止, 更好的方法是
它将继续读取字符,直到收到EOL。
第二:
即使让ser.read()或ser.readline()返回多个字节, 因为您正在迭代返回值,所以您将 一次只能处理一个字节。
摆脱
然后说:
相关问题 更多 >
编程相关推荐