我正在做一个涉及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中等待另一个选择?
发布于 2011-03-31 00:55:33
除非您的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代码。
https://stackoverflow.com/questions/5489378
复制相似问题