我目前有一个项目,我的目标是实时绘制通过气流传感器的气流图。传感器通过IIC连接到Arduino Uno,然后Arduino收集数据并将其发送到我的COM3串行线路,波特率为1,000,000。在python中,我逐行读取串行行,然后绘制数据图。我的目标是绘制约500个数据点/秒(500hz)的图形,但是Python似乎在读取数据太慢。
这是我执行的一个小“测试”: 我吹了气流传感器。从我的Arduino程序上的串行监视器,我立即看到读数峰值。但是,从Python的控制台输出(仅读取串行线并打印出内容),我的打击高峰被大大延迟了。程序运行的时间越长,Python与串行行保持同步的备份就越多。
从Arduino方面:
Serial.println((double)average, 4);
//Serial.print(" , ");
// Serial.println((double)Flow, 4);
delay(2);
}
在Python方面:
print("PRESS 's' TO BEGIN RECORDING DATA!")
while not pressedStart:
if keyboard.is_pressed('s'):
print("Timer and Program Started!")
startTime = hour.time()
pressedStart = True
while pressedStart: #Program begins reading Serial Line when 's' is pressed.
while flowData.inWaiting()==0:
pass
dataArray = flowData.readline().split(",")
currentAverage = float(dataArray[0])
averageArray.append(currentAverage)
print(currentAverage) #this line is as far as my question goes. Why does Python print out this number
#more slowly than Arduino sends it out????
答案 0 :(得分:0)
Python是一种脚本语言。它通过解释器运行,因此运行非常缓慢。尽管Arduino微控制器的功率很低,但是它比python运行得快,因为python慢得多。除非您愿意通过增加Arduino延迟来减少频繁的数据点,否则我认为这无法解决。祝你好运!