Медленная последовательная связь между Arduino и Python - PullRequest
0 голосов
/ 12 июня 2019

В настоящее время у меня есть проект, в котором моя цель состоит в том, чтобы построить график (в режиме реального времени) воздушного потока, проходящего через датчик воздушного потока.Датчик подключен через IIC к Arduino Uno, который затем собирает данные и отправляет их на мою последовательную линию COM3 со скоростью передачи данных 1 000 000.В Python я читаю, строка за строкой, последовательную строку, а затем графически данные.Моя цель - отобразить около 500 точек данных в секунду (500 Гц), но кажется, что Python читает данные слишком медленно.

Вот небольшой «тест», который я выполнил: я подул на датчик потока воздуха.Из Serial Monitor в моей программе 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 голосов
/ 14 июня 2019

Python - это язык сценариев.Он проходит через переводчика и поэтому работает очень медленно.Несмотря на то, что микроконтроллер Arduino работает очень слабо, он работает быстрее, чем ваш python, потому что python намного медленнее.Если вы не хотите получать менее частые данные за счет увеличения задержки Arduino, я не думаю, что это можно решить.Удачи еще!

...