我已经编写了一个 Arduino 以将数据串行发送到我的计算机。pySerial 正在从串行中正确读取,但由于我总是想拥有最新的信息,我想我可以使用 flushInput() 刷新输入缓冲区,但是当执行命令时,我无法再读取连续剧。我只尝试每 51 次刷新一次(因为 51 是质数,我可以用计数器轻松计数 51 次而无需重置它),这样 Arduino 就有足够的时间发送下一个数据包(以 57600 波特运行),但仍然无法正常工作。也就是说,我使用了一个变量来存储读取行的长度,使用期限(),但是,一旦我达到 51 并且输入缓冲区被刷新,我总是得到 0 的读数,这意味着它没有读取任何内容。我已经阅读了 pySerial 的文档,但没有找到任何相关信息。flushInput() 是否也会终止串行连接?非常感谢。
编辑:我正在运行 Mac OS 10.7.5 和 Python 2.7.3
try:
self.s = serial.Serial("/dev/tty.usbmodemfa131", 57600, timeout = 0)
self.FlightLoopCB = self.FlightLoopCallback
XPLMRegisterFlightLoopCallback(self, self.FlightLoopCB, self.interval, 0)
except serial.SerialException:
self.s = None
.
.
.
self.length=0
self.myline=self.s.readline()
self.length=len(self.myline)
print "Test: %i %i" % (self.length, self.j)
if(self.length>=7):
if(self.myline[0:2]=="R,"):
if(self.j%51==0):
self.s.flushInput()
self.length=len(self.myline)
self.myline=self.myline[2:6]
self.myLineBytes=[0,0]
self.myLineBytes[0]=unpack('>H', self.myline[0:2])
self.myLineBytes[1]=unpack('>H', self.myline[2:4])