主頁(http://m.by236.com):基于嵌入式Web服務器的智能家居主控制系統設計(2) 圖5中,HTTPD服務器由main()函數開始,首先配置文件,設置用戶ID函數和組ID函數,通過getopt(argc,argv,"s:f:p:u:g:")函數獲取配置選項,讀取配置。其中:s為standalone服務器運行方式;f為config_fie即配置文件;p為端口號,HTTPD默認端口號為80;u為用戶ID即uid;g為組ID,即gid。 然后判斷是否工作在standalone.服務器運行方式上,如果是則運行standalone_main()函數,如果不是則訪問process request()函數。 如果服務器工作在standalone模式中,依據圖5的工作流程,首先客戶端與服務器建立鏈接,建立socket套接字。監聽鏈接,設置uid和gid,如果服務器沒接收到請求信息,繼續監聽;如果接收到請求信息,則創建子線程。子線程調用process_request()處理客戶端請求,服務器繼續監聽鏈接,如果客戶端請求信息,再創建子線程,調用process_request()處理客戶端請求,如此多線程并發處理客戶端請求。 在process_request()函數中,首先初始化當前時間,然后讀取并處理HTTP請求消息的方法Method字段,讀取HTTP請求消息的URL字段。主要通過strcpy_nocrlf(),getparents(),translate_name()這3個函數對HTIP請求消息的URL字段進行解析,依據宏LDGGING決定是否打開日志。最后調用send_note()發送請求的文件給客戶端。
2.3 Web服務器通信方案設計 CSP方案就是將C語言編寫的網絡和串口通信程序嵌入到HTML當中,這也是嵌入式網絡開發常用的方案。具體流程如下: (1)在定制內核的過程中需要將HTTPD服務器添加到Platform builder中,遵守HTTP的請求-應答規則。 (2)編寫CSP通信程序,通過PC機訪問Windows CE的Web服務器,打開串口,執行串口控制或網絡通信。直接將C語言嵌入到HTML/XML等模板文件中。CSP文件中HTML界面如實驗結果所示。通信程序主要函數為建立鏈接函數SetupConnection()用于建立鏈接設置DCB初始參數;打開串口函數open_serial()判斷是否打開設備串口、設置超時數值、緩沖區大小、創建監視線程等;讀數據命令read_respond()用于異步讀取緩沖區數據并顯示;發送命令send command()用于給設備指令。控制指令powcontrol_command()用于控制電源開關;微調函數adjcontrol_command()用于小幅調節設備功能,如光線明暗,溫度高低等;串口監控API函數WINAPICommWatchProc()用于串口緩沖區監控等。 (3)編寫好CSP通信文件后,用eyBuild開發包提供的CSP2BIN工具將CSP源文件生成C程序的源文件,再鏈接上eyBuild提供的CGI運行庫,在VC6.0中編譯就可生成在Windows CE平臺運行的CGI程序。該系統生成的CGI為Intelligenthome.cgi。 (4)將在\website\cgi-bin生成的Intelligenthome.cgi文件拷貝到Windows CE系統的\windows\www\文件夾下面,連接PC機便可從PC機訪問Windows CE系統,進而了解傳感器信號,控制家電。 該系統使用的數據庫為SQLite。SQLite數據庫存放家電的基本信息、參數值、狀態信息以及傳感器當前狀態等,這些信息不但反映各種參數的歷史狀態,而且也是管理、決策的重要信息來源。
3實驗結果
4結束語 (中國集群通信網 | 責任編輯:陳曉亮) |




