2014-04-26 35 views
2

我正在處理一個小型項目,該項目涉及顯示和記錄(用於後期處理)通過串口連接從某種測量設備接收的數據。我正在使用Raspberry Pi來讀取和存儲接收到的信息:這是用一個用Python編寫的小程序完成的,它打開串行設備,讀取一幀並將數據存儲在MySQL數據庫中(不需要輪詢或交互與設備一起,數據自動發送)。接收串口數據:實時網頁顯示+記錄(帶下采樣)

串行數據被格式化成大約2.5kbits的幀,這些幀以1200baud重複發送,這意味着每2秒收到一個新幀。

現在,即使有用的數據只是框架的一部分,這對我所需要的信息來說太多了,所以我目前所做的只是通過僅讀取一幀來「下采樣」數據每分鐘一次。目前這是通過每分鐘調用我的日誌腳本的cron任務完成的。

我的設置的問題是,用於顯示(和處理)接收到的數據(從MySQL數據庫中提取)的PHP網頁無法每分鐘顯示一次以上的新數據。

因此來到這裏,我的問題:

你會怎麼做才能讓網頁顯示實時數據(這並不需要保存),同時保持記錄到MySQL數據庫@一次每分鐘?

我猜解決方案將涉及某種形式的守護進程,它存儲在指定的頻率(每分鐘一次)的數據,同時保持最新接收到的數據可用於PHP網頁(如何?)。你怎麼看?你有沒有可以用來作爲起點的類似代碼/應用程序的例子?

謝謝!

回答

0

我不知道我是否正確理解你的問題,但看起來你想用你的PHP腳本顯示一個不間斷的「數據流」。如果是這樣的話,恐怕這不會那麼容易。

HTTP協議的基本思想是基於請求/響應。您的瀏覽器發送請求並接收(靜態)響應。

您可以構建某種「流式」服務器,但流式傳輸(例如youtube.com所做的)也不過是週期性地發送視頻文件的靜態塊而已,並且播放器會將它們重新組裝爲視頻或音頻「流」。

但是,您可以查看「網絡套接字」和「長輪詢」等概念。例如,您可以創建一個長時間運行的PHP腳本,每兩秒鐘讀取一次certail文件並輸出該值。 (請記住使用flush(),否則輸出將被緩衝。)

一個智能解決方案甚至可以每兩秒輸出一個JavaScript代碼片段,它將再次更新某種容器顯示圖表,並且不會更新某個容器。

例如有用這種方法實現的進度計的實現。