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