傅 偉,蔣道霞,安業(yè)品
(江蘇財經職業(yè)技術學院 機械電子與信息工程學院,江蘇 淮安 223003)
倉儲在現(xiàn)代物流業(yè)和制造業(yè)中扮演著重要的角色,對于加速貨物流通和生產決策起著重要的作用[1-3]。傳統(tǒng)對倉儲管理依賴于手工處理,產品的入庫、出庫等信息都需要手工進行統(tǒng)計,然后錄入系統(tǒng)中,系統(tǒng)雖然能夠起到一定的管理作用,但是由于大量的工作都需要手工去完成,系統(tǒng)只是單純地起到記錄數(shù)據(jù)的作用,另外對于倉儲的環(huán)境更是無法做到實時監(jiān)測,然而在倉儲中對環(huán)境監(jiān)測也顯得比較重要,大部分貨物怕潮,有些貨物甚至對溫度也有嚴格要求,僅靠人工管理無法做到實時監(jiān)控的要求。隨著物聯(lián)網的興起,利用ZigBee技術、RFID技術等可以將實物與互聯(lián)網聯(lián)接起來,通過上位機軟件進行實時監(jiān)控,即省時又省力,因此結合物聯(lián)網和移動互聯(lián)網實現(xiàn)智能倉儲管理成為可能。
系統(tǒng)能夠實現(xiàn)對倉儲環(huán)境的溫濕度、光照度、空氣質量、煙霧等進行監(jiān)測,同時能對貨物的出庫、入庫進行實時記錄,通過系統(tǒng)了解各類貨物庫存情況以及所處位置。在環(huán)境監(jiān)測方面主要采用ZigBee網絡進行部署,收集倉儲環(huán)境實時信息并傳入系統(tǒng)服務器;利用 RFID技術進行實時采集貨物信息,其整體架構如圖1所示,ZigBee結點主要進行環(huán)境監(jiān)測,在倉儲的不同位置放置若干ZigBee節(jié)點,對倉儲的溫濕度、光照度、PM 值、煙霧進行監(jiān)測,通過ZigBee網絡將數(shù)據(jù)傳送到系統(tǒng)服務器,服務器根據(jù)監(jiān)測到的數(shù)據(jù)通過移動互聯(lián)網,將數(shù)據(jù)推送至移動客戶端并提醒用戶,若環(huán)境變量數(shù)值超出預先設置的閾值,系統(tǒng)將作出相應的處理,使倉儲環(huán)境變量值處于正常范圍。倉儲中的貨物均貼上 RFID標簽,當貨物經過 RFID讀寫器時,貨物中的相關信息自動被讀入數(shù)據(jù)庫系統(tǒng)中,全程無需人工干預,大大提高了工作效率。限于篇幅,本文主要從Android移動客戶端的設計與實現(xiàn)進行深入研究。
系統(tǒng)整體架構Fig.1 S ystem overall architecture
系統(tǒng)主要分為以下幾個模塊:環(huán)境監(jiān)測、煙霧報警、貨物入庫管理、貨物出庫管理、貨物庫存查詢等。環(huán)境監(jiān)測主要由溫濕度和光照度等節(jié)點構成,在倉庫的每個角落均放置有相應的傳感器,實時采集溫濕度和光照度,根據(jù)不同的貨物存儲要求,控制合適的溫濕度和光照度。防火報警節(jié)點主要采集煙霧信息,當倉庫里有煙霧異常時,啟動報警器,打開通風設備,同時通過服務器端將報警信息推送至客戶端;通過視頻監(jiān)控節(jié)點采集人臉信息,實現(xiàn)防盜報警,當倉庫里有人入侵時,通過人臉識別模塊,啟動報警器,同時通過服務器端將警報信息推送到移動客戶端。貨物入庫管理主要通過 RFID標簽和RFID讀寫器實現(xiàn),貨物入庫時RFID讀寫器自動對貨物上的 RFID標簽進行讀取,貨物的入庫信息經智能網關定時上傳至系統(tǒng)服務器中,其信息主要包括貨物名稱、貨物產地、貨物入庫操作員名稱、貨物入庫時間等;通過 RFID設備對貨物出庫信息經智能網關定時上傳至系統(tǒng)服務器中。另外如果需要了解貨物庫存情況,通過輸入貨物編號,可以通過系統(tǒng)查看貨物的總庫存量、日入庫量、入庫價格、日出庫量、出庫價格等相關信息,系統(tǒng)功能模塊如圖2所示。
根據(jù)系統(tǒng)要求,數(shù)據(jù)庫中主要有:用戶表、貨物表、設備表。用戶表主要用于用戶管理,根據(jù)所屬的權限的不同,擁有對系統(tǒng)操作的不同權限,如表1所示;貨物表主要用于存儲貨物信息,表中包括貨物編號、貨物名稱、貨物產地等信息,如表 2所示;設備表主要用于存儲各環(huán)境結點所采集的信息,表中包括設備編號、設備類型、設備相關數(shù)據(jù)、設備更新時間等信息,如表3所示。
2.3.1 頁面布局設計
為了使頁面設計比較靈活,系統(tǒng)中的頁面大都采用混合布局,在最外層通過 RelativeLayout進行布局,頁面內每個部分再用LinearLayout進行布局,結構顯得比較美觀。為了簡化設計有些部分可以單獨用一個布局文檔來設計,然后在其它文檔中通過include語句將其包括進來,這樣可以重復利用已經設計好的布局,比如在每個界面中都有“返回”按鈕,先單獨設計其布局界面如下:
圖2 系統(tǒng)功能模塊Fig.2 Sy stem function module
表1 用戶信息表Tab.1 Use r information table
表2 貨物表Tab.2 Goods table
表3 設備表Tab.3 Equipme nt table
在主界面中只需要將其包括進來即可,無需重復設計相同界面,其引用代碼如下:
2.3.2 數(shù)據(jù)庫操作設計
利用 DatabaseHelper類訪問數(shù)據(jù)庫,Database-Helper是訪問SQLite的助手類,提供兩個方面的功能,其一通過 getReadableDataBase( )、getWriteableData( )兩個方法獲得SQLiteDatabase對象,其二通過提供了 onCreate( )和 onUpgrade( )兩個回調函數(shù),允許用戶在創(chuàng)建和升級數(shù)據(jù)庫時進行相應的操作。為了提高移動端系統(tǒng)運行效率,啟動系統(tǒng)時將服務器端數(shù)據(jù)同步到移動端SQLite數(shù)據(jù)庫中,從而減少網絡數(shù)據(jù)流量。獲取 DatabaseHelper對象和Sqlite對象代碼如下:
SqliteDBHelper dbHelper = new SqliteDBHelper(context, "zncc.db");//獲取助手類對象
Sqlite rSqlite = dbHelper.getReadableDaoTool();//通過助手類對象獲取SQLite對象
Sqlite wSqlite = dbHelper.getWritableDaoTool();//通過助手類對象獲取SQLite對象
2.3.3 采用JSON數(shù)據(jù)解析
在網絡傳輸中JSON是一種比較好的數(shù)據(jù)交換格式,相比 XML能夠減少很多冗余字符,最大限度地提高網絡傳輸效率[4-6]。JSON具有比較簡潔和清晰的語法結構,比較容易編寫,同時解析也比較方便,在將數(shù)據(jù)傳送到系統(tǒng)服務器中主要采用JSON解析數(shù)據(jù),貨物相關信息都封裝成 JSON對象,相關代碼如下:
在Android應用中經常會有些比較耗時的操作,比如網絡連接或者上傳下載文件操作[7-10]。這些操作如果都在一個主線程中開啟,在網絡連接不佳的情況下,主線程很有可能卡死,用戶體驗極其不佳,為了獲得比較好的用戶體驗,必須重新開啟線程,在貨物入庫、出庫等功能模塊中均開啟了線程,達到比較好的用戶體驗效果,系統(tǒng)中采用 Android中已封裝的 AsyncTask類進行多線程操作,在AsyncTask類中主要有 onPreExecute( )、doInBackground(Params… params)、onProgressUpdate(Progress… values)、onPostExecute(Result result)等方法。當需要完成一些準備工作時,首先調用 onPre-Execute( )方法;執(zhí)行的后臺任務均寫在 doInBackground(Params… params)中,publishProgress 調用onProgressUpdate(Progress… values),表示任務進度更新;在后臺任務執(zhí)行完畢后,調用 onProgressUpdate(Progress… values)方法,參數(shù)為后臺任務返回結果。doInBackground(Params… params)方法由AsyncTask內部線程池執(zhí)行,其它方法均在主線程中執(zhí)行。
本系統(tǒng)在Android 4.4.2環(huán)境下進行開發(fā),采用Android Developer Tools集成開發(fā)工具進行實現(xiàn),開發(fā)硬件平臺為CPU主頻2.5GHz、內存8G,限于篇幅,只展示系統(tǒng)的部分界面,如圖3所示。
圖3 系統(tǒng)部分界面Fig.3 S ystem part interface
倉儲是現(xiàn)代物流業(yè)和制造業(yè)儲存貨物的重要場所,實現(xiàn)倉儲智能化是現(xiàn)代信息技術發(fā)展的必然要求[11-15]。隨著物聯(lián)網和移動互聯(lián)網的快速發(fā)展,智能倉儲已經逐步在大中型企業(yè)開始應用。本文從系統(tǒng)體系結構、系統(tǒng)設計、系統(tǒng)實現(xiàn)等環(huán)節(jié)進行探索,實現(xiàn)了基于 Android的移動端智能倉儲平臺,經過測試,系統(tǒng)性能達到了設計要求。
[1] 蔣玉芳. 基于Android的倉庫管理系統(tǒng)的設計與實現(xiàn)[J].科技廣場, 2017, (5): 49-52.
[2] 李光革, 苗建松. 基于Android的物聯(lián)網環(huán)境監(jiān)控應用設計與實現(xiàn)[J]. 軟件, 2013, 34(9): 32-35.
[3] 杜曉萌, 唐碧華, 吳帆. 基于Android終端的物聯(lián)網物流管理系統(tǒng)的設計與實現(xiàn)[J]. 軟件, 2013, 34(12): 26-31.
[4] 曹小陽. 基于物聯(lián)網RFID技術的智能倉儲系統(tǒng)的設計與實現(xiàn)[J]. 現(xiàn)代信息科技, 2017, 1(5): 75-77.
[5] 陳燕. 基于云計算技術的智能倉儲管理系統(tǒng)設計與實現(xiàn)[J].自動化與儀器儀表, 2016, (11): 160-162.
[6] 賈興葦, 王丹志. 基于Android 的出租車智能管理系統(tǒng)的研究與設計[J]. 軟件, 2016, 37(1): 38-43.
[7] 郭鵬, 周俊, 胡慧. 智能倉儲管理系統(tǒng)的設計與實現(xiàn)[J].湖南工程學院學報, 2016, 26(3): 42-45.
[8] 蘇誠, 許朋剛, 代志良. 智能倉儲系統(tǒng)設計與開發(fā)應用[J].機械, 2017, 44(10): 65-71.
[9] 王亞東, 雷靈光, 周健, 等. Android 移動設備管理系統(tǒng)的設計與實現(xiàn)[J]. 軟件, 2016, 37(2): 11-16.
[10] 葛俊峰, 戈華. 基于ZigBee無線傳輸技術的智能倉儲系統(tǒng)設計[J]. 內蒙古師范大學學報(自然科學漢文版), 2015,44(1): 49-52.
[11] 李華忠, 梁永生. Android高級應用編程實踐[M]. 北京: 中國鐵道出版社, 2015: 233-255.
[12] 鄭家宋, 孟瑋. 基于物聯(lián)網的煤礦智能倉儲與物流運輸管理系統(tǒng)設計與應用[J]. 工礦自動化, 2015, 41(8): 108-111.
[13] 劉烈君. 基于云計算技術的智能倉儲管理系統(tǒng)設計研究[J].數(shù)字通信世界, 2016, (10): 11-13.
[14] 張曉諾. 基于Android 的智能家居環(huán)境監(jiān)測系統(tǒng)APP 設計與實現(xiàn)[J]. 軟件, 2015, 36(2): 77-79.
[15] 鄭開增. 智能倉儲管理系統(tǒng)[J]. 農村電氣化, 2017, (7):37-38.