DIY寶典:用智能硬件BB-Black搭建狂拽炫酷的遠程醫療監測系統
2.遠程監控功能實(shí)現
本文引用地址:http://dyxdggzs.com/article/278337.htm系統以BB-black為平臺,提供用戶(hù)遠程登錄訪(fǎng)問(wèn)嵌入式Web服務(wù)器Boa,查看該服務(wù)器上的被監護人近期生理數據功能;為了實(shí)現數據存放功能,作者針對嵌入式設備,采用開(kāi)銷(xiāo)小、可移植性強、便使用且高效的嵌入式SQLite數據庫。而CGI(Common Gateway Interface)通用網(wǎng)關(guān)接口,則是Web服務(wù)器和SQLite數據庫之間的橋梁,作為客戶(hù)端與Web服務(wù)器交互的標準接口,可按照該標準編寫(xiě)應用程序實(shí)現靜態(tài)HTML網(wǎng)頁(yè)無(wú)法實(shí)現的數據庫訪(fǎng)問(wèn)和搜索功能,實(shí)現客戶(hù)端與服務(wù)器的交互操作。其工作原理如下圖5所示。

圖5遠程監控模塊軟件構成與工作原理
首先,由客戶(hù)端通過(guò)瀏覽器向服務(wù)器發(fā)起請求,嵌入式Web服務(wù)器端收到請求后觸發(fā)指定的腳本程序對請求進(jìn)行解析,并執行相應的CGI應用程序。
其次,CGI應用程序根據請求信息調用相應的SQLite數據庫操作程序,并把數據庫操作程序的執行結果以HTML文檔形式傳遞給Web服務(wù)器;嵌入式Web服務(wù)器分析、處理HTML文檔信息,并將最終數據內容傳送給客戶(hù)端瀏覽器。
最后,由客戶(hù)端瀏覽器對數據內容進(jìn)行解析,并以網(wǎng)頁(yè)形式顯示給客戶(hù)。
2.1嵌入式Web服務(wù)器Boa
2.1.1嵌入式服務(wù)器Boa的選用
ARM Linux開(kāi)發(fā)環(huán)境下支持httpd、thttpd和Boa三種嵌入式Web服務(wù)器。作者選用的是可執行文件小、運行過(guò)程中需要的資源小的嵌入式Web服務(wù)器Boa.
Boa作為一種單任務(wù)的HTTP服務(wù)器,通過(guò)建立HTTP請求列表來(lái)處理多路HTTP連接請求,同時(shí)在處理請求過(guò)程只為CGI程序創(chuàng )建新進(jìn)程,在最大程度上節省了系統資源,對嵌入式系統來(lái)說(shuō)至關(guān)重要。同時(shí)它還具有自動(dòng)解壓文件、生成目錄等功能。
2.1.2 Boa功能實(shí)現
設計中Boa服務(wù)器需實(shí)現接收客戶(hù)端請求、分析請求、響應請求和向客戶(hù)端返回請求結果等任務(wù)。其工作流程如下圖5所示。

圖6 Boa服務(wù)器工作流程
Boa服務(wù)器初始化工作代碼實(shí)現:

上述代碼首先創(chuàng )建一個(gè)無(wú)阻塞的流式套接字描述符socktfd,提供面向連接的可靠傳輸。然后利用bind()函數將指定端口與套接字描述符關(guān)聯(lián),最后利用listen()函數在指定端口監聽(tīng),等待Request請求。
當監聽(tīng)到連接請求,服務(wù)器調用get_request()函數獲取請求信息,利用accept()函數建立連接,接收請求、分析信息,進(jìn)行HTTP認證確認,處理請求信息,并將結果發(fā)送、顯示到Web瀏覽器;當有CGI請求時(shí),創(chuàng )建CGI處理進(jìn)程,并將處理結果發(fā)送、顯示到Web瀏覽器。
2.1.3 Boa在A(yíng)RM上的移植
首先,針對BB-Black和實(shí)際應用場(chǎng)景對Boa服務(wù)器源代碼作以下修改:(1)根據監護人數量指定HTTP請求列表限制參數;將服務(wù)器的輸入輸出緩存空間設為最大值,以加快生理數據傳輸速度;(2)通過(guò)編寫(xiě)實(shí)現一些簡(jiǎn)單函數,來(lái)精簡(jiǎn)Linux操作系統庫函數,節約資源。
其次,利用arm-linux-gcc交叉編譯環(huán)境,配置生成大小為175.8KB的boa可執行程序。通過(guò)bin.arm-linux-strip boa指令剝去附帶的編譯信息,得到僅59.4KB的ARM平臺可執行文件。
最后,通過(guò)修改Web服務(wù)器的配置文件boa.conf:監聽(tīng)端口為80,注釋掉綁定IP地址設置欄,KeepAliveMax值為50,KeepAliveTimeout值為10,服務(wù)器名字為www. RemoteMedicalMonitoringSystem.com;以及CGI路徑,訪(fǎng)問(wèn)日志和錯誤日志的存放路徑等運行參數;將該配置文件和可執行文件boa放到BB-Block平臺的/home/www目錄下;執行g(shù)enromfs-f romfs.img-d romdisk命令生成一個(gè)含有Boa服務(wù)器的根文件系統,通過(guò)bootloader燒寫(xiě)到存儲器。完成Boa到ARM平臺的移植。
2.2 CGI與SQLite數據庫移植
BB-Black開(kāi)發(fā)板在運行CGI和SQLite程序前,需要將相應的庫移植到開(kāi)發(fā)板。設計通過(guò)交叉編譯之后將CGI的libcgic.a和capture拷貝到BB-black開(kāi)發(fā)板的/home/www/cgi-bin目錄下,完成移植工作(可通過(guò)網(wǎng)頁(yè)訪(fǎng)問(wèn)該目錄,若在網(wǎng)頁(yè)上顯示cgic test的字樣,則表明cgi庫移植成功);將SQLite的sqlite3和libsqlite3.so.0.8.6分別下載到BB-black開(kāi)發(fā)板的/usr/bin和/usr/lib目錄中并通過(guò)ln–s /usr/lib/libsqlite3.so.0.8.6 /usr/lib/libsqlite3.so.0命令,建立軟連接(因為可執行程序sqlite3在運行的時(shí)候搜尋libsqlite3.so.0動(dòng)態(tài)庫),完成移植工作。
2.3遠程監控功能實(shí)現
2.3.1 HTML設計
遠程醫療監控界面主要有監護人登錄界面和被監護人生理數據監測界面。其中脈搏和心跳監測HTML頁(yè)面首行代碼用action="pluse_heart_monitor.cgi"將表單指向pluse_heart_monitor.cgi處理程序,method="get"指定獲取環(huán)境變量的方式為get;程序的最后幾行用type="submit"或type="reset"指定點(diǎn)擊這兩個(gè)按鈕時(shí)提交表單;其他生理數據監測頁(yè)面與此相似。
2.3.2 CGI和SQLite數據庫互動(dòng)設計
CGI與SQLite數據的互動(dòng)主要包括CGI程序在SQLite數據庫上建立生理數據表,插入生理數據;CGI按照表單提交內容對數據表進(jìn)行增刪改查詢(xún)操作;其主要的控制函數代碼如下:

評論