基于ZigBee的藥品庫存實時管理系統(tǒng)的設(shè)計與實現(xiàn)
2.2 ZigBee數(shù)據(jù)傳輸模塊
在本系統(tǒng)中,手持藥監(jiān)碼采集設(shè)備群以自組織形式構(gòu)成網(wǎng)絡(luò),并最終將數(shù)據(jù)傳送到與PC鏈接的數(shù)據(jù)基站,然后通過互聯(lián)網(wǎng)上傳至遠端的數(shù)據(jù)中心。結(jié)合藥房的實際使用情況,手持終端設(shè)備可能會有多個,所以ZigBee通信系統(tǒng)采用星形網(wǎng)絡(luò)結(jié)構(gòu)。星形結(jié)構(gòu)是一個輻射形狀的網(wǎng)絡(luò)結(jié)構(gòu),所有的數(shù)據(jù)都需要匯聚到中心節(jié)點(ZigBee協(xié)調(diào)器)而其他的節(jié)點之間不能進行數(shù)據(jù)通信,如圖3所示。本文引用地址:http://2s4d.com/article/153527.htm
在此網(wǎng)絡(luò)結(jié)構(gòu)中ZigBee協(xié)調(diào)器接收到終端節(jié)點的數(shù)據(jù)信息之后,首先對數(shù)據(jù)信息進行數(shù)據(jù)包解析,確認該信息為數(shù)據(jù)信息后對此信息負載進行提取,并將獲得的數(shù)據(jù)信息通過串口顯示到倉庫PC的系統(tǒng)當中。
ZigBee終端節(jié)點在網(wǎng)絡(luò)組建過程中擔任兩項工作:發(fā)起加入?yún)f(xié)調(diào)器所在的網(wǎng)絡(luò)請求;接收協(xié)調(diào)器的廣播信息并向協(xié)調(diào)器傳送藥監(jiān)碼數(shù)據(jù)。
(1)手持數(shù)據(jù)終端節(jié)點入網(wǎng)設(shè)計。終端節(jié)點上電初始化之后向整個ZigBee網(wǎng)絡(luò)發(fā)送信標(Beacon)請求,當協(xié)調(diào)器接收到信標響應(yīng)后,終端節(jié)點再對發(fā)送信標響應(yīng)的節(jié)點發(fā)送連接請求,協(xié)調(diào)器得到鏈接請求響應(yīng)正確,那么表示節(jié)點入網(wǎng)成功,負責,節(jié)點入網(wǎng)失敗,并且給出失敗提示。
(2)手持終端ZigBee節(jié)點數(shù)據(jù)發(fā)送設(shè)計。設(shè)計一個數(shù)據(jù)發(fā)送函數(shù),此函數(shù)負責應(yīng)用測(APL)與下層之間的參數(shù)和數(shù)據(jù)傳遞,數(shù)據(jù)傳輸格式為20位的藥監(jiān)碼。當終端在發(fā)送數(shù)據(jù)時,數(shù)據(jù)包自頂向下進行幀格式化,各層負責為其數(shù)據(jù)包添加各層數(shù)據(jù)包頭,最后到達PHY層將數(shù)據(jù)發(fā)送出去。
2.3 庫存管理系統(tǒng)模塊
2.3.1 開發(fā)語言及模式
上位機的庫存管理系統(tǒng)采用java語言編程,使用struts1.2框架,在My Eclipse中開發(fā)調(diào)試,對系統(tǒng)的設(shè)計如下:本系統(tǒng)結(jié)構(gòu)上采用3層B/S結(jié)構(gòu),前臺用戶顯示層使用JSP和Servlet在瀏覽器上實現(xiàn),中間使用Java Bean組件實現(xiàn)企業(yè)業(yè)務(wù)邏輯,后臺使用action完成用戶請求及相關(guān)操作跳轉(zhuǎn)。為了方便數(shù)據(jù)的存儲查詢,使用SQL Server2008數(shù)據(jù)庫,通過JDBC建立系統(tǒng)與數(shù)據(jù)庫的連接。
2.3.2 系統(tǒng)功能結(jié)構(gòu)
由系統(tǒng)的需求功能看,本系統(tǒng)主要分為4類用戶和5大模塊。4類用戶為:總管理員,省級管理員,市級管理員,分銷商管理員。5大模塊為:庫存信息管理模塊,分銷商信息管理模塊,藥品信息管理模塊,用戶信息管理模塊以及數(shù)據(jù)傳遞模塊。不同類型的用戶擁有不同的管理權(quán)限和子功能,其中總管理員擁有系統(tǒng)的最高權(quán)限。其中數(shù)據(jù)傳遞模塊為分銷商管理員特有模塊,用于從串口接受下位機傳遞的藥監(jiān)碼數(shù)據(jù),并進行相關(guān)判斷和處理后存入數(shù)據(jù)庫。串口通信應(yīng)用javax.comm.SerialPort類實現(xiàn),它用于描述一個RS 232串行通信端口的底層接口,定義了串口通信所需的最小功能集。用戶可以直接對串口進行讀、寫及設(shè)置操作。串口通信應(yīng)用程序采用事件監(jiān)聽模式,實現(xiàn)Serial Port Event Listener接口,當串口有數(shù)據(jù)到達時,可以在serialEvent中接收并處理所收到的數(shù)據(jù)。
系統(tǒng)中的庫存查詢界面采用級聯(lián)下拉列表形式,通過Java Script實現(xiàn)動態(tài)鏈接。庫存查詢結(jié)果頁面采用Ajax技術(shù)實現(xiàn)實時刷新功能。在Ajax中主要通過XMLHttpRequest對象處理發(fā)送異步請求和回應(yīng),創(chuàng)建前要先確定用戶當前使用的瀏覽器類型,然后根據(jù)瀏覽器類型創(chuàng)建合適的XMLHttpRequest對象,調(diào)用指定方法,最終通過Java Script將內(nèi)容設(shè)置到指定的顯示區(qū)域。
2.3.3 數(shù)據(jù)庫結(jié)構(gòu)
根據(jù)本藥品庫存管理系統(tǒng)需求,圖4所示為數(shù)據(jù)庫信息表的關(guān)系結(jié)構(gòu)。各個數(shù)據(jù)表之間通過不同列建立關(guān)聯(lián),實現(xiàn)多個數(shù)據(jù)表的聯(lián)合查詢。
(1)藥品-庫存-分銷商。PC機串口接收藥品信息后,系統(tǒng)在藥品信息表中查詢對應(yīng)的產(chǎn)品信息,并檢索庫存信息表,修改相應(yīng)庫存狀態(tài),或添加新記錄。
用戶查詢庫存信息時,系統(tǒng)根據(jù)所選用戶的編號檢索庫存信息表,按照藥品產(chǎn)品編號分類,統(tǒng)計各包裝級別的庫存數(shù)量。
(2)用戶一分銷商。用戶表中存儲用戶的類型及管理范圍,登錄時,系統(tǒng)根據(jù)用戶類型進入不同的主界面,根據(jù)用戶的管理范圍顯示不同的管理功能。其中分銷商和管理員之間為一對一關(guān)系。
(3)分銷商-市-省。分銷商信息表,市信息表,省信息表通過編號相互關(guān)聯(lián),構(gòu)成一個3級下拉列表菜單。
評論