Python 随时间推移处理微控制器数据
我正在做一个涉及Arduino和Python的项目。基本上,我从传感器接收数据并使用Python将其写入数据库 目前我已经用某种方式对Arduino进行了编程,它每分钟都在发送数据。Python程序正在等待数据并插入它Python 随时间推移处理微控制器数据,python,arduino,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" : t
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代码。我认为我们需要查看代码的Arduino部分,以了解为什么您得到的是4分钟而不是1分钟。出于某种原因,我认为serial不能一直打开。谢谢,这很有效!