2
我正在使用Python編寫代碼以通過串行端口與超聲波測距儀進行通信,以執行以下操作:
- 每隔0.1秒發送一條命令給傳感器進行距離測量,並記錄傳感器
- 顯示所有的距離測量從最後5秒使用python和matplotlib同時獲取數據和更新圖表
這裏的陰謀是我的代碼的響應:
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個mea的數組但我不知道如何在圖表中同時顯示這些內容(我通常使用Matplotlib繪製圖表)。我應該使用線程嗎?或者使用pyGTK或pyQt4使用動畫圖形?我也在考慮使用pygame?我的計時機制並不是非常優化,但我認爲它非常準確。
感謝您的評論,但我仍然無法得到更新的陰謀。與此同時,我找到了一個完整的python代碼來記錄和顯示Eli Bendersky的串行數據[link](http://eli.thegreenplace.net/2009/08/07/a-live-data-monitor-with- python-pyqt-and-pyserial /),它幾乎完全符合我的要求。 – 2011-04-01 17:44:57