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