我想每隔一段时间读取串行端口上的数据和Arduino。所以本质上是这样的
- 读一读
- 等待
- 读一读
- 等待
- 拿 ...
等等
我面临的问题是端口将缓冲其信息,因此只要我调用等待函数,串行端口上的数据就会开始缓冲。等待函数完成后,我尝试再次读取数据,但我正在从缓冲区的开头读取数据,并且数据不再是最新的,而是大约在等待函数开始时读取的数据。
我的问题是,是否有一种我不知道的方法可以忽略在该等待期间读取的数据部分,而只读取串行端口上当前正在传递的数据?
到目前为止,我有类似的东西:
import serial
s = serial.Serial(path_to_my_serial_port,9600)
while True:
print s.readline()
time.sleep(.5)
出于解释的目的,我让 Arduino 输出自它开始循环以来的时间。根据python代码,每次调用的时间应该是半秒。通过串行输出,时间在不到一毫秒的时间内增加。无论睡眠时间如何,这些值都不会改变。
样本输出:
504
504
504
504
505
505
505
...
作为我最终目标的一个想法,我想测量端口的值,等待一段时间,看看值是多少,再等一下,看看值是多少,再等一下。
我目前正在Python
为此使用,但对其他语言持开放态度。