我正在开发一个涉及 Arduino 和 Python 的项目。基本上,我从传感器接收数据并使用 Python 将它们写入数据库。
目前,我已经以某种方式对 Arduino 进行了编程,使其每分钟发送一次数据。 Python 程序正在等待数据并插入它。
ser = serial.Serial('/dev/ttyUSB0',9600)
while 1:
ser.open()
if ser.readline() != "":
db.data.insert({"Light" : ser.readline(), "Ts" : time()})
ser.close()
事实证明这种方法不太好,因为我不是每分钟插入一次,而是大约每 4 分钟插入一次。
那么,您对处理这个问题有什么建议?对 Arduino 进行编程以始终输出数据(计算机处理器上的工作量较少),然后只需在 Python 中等待另一个选择?
最佳答案
除非您的 Arduino 代码将所有内容发送两次,否则一半的问题是您每次迭代调用 ser.readline()
两次。这意味着每两条消息将有一次插入。
另一件看起来很奇怪的事情是,您在每次迭代期间打开和关闭串行端口。我怀疑这会导致您的问题,但为什么不一开始就打开一次端口呢?
ser = serial.Serial('/dev/ttyUSB0',9600)
ser.open()
while 1:
line = ser.readline()
if line != "":
db.data.insert({"Light" : line, "Ts" : time()})
ser.close()
如需进一步帮助,请发布 Arduino 代码。
关于python - 随着时间的推移处理微 Controller 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5489378/