2010-07-23 36 views
0

我已被分配用於升級用C編寫的嵌入式應用程序。該應用程序通過Web界面進行配置。將http表單值傳遞給C程序

當用戶修改Web應用程序時,文件被寫入/var/www/settings.json,文件/var/www/UPDATE_SETTINGS被觸摸。

在主應用程序循環中,它檢查是否存在UPDATE_SETTINGS。如果是這樣,它使用json-c解析settings.json,然後刪除UPDATE_SETTINGS

但是,我們更喜歡移動到事件驅動的架構(可能是libev),其中settings.json直接由webapp腳本提供給一個普通的舊UDP端口,然後發出回調來執行更新。

有什麼其他優雅的方法來解決這個問題?我們應該堅持目前的做法嗎?

回答

1

只需使用inotify。它是爲像您這樣的病例而創建的。

+0

我想這會工作得很好。謝謝。 – CoolAJ86 2010-08-19 17:31:08

0

我在這裏做一些假設。

1)您連接到互聯網一直與您的嵌入式設備。 2)你的設備可以設置像「USART RX緩衝區不爲空」的事件中斷

注意:根據你使用的是什麼樣的硬件,你可以在ping和其他東西上設置中斷,這可能是另一種中斷嵌入式設備的方式。

如果這兩個假設是正確的,你可以這樣做,在服務器或計算機上的另一個「腳本」監視/var/www/settings.json的變化,你可以使用類似rsync的東西來監視變化。這個「腳本」當它發現json文件發生變化時,將使用tcp/ip與嵌入式設備通信,您可以ping設備或直接發送文件。如果您可以在嵌入式設備上設置USART中斷,那麼設備將能夠檢測進入的數據,因此通過讀取您發送或去網站的數據來下載要解析的json文件來作出響應。

這樣你將有一個事件驅動嵌入式設備,它不會浪費時間檢查這個json文件是否已經改變。

我希望這有助於

+0

Web應用程序用於配置。該設備不經常連接到「互聯網」。但是,我們確實有第三方向設備上的Web應用程序發佈POST以更改其自己的應用程序的設置。 – CoolAJ86 2010-07-23 23:11:07

+0

設備有什麼樣的連接? 有什麼辦法可以讓它連接? – jramirez 2010-07-27 19:51:28