Я пишу код на Python для связи с ультразвуковым измерителем расстояния через последовательный порт, чтобы сделать следующее:
- Каждые 0,1 секунды, отправлять команду на датчик для измерения расстояния и регистрироватьотклик датчика
-Отобразите график всех измерений расстояния за последние 5 секунд
Вот мой код:
import serial
import numpy as np
import time
from matplotlib import pyplot as plt
tagnr=2#Tag number of the sensor that we're pinging
samplingRate=.1#Sampling Rate in seconds
graphbuf=50.#Buffer length in samples of logger graph
!#Initialize logger graph
gdists=np.zeros(graphbuf)
ax1=plt.axes()
!#Main loop
nsr=time.time()#Next sample request
try:
while True:
statreq(tagnr)#Send status request to sensor over serial port
temp,dist=statread(tagnr)#Read reply from sensor over serial port
gdists=np.concatenate((gdists[1:],np.array([dist])))
print gdists
nsr=nsr+samplingRate
while time.time()<nsr:
pass
finally:
ser.close()#Close serial port
print 'Serial port closed.'
Прямо сейчас мой код может получить массивиз последних 50 измерений, но я не знаю, как отобразить их на графике одновременно (я обычно строю свои графики с помощью Matplotlib).Должен ли я использовать потоки?Или использовать анимированный график, используя pyGTK или pyQt4?Я также думал об использовании Pygame?Мой механизм синхронизации тоже не очень оптимальный, но я думаю, что он довольно точный.