新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 利用BB-Black設計的遠程醫療監測智能硬件

        利用BB-Black設計的遠程醫療監測智能硬件

        作者: 時間:2016-09-12 來源:網絡 收藏

        2.1.2 Boa功能實現

        設計中Boa服務器需實現接收客戶端請求、分析請求、響應請求和向客戶端返回請求結果等任務。其工作流程如下圖6所示。

        5.jpg

        Boa服務器初始化工作代碼實現:

        6.jpg

        上述代碼首先創建一個無阻塞的流式套接字描述符socktfd,提供面向連接的可靠傳輸。然后利用bind()函數將指定端口與套接字描述符關聯,最后利用listen()函數在指定端口監聽,等待Request請求。

        當監聽到連接請求,服務器調用get_request()函數獲取請求信息,利用accept()函數建立連接,接收請求、分析信息,進行HTTP認證確認,處理請求信息,并將結果發送、顯示到Web瀏覽器;當有CGI請求時,創建CGI處理進程,并將處理結果發送、顯示到Web瀏覽器。

        2.1.3 Boa在ARM上的移植

        首先,針對和實際應用場景對Boa服務器源代碼作以下修改:(1)根據監護人數量指定HTTP請求列表限制參數;將服務器的輸入輸出緩存空間設為最大值,以加快生理數據傳輸速度;(2)通過編寫實現一些簡單函數,來精簡Linux操作系統庫函數,節約資源。

        其次,利用arm-linux-gcc交叉編譯環境,配置生成大小為175.8KB的boa可執行程序。通過bin.arm-linux-strip boa指令剝去附帶的編譯信息,得到僅59.4KB的ARM平臺可執行文件。

        最后,通過修改Web服務器的配置文件boa.conf:監聽端口為80,注釋掉綁定IP地址設置欄,KeepAliveMax值為 50,KeepAliveTimeout值為10,服務器名字為www. RemoteMedicalMonitoringSystem.com;以及CGI路徑,訪問日志和錯誤日志的存放路徑等運行參數;將該配置文件和可執行文件boa放到BB-Block平臺的/home/www目錄下;執行genromfs-f romfs.img-d romdisk命令生成一個含有Boa服務器的根文件系統,通過bootloader燒寫到存儲器。完成Boa到ARM平臺的移植。

        2.2 CGI與SQLite數據庫移植

        開發板在運行CGI和SQLite程序前,需要將相應的庫移植到開發板。設計通過交叉編譯之后將CGI的libcgic.a和 capture拷貝到BB-black開發板的/home/www/cgi-bin目錄下,完成移植工作(可通過網頁訪問該目錄,若在網頁上顯示cgic test的字樣,則表明cgi庫移植成功);將SQLite的sqlite3和libsqlite3.so.0.8.6分別下載到BB-black開發板的/usr/bin和/usr/lib目錄中并通過ln –s /usr/lib/libsqlite3.so.0.8.6 /usr/lib/libsqlite3.so.0命令,建立軟連接(因為可執行程序sqlite3在運行的時候搜尋libsqlite3.so.0動態庫),完成移植工作。

        2.3 遠程監控功能實現

        2.3.1 HTML設計

        遠程醫療監控界面主要有監護人登錄界面和被監護人生理數據監測界面。其中脈搏和心跳監測HTML頁面首行代碼用 action=“pluse_heart_monitor.cgi”將表單指向pluse_heart_monitor.cgi處理程序,method=“get”指定獲取環境變量的方式為get;程序的最后幾行用type=“submit”或type=“reset”指定點擊這兩個按鈕時提交表單;其他生理數據監測頁面與此相似。

        2.3.2 CGI和SQLite數據庫互動設計

        CGI與SQLite數據的互動主要包括CGI程序在SQLite數據庫上建立生理數據表,插入生理數據;CGI按照表單提交內容對數據表進行增刪改查詢操作;其主要的控制函數代碼如下:

        7.jpg

        其中getcgidata()實現GET和POST兩種方式從網頁獲取字符串函數;若為””“GET”方式,則通過 getenv(“QUERY_STRING”)函數獲取字符串函數;若為“POST”方式,首先用 atoi(getenv(“CONTENT_LENGTH”))函數獲取字符串長度,再利用(char)fgetc(stdin)函數依次獲取單個字符。

        通過getcgidata()函數從網頁獲取的字符串中各數據項由‘’符號隔開,getstringdata()函數則是去掉‘’符號,提取有效信息,為select_pluse_spo2()函數對SQLite數據庫執行查詢操作提供參數。

        select_pluse_spo2()函數以getstringdata()函數得到的有效信息為參數,執行打開數據庫、查詢數據、向網頁打印數據操作。部分功能實現代碼:

        8.jpg

        3 參數發送和接受功能的設計

        3.1 數據采集模塊功能實現

        生理數據采集模塊,由數據監測模塊和無線傳感節點ZigBee組成。數據監測模塊負責采集數據,ZigBee節點負責接收、解析和傳輸數據;解析過程根據監測項目調用相應的子程序(如:測血氧、脈搏、體溫等);傳輸數據時終端節點和非終端節點分別調用向串口發送子程序和發射子程序。具體的實現程序流程如下圖7所示。

        9.jpg

        3.2 ARM板上生理數據接收功能實現

        在ARM板上首先打開串口,然后配置發短信所需的串口參數,并初始化接收緩沖區,開始循環讀串口數據包;當讀取到數據,就對數據包進行分析,獲取包中隱含的血氧飽和度和脈搏值;并進行健康監測(按照健康生理指標監測),如果獲取的生理數據不正常就會向監護人手機發送短信(包含相應的生理數據和健康狀況說明);最后將生理數據包轉化為16進制數存入文檔。具體的處理流程如下圖8所示。

        10.jpg

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 罗甸县| 彰化市| 商丘市| 苍溪县| 望江县| 大洼县| 隆安县| 伊吾县| 朝阳市| 通化市| 江安县| 西城区| 宜兰市| 阿尔山市| 德格县| 贵阳市| 星座| 林西县| 中山市| 藁城市| 墨江| 翼城县| 六枝特区| 延安市| 新泰市| 包头市| 桑日县| 青浦区| 六枝特区| 望城县| 涞水县| 富顺县| 隆尧县| 南乐县| 子洲县| 奇台县| 龙山县| 和龙市| 武乡县| 揭西县| 平邑县|