電話:13691762133
手機:13691762133
郵件:andy@ownlikes.cn
QQ:317779813
地址:深圳市龍華新區(qū)觀瀾大道35號1棟3樓
網址 : greezubamboo.cn
在前面的系統分析與設計基礎之上,本節(jié)對基于RFID的數字化卷煙倉庫管理系統進行了部分模塊的開發(fā)工作。下面將詳細闡述數字化卷煙倉庫管理系統中的服務器消息處理子系統、出庫管理模塊和叉車電子貨位導航系統三個部分的開發(fā)。
1、系統開發(fā)工具
本系統采用Java開發(fā)平臺和Eclipse開發(fā)工具中提供的RCP框架設計,而數據庫采用SQL Server 2005。
Java編程語言是一個簡單的、面向對象、分布式、健壯、安全與系統無關、可移植高性能、多線程和動態(tài)的語言。Java的跨平臺性使得開發(fā)出的基于RFID的數字化卷煙倉庫管理系統可以在不同的系統上使用,這樣在以后可以方便地進行系統的擴展和二次開發(fā)。
(2)主控機客戶端通過TCP協議向服務器端發(fā)送請求和指令;
(3)叉車客戶端通過TCP協議向服務器端發(fā)送請求,查詢指令;
(4)叉車客戶端通過TCP協議向服務器端發(fā)送指令狀態(tài)信息;
(5)服務器接收到叉車客戶端傳來的指令狀態(tài)信息后,更改服務器上儲存指令的狀態(tài),然后以組播的方式向各個客戶端廣播指令狀態(tài)信息;
(6)主控機客戶端和叉車客戶端接收到組播后,更新本機界面上的狀態(tài)。
綜上所述,服務器消息處理子系統具有客戶端登錄驗證和消息儲存轉發(fā)兩項基本功能。下面將分別實現這兩項功能。
1.客戶端登錄驗證功能
服務器消息處理子系統客戶端登錄驗證功能實現的界面,可以看見當前的一個IP為192.168.1.13的主控機正登錄進來。
服務器消息處理子系統客戶端登錄驗證功能實現的界面
客戶端登錄驗證功能的代碼如下:
在上面的代碼中,線程thread用于監(jiān)聽客戶端的連接。當客戶端連接服務器時,線程thread監(jiān)聽到請求后,驗證登錄客戶端的用戶名和密碼,按照TCP協議建立連接線程talk用于客戶端和服務器端的交互。線程talk在客戶端和服務器建立TCP后啟動,建立數據的輸入和輸出流,并和客戶端進行一對一的TCP交互。
2.消息儲存轉發(fā)功能
服務器消息處理子系統的消息儲存轉發(fā)功能有兩種工作方式:當叉車發(fā)送查詢請求時,將儲存的客戶端發(fā)來的指令發(fā)送給叉車;對叉車發(fā)來的指令狀態(tài)信息或LED顯示屏信息的消息進行組播,將其傳遞給各個客戶端,客戶端再按照指令狀態(tài)信息或LED顯示屏信息進行刷新指令,監(jiān)控界面指令狀態(tài)或更新LED顯示屏信息。消息儲存轉發(fā)功能的代碼如下:
2、出庫管理模塊的實現
出庫管理模塊用來完成出庫的各種操作,如出庫單據的管理、出庫貨位的分配、出庫指令的生成及監(jiān)控。出庫單據的管理功能主要是指完成單據的導入/手工錄入,未處理單據的修改和刪除。系統界面中會顯示所有當日未處理的單據,并可以對顯示單據進行修改。在完成單據的生成后,就需要使用出庫貨位分配功能。出庫貨位分配需要按照一定的規(guī)則進行。這些規(guī)則要實現優(yōu)先出暫存區(qū),防止暫存區(qū)堆積;貨位的先進先出,防止貨物積壓;出庫貨位少,提高作業(yè)效率等目標。實現出庫貨位分配的界面如圖所示。界面上矩形框標出來的地方是系統按照出庫貨位分配規(guī)則分配的貨位。在庫管認為貨位不合理時,系統也提供手工修改分配貨位的功能,由此可提高系統的靈活性。出庫貨位分配界面中分配的貨位是按出庫貨位算法得出的。
出庫貨位分配規(guī)則的核心有以下幾個方面。
(4)出庫指令的生成及監(jiān)控功能:出庫貨位核對,生成作業(yè)指令和指令監(jiān)控。主控機在開啟時,便已和服務器端建立TCP連接,使用TCP協議將指令傳到服務器上,便于叉車查詢,指導叉車到指定的貨位作業(yè)。系統保證了貨物的先進先出,使用算法優(yōu)先出同品牌的、入庫時間早的卷煙。
4、 叉車電子貨位導航子系統的實現
4、1.叉車客戶端通信模塊的實現叉車的客戶端通信模塊需要兩種通信模式:和服務器一對一的交互;接收服務器組播的消息。
連接服務器時調用的函數代碼如下:
這段代碼的功能是:在叉車電子貨位導航子系統運行時,將建立與服務器的TCP連接,用于叉車客戶端查詢服務器消息處理系統儲存的出/入庫指令,以及向服務器發(fā)送指令狀態(tài)和LED屏所需信息。同時開辟一個線程監(jiān)聽服務器組播的消息,用于更新指令狀態(tài)。
4、2.叉車電子貨位導航模塊的實現
叉車電子貨位導航模塊的功能是指導叉車司機的作業(yè),給叉車司機進行直觀的電子貨位圖導航。叉車電子貨位導航子系統導航模塊的執(zhí)行流程如圖所示。
叉車司機打開叉車計算機后,叉車計算機會自動運行叉車電子貨位導航子系統。單擊“查詢”后,叉車電子貨位導航子系統會從服務器上查詢出所有的指令。
叉車電子貨位導航模塊的核心問題有以下幾個方面。
1)叉車指令樹表中指令狀態(tài)的互鎖問題
2)叉車指令優(yōu)先級算法
叉車指令選擇界面如圖所示,框中的指令即為在展開樹形指令表時指令優(yōu)先級算法自動選中的指令。
在選中一項作業(yè)后,叉車電子貨位導航子系統的指令優(yōu)先級算法會自動算出優(yōu)先級最高的指令。叉車上查詢到的指令是同出庫貨位分配的貨位順序相同;在出庫貨位分配時,分配的貨位是按照貨位地址降序排列的。因此,出庫第一條狀態(tài)為“未處理”的指令優(yōu)先級最高。在選中一條指令時,會完成下列動作:將指令選擇界面上的指令狀態(tài)改為“正在處理”;將指令的背景顏色改為黃色;將“正在處理”的指令狀態(tài)發(fā)送給服務器。叉車指令優(yōu)先級算法的代碼如下:
上述代碼中的search()方法用于將樹形指令表展開,查找第一條未完成的指令并選中,然后發(fā)送“正在處理”的指令狀態(tài)給服務器組播并使選中的指令背景顏色為黃色。recover()方法用于還原指令狀態(tài),即把先前選中的指令狀態(tài)改為“未處理”,并發(fā)送給服務器組播。在選中指令,單擊“執(zhí)行”后,會出現電子貨位地圖界面,如圖所示。
(2)S[6]=“2”:表示庫區(qū)的最后一條,LED屏幕由動態(tài)作業(yè)信息變成靜態(tài)庫存信息。
(3)S[6]=“3”:表示中間的指令,LED屏幕由動態(tài)作業(yè)信息變成動態(tài)作業(yè)信息,刷新數量。
(4)S[6]=“4”:庫區(qū)的最后一條,同時又是通道的第一條,也就是說該庫區(qū)的該通道只有一條指令。S[6]的具體算法流程如圖所示。
如圖=所示是基于RFID的數字化倉庫管理系統在一號成品庫的運行實景圖。
該系統實現了以托盤為單位的可視化的電子貨位管理、貨物先進先出,自 動的出入庫管理和實時庫存信息查詢,并通過電子顯示屏顯示庫區(qū)貨位信息及其產品信息。同時,它在數字化倉庫管理系統的基礎上,通過各種網絡建立了實時的物流信息共享平臺,可實現物流信息的共享。