Arduino和Python之间的串行连接速度慢

时间:2019-06-12 18:03:25

标签: python-2.7 serial-port arduino-uno baud-rate

我目前有一个项目,我的目标是实时绘制通过气流传感器的气流图。传感器通过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???? 


1 个答案:

答案 0 :(得分:0)

Python是一种脚本语言。它通过解释器运行,因此运行非常缓慢。尽管Arduino微控制器的功率很低,但是它比python运行得快,因为python慢​​得多。除非您愿意通过增加Arduino延迟来减少频繁的数据点,否则我认为这无法解决。祝你好运!