В настоящее время у меня есть проект, в котором моя цель состоит в том, чтобы построить график (в режиме реального времени) воздушного потока, проходящего через датчик воздушного потока.Датчик подключен через 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????