2015-07-01 116 views
0

我有一個從傳感器讀取值的C++文件,我想動態地在網站上顯示這些值。所以我尋找一種方法將這些值(整數)從我的CPP文件傳遞給一個JavaScript,在網站上顯示它們。從C++傳遞值到Javascript

我的第一個,簡單的嘗試是從我的cpp腳本每秒鐘將值寫入一個js文件作爲變量。 JS的再使用此文件作爲源,並顯示在網站上的變量:

CPP:

fprintf(file, "var mx=%d, my=%d, mz=%d, ax=%d, ay=%d, az=%d, gx=%d, gy=%d, gz=%d;\n", 
    imu.raw_m[0], imu.raw_m[1], imu.raw_m[2],  // M = Magnetometer 
    imu.raw_a[0], imu.raw_a[1], imu.raw_a[2],  // A = Accelerometer 
    imu.raw_g[0], imu.raw_g[1], imu.raw_g[2]  // G = Gyroscope 
); 

HTML/JS:

<script src="./imu.js" type="text/javascript"></script> 

現在的問題是,當然,我需要一直刷新頁面,因爲imu.js文件是由網站緩存的。

我寧願有一種方法直接傳遞給整數從cpp文件到js腳本。我讀了一些關於json或Google V8腳本的內容。但我想先聽聽你的建議。

順便說一下,我在raspi上運行這個,如果這很重要的話。

感謝您的幫助

編輯:

我goning MySQL數據庫,在我的cpp文件從連接器/ C++的傳感器從http://dev.mysql.com/doc/connector-cpp/en/和我的網站中的數據寫入嘗試讀取它們。

+0

一個簡單的方法可以讓你的C++程序充當一個http服務器,然後腳本就可以使用XMLHttpRequest向它請求數據。 –

+0

不錯的主意,但在C++中創建HTTP服務器並不是那麼容易。 – celticminstrel

+0

@SkyHigh是的,你會想要實際發送數據,而不僅僅是重寫一個需要稍後加載的文件。您可能希望查看Node.js + C++或Boost.Asio – VermillionAzure

回答

0

你可以將你的C++代碼編譯成一個Node.js插件,然後你可以用你的插件註冊一個JavaScript函數,C++在更新值時調用它。通過這種方式,您可以通過託管和控制的方式將值直接從C++傳遞到Javascript。

Node.js的另一個好處是能夠託管你的網頁,並做所有的WebSocket和HTTP的東西,這可能是一個C++的痛苦。

0

如果您的腳本聰明地瞭解如何訪問數據文件,則不必刷新!萬一你有一個網絡服務器:請注意,您的數據文件可以通過您的網絡服務器訪問,然後讓腳本通過AJAX請求文件(link to w3schools

+0

此鏈接已死亡。你應該把它添加到答案中。 –

0

我在做一些類似的BeagleBone黑色。使用websocketd,您可以將幾乎任何程序轉換爲websocket端點,然後通過stdin和stdout命令發送數據。這對你來說是一個非常好的解決方案,因爲websockets被設計用來處理不斷變化的信息。