随着时间的推移处理微控制器数据

时间:2011-03-30 16:45:52

标签: python arduino

我正在开发一个涉及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中等待另一个选择?

1 个答案:

答案 0 :(得分:3)

除非您的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代码。