簡體   English   中英

具有C ++運行線程的Raspberry Pi,可在Web上發布數據

[英]Raspberry Pi with c++ running thread, publish data on web

我想在網頁上顯示在我的c ++程序中處理的一些值,應該從許多客戶端打開該值,並且該網頁對於我的應用程序不是必需的。

我之所以描述這些要求是因為我為解決這個問題而變得瘋狂:我發現了很多有關cgi的示例,或多或少地清楚了cgi的工作原理,這對於我的研究范圍來說還不夠,因為它是一個從網頁調用的過程,但是沒有與我的應用程序連接。 我的主程序不能通過cgi程序運行,即使從未打開過網頁也應該可以運行(應該是可選的)。

那么,如何在cgi程序和主c ++程序之間共享數據?

保存文件或數據庫真的是唯一的方法嗎?

最后,我需要攔截“獲取”和“發布”信息,或者從Web服務器(服務器代碼腳本)調用我的函數。但是如何?

謝謝安德里亞

如果是單向系統(例如,數據僅從C ++程序流向網站上的用戶,而不是從網站流向C ++程序),則最簡單的方法將是寫入文件,最好是寫入數據庫。

您可以使用MySQL連接器之代碼從C ++代碼寫入數據庫,並且可以使用Apache服務器上的PHP很快地編寫一個基本的網站來顯示來自數據庫的數據。

另一種解決方案可能是,每當創建新數據時,就直接從C ++程序將輸出寫入HTML文件。 請求數據的用戶可以訪問您的服務器,並從HTML文件中獲取最新數據。

我這樣做的方法是有一個小程序來測量事物並將數據輸出到文件,使用mvrename以確保原子地替換文件。

然后使用具有編程功能的Web服務器(我知道PHP,但是您可以使用Java,Java Script,Python,C,C ++或其他十幾種語言)。

保持簡單-除非您絕對有標准使其變得不同,否則在完成工作時簡單總比復雜要好-一旦工作成功,您就可以擺弄它,或者完全重建它並使其更好,但是至少你有一些最先起作用的東西。

對事物的請求可以存儲在應用程序讀取的配置文件中-作為POST或URL參數發送(如果要使用“功能3”,那么您可以使用: http://example.com/mypage.php?function=3 : http://example.com/mypage.php?function=3等)。

這不是唯一的方法,有很多解決方案。 但這是簡單的方法,它將在本周末左右解決並可靠地工作,而不是一個需要花費數周時間才能解決問題並且永遠無法可靠工作的解決方案。

我在評論中建議“您可以使用共享內存”。 我不建議您這樣做。 它很難使用,並且您必須絕對確保數據是原子更新的,否則您將遇到“部分數據屬於一個更新,另一部分屬於較舊的更新”的問題,因此非常混亂。 您不想花費數天或數周的時間來使共享內存同步正常工作。 如果您確實需要在Web服務器和應用程序之間進行通信,我將使用某種形式的兩個(命名為?)管道並將請求發送至應用程序,然后將響應發送回去。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM