我正在尝试以Python允许我通过串行端口的速度写入和读取。问题是我写得太快了,但它不起作用。我相信问题必须出在串行缓冲区上,并且我可能会过度写入输入缓冲区。我可以增加输入和输出缓冲区吗?它们是否有任何方法、函数或标志可以告诉缓冲区何时已满、空或忙?我正在尝试尽快一遍又一遍地发送这两个命令
ser = serial.Serial(port=2,baudrate=28800, timeout = 1)
#print ser
ser.flushInput() #flush input buffer, discarding all its contents
ser.flushOutput() #flush output buffer, aborting current output
#and discard all that is in buffer
ON = ":00000008f8"
PGMMEM0 = ":01f0000011FE" #program one memory location
start = timeit.default_timer()
for i in range(10):
ser.write(ON)
end = timeit.default_timer() - start
print end
ser.write(PGMMEM0)
end = timeit.default_timer() - start
print end
最佳答案
是的,您可以使用Serial.outWaiting()
方法来检查还有多少数据等待发送。
我不确定 Serial.write()
方法的具体行为,如果它只是在返回之前将数据添加到内部缓冲区。为了需要上述内容,就必须采用这种方式,但另一方面,有 nonblocking()
使其成为非阻塞的。有点困惑。
关于Python Pyserial 串行缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27130423/