Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 随时间推移处理微控制器数据_Python_Arduino - Fatal编程技术网

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

我正在做一个涉及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代码。

我认为我们需要查看代码的Arduino部分,以了解为什么您得到的是4分钟而不是1分钟。出于某种原因,我认为serial不能一直打开。谢谢,这很有效!