智能電子商務(wù)配送系統(tǒng)功能擴(kuò)展與實(shí)現(xiàn)_第1頁(yè)
智能電子商務(wù)配送系統(tǒng)功能擴(kuò)展與實(shí)現(xiàn)_第2頁(yè)
智能電子商務(wù)配送系統(tǒng)功能擴(kuò)展與實(shí)現(xiàn)_第3頁(yè)
智能電子商務(wù)配送系統(tǒng)功能擴(kuò)展與實(shí)現(xiàn)_第4頁(yè)
智能電子商務(wù)配送系統(tǒng)功能擴(kuò)展與實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩103頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、項(xiàng)目十四 智能電子商務(wù)配送系統(tǒng)功能擴(kuò)展與實(shí)現(xiàn)一、教學(xué)目標(biāo)1、掌握物聯(lián)網(wǎng)綜合實(shí)踐開(kāi)發(fā)技巧。2、掌握物聯(lián)網(wǎng)網(wǎng)綜合實(shí)踐開(kāi)開(kāi)發(fā)流程。3、掌握物聯(lián)網(wǎng)網(wǎng)工程集成技技術(shù)。二、教學(xué)內(nèi)容14.1 智智能電子商務(wù)務(wù)倉(cāng)儲(chǔ)配送系系統(tǒng)項(xiàng)目任務(wù)務(wù)單項(xiàng)目名稱智能電子商務(wù)倉(cāng)倉(cāng)儲(chǔ)物流配送送系統(tǒng)開(kāi)發(fā)任務(wù)內(nèi)容任務(wù)1:企業(yè)一一卡通系統(tǒng)及及出廠商品登登記功能開(kāi)發(fā)發(fā);任務(wù)2:智能電電子商務(wù)物流流倉(cāng)儲(chǔ)揀貨、備備貨、出庫(kù);任務(wù)3:智能電電子商務(wù)倉(cāng)儲(chǔ)儲(chǔ)環(huán)境參數(shù)監(jiān)監(jiān)控功能開(kāi)發(fā)發(fā);任務(wù)4:貨物在在途跟蹤與數(shù)數(shù)據(jù)監(jiān)測(cè);任務(wù)5:貨到簽簽收及動(dòng)態(tài)盤(pán)盤(pán)點(diǎn)功能開(kāi)發(fā)發(fā)。任務(wù)說(shuō)明1、電子商務(wù)訂訂貨下達(dá)訂單單,訂單中的的貨物在貨架架上顯示標(biāo)記記。同時(shí)在大大學(xué)城職

2、教新新干線相應(yīng)的的板塊上加以以展示。2、倉(cāng)庫(kù)揀貨提提醒、備貨、出出庫(kù)掃描等,出出庫(kù)時(shí)對(duì)接物物流公共信息息平臺(tái)的綜合合配貨系統(tǒng),將將該條貨源數(shù)數(shù)據(jù)發(fā)布到物物流公共信息息平臺(tái)上,同同時(shí)在大學(xué)城城職教新干線線相應(yīng)的板塊塊上加以展示示。3、倉(cāng)庫(kù)環(huán)境參參數(shù)監(jiān)測(cè),包包括倉(cāng)庫(kù)溫度度、濕度、煙煙傳感、視頻頻監(jiān)控等。倉(cāng)倉(cāng)管員可以通通過(guò)智能手機(jī)機(jī)通過(guò)WIFFI或3G網(wǎng)網(wǎng)絡(luò)獲取倉(cāng)庫(kù)庫(kù)內(nèi)相應(yīng)的環(huán)環(huán)境參數(shù)數(shù)據(jù)據(jù)。同時(shí)在大大學(xué)城職教新新干線相應(yīng)的的板塊上加以以展示。4、物流配送貨貨物在途跟蹤蹤,對(duì)接物流流公共信息平平臺(tái)的GPSS One定定位系統(tǒng),GGPS系統(tǒng)可可查相應(yīng)訂單單信息。貨主主或用戶可通通過(guò)PC端或或智能手機(jī)通

3、通過(guò)WIFII或3G網(wǎng)絡(luò)絡(luò)獲取貨物在在途的相應(yīng)環(huán)環(huán)境參數(shù)數(shù)據(jù)據(jù)。同時(shí)在大大學(xué)城職教新新干線相應(yīng)的的板塊上加以以展示。5、貨到簽收,采采用客戶手機(jī)機(jī)簽收方案。對(duì)對(duì)電子商務(wù)系系統(tǒng)智能倉(cāng)庫(kù)庫(kù)進(jìn)行動(dòng)態(tài)盤(pán)盤(pán)點(diǎn),同時(shí)在在大學(xué)城職教教新干線相應(yīng)應(yīng)的板塊上加加以展示。使用設(shè)備及材料料物聯(lián)網(wǎng)應(yīng)用開(kāi)發(fā)發(fā)實(shí)驗(yàn)臺(tái)1套套(包含主要要設(shè)備:高頻頻RFID讀讀寫(xiě)器1臺(tái)、多多路復(fù)用器11臺(tái)、高頻RRFID小天天線8個(gè)、WWSN工業(yè)級(jí)級(jí)網(wǎng)關(guān)1臺(tái)、溫溫濕度傳感器器節(jié)點(diǎn)1個(gè)、ZZigbeee數(shù)碼顯示模模塊1個(gè)、串串口通信數(shù)碼碼管8個(gè)、高高頻RFIDD電子標(biāo)簽 若干、智能能倉(cāng)儲(chǔ)管理系系統(tǒng)配套開(kāi)發(fā)發(fā)教學(xué)資源包包 1套),PPC電腦1套

4、套,實(shí)驗(yàn)桌椅椅1套,智能能手機(jī)8臺(tái)。指導(dǎo)教師劉洋(主講、北北京京勝世紀(jì)紀(jì)物聯(lián)網(wǎng)事業(yè)業(yè)部部門(mén)經(jīng)理理),楊曉峰峰(助講、湖湖南省物流公公共信息平臺(tái)臺(tái)有限公司技技術(shù)總監(jiān)),班班主任時(shí)間4天提交資料1、實(shí)訓(xùn)報(bào)告;2、設(shè)計(jì)文檔。14.2 智智能電子商務(wù)務(wù)倉(cāng)儲(chǔ)配送系系統(tǒng)需求概述述智能電子商務(wù)務(wù)倉(cāng)儲(chǔ)配送系系統(tǒng)當(dāng)前的的倉(cāng)儲(chǔ)配送系系統(tǒng)借助于傳傳統(tǒng)的人工管管理方法和手手段,數(shù)據(jù)的的采集和錄入入一直都是手手工操作,效效率低下、差差錯(cuò)率高,且且資產(chǎn)實(shí)物信信息與管理系系統(tǒng)信息無(wú)法法實(shí)時(shí)同步。RFID技術(shù)作為物理世界與現(xiàn)有IT系統(tǒng)的橋梁,可將資產(chǎn)日常管理活動(dòng)與資產(chǎn)管理系統(tǒng)有效的整合在一起,從而達(dá)到實(shí)物信息與系統(tǒng)信息的實(shí)時(shí)

5、同步一致。通過(guò)RFID這這項(xiàng)新技術(shù)實(shí)實(shí)現(xiàn)遠(yuǎn)程、動(dòng)動(dòng)態(tài)、實(shí)時(shí)的的 HYPERLINK t _blank 設(shè)備資產(chǎn)數(shù)據(jù)據(jù)采集,替換換傳統(tǒng)資產(chǎn)管管理方式的前前臺(tái)人工數(shù)據(jù)據(jù)采集,更好好的與后臺(tái)計(jì)計(jì)算機(jī)數(shù)據(jù)庫(kù)庫(kù)結(jié)合,實(shí)現(xiàn)對(duì)日常管理理中的資產(chǎn)新新增、調(diào)撥和和盤(pán)點(diǎn)等信息息進(jìn)行實(shí)時(shí)監(jiān)監(jiān)控、記錄和和自動(dòng)更新,同同時(shí)采集人員員信息,從而而避免因人為為因素造成的的信息失真引引起管理效能能的下降,為為單位領(lǐng)導(dǎo)、網(wǎng)網(wǎng)絡(luò)規(guī)劃投資資與設(shè)計(jì)等部部門(mén)提供更準(zhǔn)準(zhǔn)確、實(shí)時(shí)的的網(wǎng)絡(luò)資產(chǎn)實(shí)實(shí)物信息,提提高資產(chǎn)使用用效率,有效效降低和控制制日常管理和和生產(chǎn)成本,從從而創(chuàng)造良好好的社會(huì)及經(jīng)經(jīng)濟(jì)效益。圖14-1 智智能電子商務(wù)務(wù)倉(cāng)儲(chǔ)配送系系

6、統(tǒng)框架圖14.3 智智能電子商務(wù)務(wù)倉(cāng)儲(chǔ)配送系系統(tǒng)開(kāi)發(fā)環(huán)境境準(zhǔn)備(1)安裝SQQL Sevver 20005(省略略);(2)安裝Viisual Studdio 20010(省略略);(3)安裝PoowerDeesigneer(省略)。14.4 智智能電子商務(wù)務(wù)倉(cāng)儲(chǔ)配送系系統(tǒng)功能設(shè)計(jì)計(jì)主要包括出廠商商品登記、環(huán)環(huán)境參數(shù)監(jiān)控控、商品入庫(kù)庫(kù)、商品出庫(kù)庫(kù)、入庫(kù)/揀揀貨提醒、商商品監(jiān)控和動(dòng)動(dòng)態(tài)盤(pán)點(diǎn)。出廠商品登記:針對(duì)于桌面讀寫(xiě)寫(xiě)器對(duì)RFIID多卡的操操作。實(shí)現(xiàn)對(duì)多卡卡號(hào)號(hào)的讀取。同時(shí)對(duì)多卡進(jìn)行行信息的寫(xiě)入入。根據(jù)實(shí)際情況對(duì)對(duì)寫(xiě)入信息進(jìn)進(jìn)行校驗(yàn)。環(huán)境參數(shù)監(jiān)控:通過(guò)WSN無(wú)線線傳感網(wǎng)絡(luò)的的溫濕度節(jié)點(diǎn)點(diǎn)獲取當(dāng)

7、前環(huán)環(huán)境的溫度和和濕度,并在在程序界面上上顯示。商品入庫(kù):通過(guò)桌面讀寫(xiě)器器進(jìn)行商品入入庫(kù)操作。自動(dòng)生成入庫(kù)單單號(hào)以“i”開(kāi)頭,最初初的入庫(kù)單號(hào)號(hào)為“i10000000000001”為13位。通過(guò)桌面讀寫(xiě)器器進(jìn)行多卡識(shí)識(shí)別并進(jìn)行綁綁定內(nèi)容包括括一級(jí)分類(lèi)、二二級(jí)分類(lèi)、商商品名稱、規(guī)規(guī)格型號(hào)、商商品編碼、單單位、貨位。自動(dòng)為入庫(kù)商品品分配貨位。顯示入庫(kù)商品數(shù)數(shù)量。打印入庫(kù)單,入入庫(kù)單內(nèi)容包包括商品名稱稱、所分配貨貨架、商品數(shù)數(shù)量。在入庫(kù)單右下角角顯示條形碼碼,在條碼下下方顯示條碼碼值。商品出庫(kù):通過(guò)復(fù)用讀寫(xiě)器器進(jìn)行出庫(kù)操操作。自動(dòng)生成出庫(kù)單單號(hào)以“o”開(kāi)頭,最初初的出庫(kù)單號(hào)號(hào)為“o100000000

8、00001”為13位??蛇x擇商品名稱稱、所在貨位位、出庫(kù)數(shù)量量。對(duì)出庫(kù)商品進(jìn)行行綁定包括商商品卡號(hào)、商商品名稱、數(shù)數(shù)量、所在貨貨位編號(hào)。打印出庫(kù)單,出出庫(kù)單內(nèi)容包包括商品名稱稱、所在貨位位、商品數(shù)量量。在出庫(kù)單右下角角顯示條形碼碼,在條碼下下方顯示條碼碼值。入庫(kù)/揀貨提醒醒:通過(guò)入庫(kù)單或出出庫(kù)單對(duì)貨架架進(jìn)行操作實(shí)實(shí)現(xiàn)智能出庫(kù)庫(kù)或入庫(kù)。通過(guò)條碼槍掃描描打印好的出出庫(kù)單或入庫(kù)庫(kù)單判斷出庫(kù)庫(kù)還是入庫(kù)。對(duì)出庫(kù)或入庫(kù)商商品進(jìn)行綁定定顯示并顯示示數(shù)量,對(duì)要要操作的貨位位使其指示燈燈亮起。出庫(kù)或入庫(kù)完成成后指示燈熄熄滅。商品監(jiān)控:對(duì)貨架的整體監(jiān)監(jiān)控。對(duì)貨架進(jìn)行整體體實(shí)時(shí)監(jiān)控。綁定每個(gè)貨位的的商品信息,包包括

9、商品卡號(hào)號(hào)和名稱,并并綁定數(shù)量。當(dāng)貨架上的商品品數(shù)量與庫(kù)存存數(shù)量不同時(shí)時(shí),指示燈亮亮起。動(dòng)態(tài)盤(pán)點(diǎn):對(duì)貨架的盤(pán)點(diǎn)操操作。綁定商品的名稱稱、庫(kù)存數(shù)量量和實(shí)際數(shù)量量。對(duì)比庫(kù)存數(shù)量和和實(shí)際數(shù)量。顯示盤(pán)點(diǎn)結(jié)果。14.5 智智能電子商務(wù)務(wù)倉(cāng)儲(chǔ)配送系系統(tǒng)數(shù)據(jù)庫(kù)設(shè)設(shè)計(jì)圖14-2數(shù)據(jù)據(jù)庫(kù)表結(jié)構(gòu)匯匯總展示14.6 智智能電子商務(wù)務(wù)倉(cāng)儲(chǔ)配送系系統(tǒng)程序設(shè)計(jì)計(jì)注:因?yàn)榻o合實(shí)實(shí)踐項(xiàng)目所涉涉及的程序代代碼比較多,以以下只將關(guān)鍵鍵代碼信息列列出來(lái),關(guān)于于變量定義、串串口打開(kāi)與關(guān)關(guān)閉、構(gòu)造函函數(shù)、一些操操作事件都在在教學(xué)資源中中提供。1、出廠商品登登記(1)界面設(shè)計(jì)計(jì)圖14-3出廠廠商品登記界界面(2)窗體屬性性設(shè)置向控件中添

10、加22個(gè)grouupbox控控件,6個(gè)標(biāo)標(biāo)簽,6個(gè)ttextboox,4個(gè)按按鈕和1個(gè)添添加滾動(dòng)條的的textbbox控件??丶QNameTextgroupbooxgbCardssID商品標(biāo)簽groupbooxgbGoodssInfo商品信息控件名稱NameTextLabellblCateegory一級(jí)分類(lèi)LabellblTypee二級(jí)分類(lèi)LabellblNamee商品名稱LabellblSpeccificaation規(guī)格型號(hào)LabellblCodee商品編碼LabellblUnitt單位控件名稱NameTextTextboxxlblCateegoryTextboxxlblTypeeText

11、boxxlblNameeTextboxxlblSpeccificaationTextboxxlblCodeeTextboxxlblUnitt控件名稱NameScrollBBarsTexttxtCarddsIDVerticaal控件名稱NameTextButtonbtnReaddCardssID讀卡IDButtonbtnCleaarCarddsID清空(商品標(biāo)簽簽中)ButtonbtnWritteCardd寫(xiě)卡ButtonbtnCleaarInfoo清空(商品信息息中)(3)編寫(xiě)后臺(tái)臺(tái)代碼獲取讀取到的卡卡號(hào)的泛型集集合。/ / 獲取ID的的泛型集合方方法 / privvate vvoid GGe

12、tID() /VCPPOGetCCardNuumberMMultipple()讀讀寫(xiě)器讀取多多卡卡號(hào)方法法 cardNNo = tthis.rrfid.VVCPOGeetCarddNumbeerMulttiple(); 校驗(yàn)方法,對(duì)寫(xiě)寫(xiě)入信息進(jìn)行行校驗(yàn)。/ / 寫(xiě)入信息校校驗(yàn) / / privvate bbool CCheckIInput() if (tthis.ttxtCattegoryy.Textt = ) MMessaggeBox.Show(一級(jí)分類(lèi)類(lèi)不能為空!); rreturnn falsse; else if (tthis.ttxtTyppe.Texxt = ) MMessagge

13、Box.Show(二級(jí)分類(lèi)類(lèi)不能為空!); rreturnn falsse; else if (tthis.ttxtNamme.Texxt = ) MMessaggeBox.Show(商品名稱稱不能為空!); rreturnn falsse; else if (tthis.ttxtSpeecificcationn.Textt = ) MMessaggeBox.Show(規(guī)格型號(hào)號(hào)不能為空!); rreturnn falsse; else if (tthis.ttxtCodde.Texxt = ) MMessaggeBox.Show(商品編碼碼不能為空!); rreturnn falsse; e

14、lse if (tthis.ttxtUniit.Texxt = ) MMessaggeBox.Show(單位不能能為空!); rreturnn falsse; else rreturnn truee; 窗體載入事件,打打開(kāi)讀寫(xiě)器連連接串口。/ / 窗體載入事事件 / / / privvate vvoid ffrmIniitReg_Load(objecct sennder, EventtArgs e) OpenRRFID(); 讀卡按鈕事件,每每條卡號(hào)分別別占一行,所所以在添加是是后要跟“rn”換行。/ / 讀卡按鈕事事件 / / / privvate vvoid bbtnReaadCardds

15、ID_CClick(objecct sennder, EventtArgs e) txtCaardsIDD.Textt = ; GetIDD(); for (int ii = 0; i cardNNo.Couunt; ii+) ttxtCarrdsID.Text += caardNoi + rnn; 商品標(biāo)簽清空按按鈕事件/ / 清空ID按按鈕事件 / / / privvate vvoid bbtnCleearCarrdsID_Clickk(objeect seender, EvenntArgss e) txtCaardsIDD.Textt = ; 寫(xiě)卡按鈕事件/ / 寫(xiě)卡按鈕事事件 / /

16、/ privvate vvoid bbtnWriiteCarrd_Cliick(obbject sendeer, EvventArrgs e) if (CCheckIInput() ffor (iint i = 0; i ccardNoo.Counnt; i+) sttring inforrmatioon = ttxtCattegoryy.Textt + + ttxtTyppe.Texxt + + ttxtNamme.Texxt + + ttxtSpeecificcationn.Textt + + ttxtCodde.Texxt + + txxtUnitt.Textt; thhis.rffid

17、.Wrrite(ccardNooi, inforrmatioon); MMessaggeBox.Show(寫(xiě)入成功功!); 商品信息清空按按鈕/ / 清空信息按按鈕事件 / / / privvate vvoid bbtnCleearInffo_Cliick(obbject sendeer, EvventArrgs e) foreaach (CControol c iin thiis.gbGGoodsIInfo.CControols) iif (c is TeextBoxx) c.Text = ; 2、環(huán)境參數(shù)監(jiān)監(jiān)控(1)界面設(shè)計(jì)計(jì)圖14-4環(huán)境境參數(shù)監(jiān)控界界面(2)窗體屬性性設(shè)置窗體Start

18、Poositioon屬性MaximizzeBox屬屬性MinimizzeBox屬屬性FormBorrderSttyle屬性性Text屬性frmGooddsOutCenterPParenttFalseFalseFixedSiingle環(huán)境參數(shù)監(jiān)控設(shè)置Lablee控件屬性控件Name屬性Text屬性LablelblTempperatuure溫度:LableLabel1溫度:LablelblHumiidity濕度:LableLabel2濕度:LablelblEnvrrionmeentVallue0LablelblEnvrrionmeentVallue10LablelblHumiidityVValue

19、0LablelblHumiidityVValue110設(shè)置GrouppBox控件件屬性控件Name屬性Text屬性GroupBooxgbEnvirronmenntParaam環(huán)境參數(shù)(3)編寫(xiě)后臺(tái)臺(tái)代碼:獲取節(jié)點(diǎn)的基本本信息,向?qū)?duì)應(yīng)的節(jié)點(diǎn)發(fā)發(fā)送了信息后后,節(jié)點(diǎn)會(huì)返返回信息。即即可獲取節(jié)點(diǎn)點(diǎn)的基本信息息。 / / Sensoor_Reaad指令 / / / privvate vvoid SSensorrRead() DataTTable dtb = Proggram.ddbo.GeetDataaTablee(striing.Foormat(seleect IEEEEAdddress,Short

20、tAddreess,NoodeTyppe,NoddeClasss froom CarrgoNodde wheere NoodeTyppe=00, 6); for (int ii = 0; i dtb.RRows.CCount; i+) ttry thhis.tiime = 0; thhis.tiimer1.Stop(); /獲取流水號(hào)號(hào) thhis.seequencceID_TT1 = tthis.mmessaggeT1.GGetSeqquenceeID(); /實(shí)例化節(jié)點(diǎn)點(diǎn)泛型 Liist nnodeLiist = new LList(); /實(shí)例化節(jié)點(diǎn)點(diǎn) GRRIP_Noode noode

21、 = new GGRIP_NNode(); /獲取節(jié)點(diǎn)編編號(hào) noode.IEEEEAdddress = dtbb.RowssiIEEEAAddresss.TToStriing(); /獲取節(jié)點(diǎn)地地址 /node.ShorttAddreess = Conveert.TooUInt116(100255, 16); noode.ShhortAdddresss = Coonvertt.ToUIInt16(dtb.RRowsiiShhortAdddresss.TooStrinng(), 16); /將節(jié)點(diǎn)信息息添加到節(jié)點(diǎn)點(diǎn)泛型中 noodeLisst.Addd(nodee); /將節(jié)點(diǎn)數(shù)量量轉(zhuǎn)換成by

22、yte類(lèi)型 byyte deeviceCCount = Connvert.ToBytte(noddeListt.Counnt); /將節(jié)點(diǎn)類(lèi)型型轉(zhuǎn)換成byyte類(lèi)型 byyte seensorCClass = Connvert.ToBytte(dtbb.RowssiNodeCClass); /將節(jié)點(diǎn)型號(hào)號(hào)轉(zhuǎn)換成byyte類(lèi)型 UIInt16 sensoorTypee = Coonvertt.ToUIInt16(dtb.RRowsiiNoodeTyppe.TToStriing(), 16); /讀取數(shù)據(jù) GRRIP_MeessageeBody_Sensoor_Reaad msggBodySSen

23、d = new GRIP_MessaageBoddy_Sennsor_RRead(ddeviceeCountt, sennsorCllass, sensoorTypee, noddeListt); /獲取發(fā)送的的消息 GRRIP_MeessageeHead msgHeeadSennd = nnew GRRIP_MeessageeHead(msgBoodySennd.BoddyLenggth, (UInt116)GRIIP_Messsage_CommaandID.NWM_SSENSORR_READD, thiis.seqquenceeID_T11); /獲取發(fā)送的的數(shù)據(jù)包的bbyte數(shù)組組 by

24、yte msgSeend = this.messaageT1.GetSeendMesssage(msgHeeadSennd, mssgBodyySend); innt lennSend = 0; /Sockeet發(fā)送消息息 SeendMsgg(thiss.sockket_T11, msggSend, Sennsor_RReportt_Respp); /接收消息的的長(zhǎng)度的byyte數(shù)組 byyte msgReecv = new bbyte(int)GGRIP_MMessaggeBodyy_Lenggth.HEEADLENNGTH + (intt)GRIPP_MesssageBoody_Leeng

25、th.SENSOOR_REAAD_RESSP_LENNGTH; innt lennRecv = 0; /Sockeet接收消息息 ReecvMsgg(thiss.sockket_T11, msggRecv, Sennsor_RReportt); /實(shí)例化接收收的消息頭 GRRIP_MeessageeHead msgHeeadReccv = nnew GRRIP_MeessageeHead(); /實(shí)例化接收收的消息體 GRRIP_MeessageeBody_Sensoor_Reaad_Ressp msggBodyRRecv = new GRIP_MessaageBoddy_Sennsor_RR

26、ead_RResp(); /獲取接收的的數(shù)據(jù)包信息息 thhis.meessageeT1.GeetReciiveMesssage(msgReecv, mmsgHeaadRecvv, msggBodyRRecv); /判斷消息體體長(zhǎng)度和流水水號(hào) iff (msggHeadRRecv.MMessaggeLenggth = (UInnt16)GGRIP_MMessaggeBodyy_Lenggth.SEENSOR_READ_RESP_LENGTTH & this.sequeenceIDD_T1 = msggHeadRRecv.SSequennceID) /在在控件中顯示示數(shù)據(jù)信息 if (msgBB

27、odyReecv.Sttatus = 0) GRIPP_MesssageBoody_Seensor_Read_Resp msgBoodyReccv1 = new GGRIP_MMessaggeBodyy_Senssor_Reead_Reesp(); thiss.sesssionIDD = mssgBodyyRecv.SessiionID; thiss.timeer1.Sttart(); elsse thiss.timeer1.Sttart(); ccatch (Exceeptionn ex) MeessageeBox.SShow(Sensoor_Reaad指令錯(cuò)誤誤: + ex.Meessag

28、ee); 編寫(xiě)線程方法,實(shí)實(shí)時(shí)監(jiān)控的線線程方法,在在該線程中使使用的是對(duì)溫溫濕度節(jié)點(diǎn)實(shí)實(shí)時(shí)的讀取并并獲取溫濕度度信息。 #reggion TT2_Thrread privvate vvoid RRun() whilee (truue) ttry #rregionn T2_HHead GRRIP_MeessageeHead msgHeeadReccv = nnew GRRIP_MeessageeHead(); byyte msgReecv_Heead = new bbyte66; ReecvMsgg(thiss.sockket_T22, msggRecv_Head, T2_Threaad_Hea

29、ad_Reccv); mssgHeaddRecv.GetHeeadByttesOfRRecivee(msgRRecv_HHead, 0, 6); UIInt16 messaageLenngth = msgHHeadReecv.MeessageeLengtth; UIInt16 messaageCommmand = msggHeadRRecv.MMessaggeCommmand; UIInt16 sequeenceIDD = mssgHeaddRecv.SequeenceIDD; #eendreggion #rregionn T2_HHeartBBeat iff (messsageCComman

30、nd = (UIntt16)GRRIP_Meessagee_CommmandIDD.NWM_HEARTTBEAT) GRIIP_MesssageHHead mmsgHeaadSendd = neew GRIIP_MesssageHHead(00, (UIInt16)GRIP_Messaage_CoommanddID.NWWM_HEAARTBEAAT_RESSP, seequencceID); bytte mmsgSennd = mmsgHeaadSendd.GetHHeadByytesOffSend(); SenndMsg(this.sockeet_T2, msgSSend, T2_HHear

31、tBBeat); #eendreggion #rregionn T2_SStatuss_Repoort iff (messsageCCommannd = (UIntt16)GRRIP_Meessagee_CommmandIDD.NWM_STATUUS_REPPORT) GRIIP_MesssageBBody_SStatuss_Repoort mssgBodyyRecv = neww GRIPP_MesssageBoody_Sttatus_Reporrt(); bytte mmsgReccv_Boddy = nnew byytemssgHeaddRecv.MessaageLenngth; Rec

32、cvMsg(this.sockeet_T2, msgRRecv_BBody, Stattus_Reeport); msggBodyRRecv.CConverrtReciiveByttes(mssgRecvv_Bodyy); GRIIP_MesssageBBody_SStatuss_Repoort_Reesp mssgBodyySend = neww GRIPP_MesssageBoody_Sttatus_Reporrt_Ressp(0); GRIIP_MesssageHHead mmsgHeaadSendd = neew GRIIP_MesssageHHead(mmsgBoddySendd.B

33、odyyLengtth, (UUInt166)GRIPP_Messsage_CCommanndID.NNWM_STTATUS_REPORRT_RESSP, seequencceID); bytte mmsgSennd = tthis.mmsg_T22.GetSSendMeessagee(msgHHeadSeend, mmsgBoddySendd); SenndMsg(this.sockeet_T2, msgSSend, Stattus_Reeport_Resp); if (msgBBodyReecv.SeessionnID = thiss.sesssionIDD) booll isExxist

34、 = falsse; if (msgBoodyReccv.SennsorCllass = 3 | msggBodyRRecv.SSensorrClasss = 55) int fflag = Proggram.ddbo.GeetInt(strinng.Forrmat(selecct Flaag froom CarrgoNodde wheere IEEEEAdddress=0, mssgBodyyRecv.Node.IEEEAAddresss); if (fflag = 2) iisExisst = ttrue; else iisExisst = ffalse; if (!isExiist) S

35、ShelfNNode sshelfNNode = new ShelffNode(); sstringg iEEEEAddreess = Progrram.dbbo.GettStrinng(strring.FFormatt(sellect IIEEEAdddresss fromm CarggoNodee wherre IEEEEAddrress=0, msggBodyRRecv.NNode.IIEEEAdddresss); iif (mssgBodyyRecv.Node.IEEEAAddresss = iEEEAAddresss) byyte seensorCClass = msggBodyRR

36、ecv.SSensorrClasss; UIInt16 sensoorTypee = mssgBodyyRecv.SensoorTypee; sttring shorttAddrsss = mmsgBoddyRecvv.Nodee.ShorrtAddrress.TToStriing(XX4); Prrogramm.dbo.ExecuuteSQLL(striing.Foormat(updaate CaargoNoode seet ShoortAdddress=0,NodeeType=1,NodeeClasss=2,Flaag=2 wherre IEEEEAddrress=3, shoortAdd

37、drss, sensoorTypee, sennsorCllass, iEEEAAddresss); coount += 1; #eendreggion #rregionn T2_SSensorr_Repoort iff (messsageCCommannd = (UIntt16)GRRIP_Meessagee_CommmandIDD.NWM_SENSOOR_REPPORT) GRIIP_MesssageBBody_SSensorr_Repoort mssgBodyyRecv = neww GRIPP_MesssageBoody_Seensor_Reporrt(); bytte mmsgRec

38、cv_Boddy = nnew byytemeessageeLengtth; ReccvMsg(this.sockeet_T2, msgRRecv_BBody, Senssor_Reeport); msggBodyRRecv.CConverrtReciiveByttes(mssgRecvv_Bodyy); GRIIP_MesssageBBody_SSensorr_Repoort_Reesp mssgBodyySend = neww GRIPP_MesssageBoody_Seensor_Reporrt_Ressp(0); GRIIP_MesssageHHead mmsgHeaadSendd =

39、 neew GRIIP_MesssageHHead(mmsgBoddySendd.BodyyLengtth, (iint)GRRIP_Meessagee_CommmandIDD.NWM_SENSOOR_REPPORT_RRESP, sequeenceIDD); bytte mmsgSennd = tthis.mmsg_T22.GetSSendMeessagee(msgHHeadSeend, mmsgBoddySendd); SenndMsg(this.sockeet_T2, msgSSend, Senssor_Reeport_Resp); if (thiss.sesssionIDD = mms

40、gBoddyRecvv.SesssionIDD) Listt iiEEEAdddresss = neew Lisst(); iEEEEAddreess.Addd(Proogram.dbo.GGetStrring(sstringg.Formmat(sselectt IEEEEAddreess frrom CaargoNoode); for (int i = 00; i iEEEEAddreess.Coount; i+) if (iiEEEAdddresssi = msggBodyRRecv.NNode.IIEEEAdddresss) OObjClaass.ObbjCarggoNodee ocn

41、= neww ObjCClass.ObjCaargoNoode(); oocn.Innsert(); DattaTablle dtbbAddreess = Progrram.dbbo.GettDataTTable(strinng.Forrmat(selecct IEEEEAddrress,SShortAAddresss froom CarrgoNodde wheere NoodeTyppe=00, 6); forr (intt k = 0; k dtbbAddreess.Roows.Coount; k+) if (msgBoodyReccv.Nodde.IEEEEAddrress = dtbb

42、Addreess.RoowskIEEEEAddrress.ToSttring() if (kk 1) SShowLaabelMeessagee(thiss.lblEEnvrioonmenttValuee, (GGRIP_SSensorrData)msgBoodyReccv.Datta).Teemp_H.ToStrring() + . + (GRIPP_SenssorDatta)msggBodyRRecv.DData).Temp_L.ToSStringg() + ?); SShowLaabelMeessagee(thiss.lblHHumidiityVallue, (GRIPP_SenssorD

43、atta)msggBodyRRecv.DData).Humi_H.ToSStringg() + . + (GRRIP_SeensorDData)mmsgBoddyRecvv.Dataa).Hummi_L.TToStriing() + %); else SShowLaabelMeessagee(thiss.lblEEnvrioonmenttValuee1, (GRIP_SensoorDataa)msgBBodyReecv.Daata).TTemp_HH.ToSttring() + . + (GRIIP_SennsorDaata)mssgBodyyRecv.Data).Tempp_L.TooStr

44、inng() + ?); SShowLaabelMeessagee(thiss.lblHHumidiityVallue1, (GRIIP_SennsorDaata)mssgBodyyRecv.Data).Humii_H.TooStrinng() + . + (GGRIP_SSensorrData)msgBoodyReccv.Datta).Huumi_L.ToStrring() + %); breakk; #eendreggion #rregionn T2_EEvent_Reporrt iff (messsageCCommannd = (UIntt16)GRRIP_Meessagee_Commm

45、andIDD.NWM_EVENTT_REPOORT) GRIIP_MesssageBBody_EEvent_Reporrt msggBodyRRecv = new GRIP_MessaageBoddy_Eveent_Reeport(); bytte mmsgReccv = nnew byytemeessageeLengtth; ReccvMsg(this.sockeet_T2, msgRRecv, T2_EEvent_Reporrt); msggBodyRRecv.CConverrtReciiveByttes(mssgRecvv); GRIIP_MesssageBBody_EEvent_Rep

46、orrt_Ressp msggBodySSend = new GRIP_MessaageBoddy_Eveent_Reeport_Resp(0); GRIIP_MesssageHHead mmsgHeaadSendd = neew GRIIP_MesssageHHead(mmsgBoddySendd.BodyyLengtth, (UUInt166)GRIPP_Messsage_CCommanndID.NNWM_EVVENT_RREPORTT_RESPP, seqquenceeID); bytte mmsgSennd = tthis.mmsg_T22.GetSSendMeessagee(msgH

47、HeadSeend, mmsgBoddySendd); SenndMsg(this.sockeet_T2, msgSSend, T2_EEvent_Reporrt_Ressp); MesssageBBox.Shhow(EEventIID: + msgBBodyReecv.EvventIDD.ToSttring(); MesssageBBox.Shhow(EEventNNum: + msggBodyRRecv.EErrorNNum.TooStrinng(); #eendreggion ccatch (Exceeptionn ex) MeessageeBox.SShow(Threaad_T2_Er

48、rorr! + ex); 心跳包方法,為為了防止在沒(méi)沒(méi)有通信的時(shí)時(shí)候網(wǎng)關(guān)將連連接的用戶踢踢出連接,在在40秒時(shí)發(fā)發(fā)送一個(gè)空的的心跳包。并并接收返回信信息。 #regiion T11_HearrtBeatt privvate vvoid ttimer11_Tickk(objeect seender, EvenntArgss e) this.seconnd+; if (tthis.ssecondd = 55) /這里是為了了將放回的溫溫濕度節(jié)點(diǎn)的的信息顯示,每每隔5秒將程程序界面的信信息進(jìn)行更新新。重新顯示示溫濕度信息息。 tthis.RRefressh(); if (tthis.ssecondd

49、 = 440) ttry thhis.seequencceID_TT1 = tthis.mmsg_T11.GetSSequennceID(); GRRIP_MeessageeHead msgHeeadSennd = nnew GRRIP_MeessageeHead(0, (iint)GRRIP_Meessagee_CommmandIDD.NWM_HEARTTBEAT, thiss.sequuenceIID_T1); byyte msgSeend = msgHeeadSennd.GettHeadBBytesOOfSendd(); SeendMsgg(thiss.sockket_T11, msgg

50、Send, T1_HearttBeat); GRRIP_MeessageeHead msgHeeadReccv = nnew GRRIP_MeessageeHead(); byyte msgReecv = new bbyte66; ReecvMsgg(thiss.sockket_T11, msggRecv, T1_HearttBeat_Resp); mssgHeaddRecv.GetHeeadByttesOfRRecivee(msgRRecv, 0, 6); iff (msggHeadRRecv.SSequennceID = thhis.seequencceID_TT1) thiis.secc

51、ond = 0; ellse MesssageBBox.Shhow(TT1_HeaartBeaat_Ressp_SeqquenceeID_Errror!); ccatch (Exceeptionn ex) MeessageeBox.SShow(T1_HeeartBeeat_Errror!+ex.MMessagge); #enddregioon3、商品入庫(kù)在商品入庫(kù)的操操作前,我們們需要編寫(xiě)一一個(gè)類(lèi)來(lái)將要要處理的對(duì)象象進(jìn)行封裝。如如:入庫(kù)單,每每個(gè)貨物的信信息等。(1)界面設(shè)計(jì)計(jì)圖14-5商品品入庫(kù)界面(2)修改控件件屬性設(shè)置控件名稱NameTextLabellblInCoode入庫(kù)單號(hào):Lab

52、ellblNum數(shù)量:LabellblGooddsInDeetail入庫(kù)詳單:控件名稱NameReadOnllyTextBoxxtxtInCoodeTrueTextBoxxtxtNumTrue控件名稱NameTextButtonbtnPrinnt入庫(kù)單打印ButtonbtnOk確定ButtonbtnCleaar清空商品入庫(kù)索引號(hào)NameText0colCateegory一級(jí)分類(lèi)1colTypee二級(jí)分類(lèi)2cloNamee商品名稱3colSpeccificaation規(guī)格型號(hào)4colCodee商品編碼5colUnitt單位6colCarggo貨位(3)模塊編寫(xiě)寫(xiě)后臺(tái)代碼定義私有變量,接接口類(lèi)需要

53、實(shí)實(shí)例化兩次,不不同名稱,因因?yàn)樵谡{(diào)用過(guò)過(guò)程中打開(kāi)后后讀寫(xiě)器串口口后無(wú)法對(duì)復(fù)復(fù)用器的方法法進(jìn)行調(diào)用:獲取商品數(shù)量,讀讀取到的卡號(hào)號(hào)的數(shù)量:/ / 獲取商品數(shù)數(shù)量 / privvate vvoid GGetNummber() cardNNo = tthis.rrfidVCCPO.VCCPOGettCardNNumberrMultiiple(); this.txtNuum.Texxt = ccardNoo.Counnt.ToSStringg(); 對(duì)掃描的貨物做做操作,界面面顯示,貨位位分配任務(wù)的的方法: / / 對(duì)掃描的貨貨物做操作,界界面顯示,貨貨位分配任務(wù)務(wù) / priivate void

54、AlloccateLoocatioon() if (tthis.ccardNoo.Counnt 00) ffor (iint i = 0; i 0) forr (intt j = 0; j thiis.lsvvGoodssInDettail.IItems.Countt; j+) if (cardNNoi = lssvGooddsInDeetail.Itemssj.TTag.TooStrinng() isOk = fallse; if(isOk) int cargoo = diistribbuteCaargo(); BinddListvview(ccardNooi, cargoo); ellse

55、 intt carggo = ddistriibuteCCargo(); BinndListtview(cardNNoi, carggo); else MMessaggeBox.Show(沒(méi)有檢測(cè)測(cè)到貨物,請(qǐng)請(qǐng)檢查); 自動(dòng)為商品分配配貨位,設(shè)定定分配貨位每每個(gè)貨位最多多存放6個(gè)商商品。 分配貨位 / / 貨位分配 / / privvate iint diistribbuteCaargo() int ccargo = 0; for (int kk = 1; k = 8; kk+) iint lssvNum = 0; iint SttatusNNum1 = Proggram.ddbo.GeetI

56、nt(strinng.Forrmat(selecct couunt(GooodsInnID) ffrom SStockDDetaill wherre Staatus=11 and Cargoo=0, kk); iint SttatusNNum2 = Proggram.ddbo.GeetInt(strinng.Forrmat(selecct couunt(gooodsInnID) ffrom SStockDDetaill wherre Staatus=22 and Cargoo=0, kk); ffor (iint l = 0; l tthis.llsvGooodsInDDetaill.Item

57、ms.Couunt; ll+) iff (thiis.lsvvGoodssInDettail.IItemsl.SuubItemms6.Text = k.ToStrring() lsvvNum += 1; iif (lssvNum + StaatusNuum1 + StatuusNum22 6) caargo = k; brreak; iif (k = 8) MeessageeBox.SShow(貨架上應(yīng)該該存放的貨物物數(shù)量已滿,請(qǐng)請(qǐng)查看); returrn carrgo; 綁定ListVView的方方法 / / 綁定LisstVieww控件方法 / privvate vvoid BBindLi

58、istvieew(strring ggoods,int ggoodsCCargo) try sstringg valuue = tthis.rrfidVCCPO.ReeaderRRead(ggoods); sstringg innformaation = vallue.Spplit(); ggoodsCCategoory = inforrmatioon0; ggoodsTType = infoormatiion1; ggoodsNName = infoormatiion0; /gooddsSpeccificaation信信息是貨物的的保質(zhì)期,這這里為了演示示我們可以直直接添加上一一個(gè)值。貨物物

59、有其它的信信息是也是可可以再進(jìn)行添添加的。 ggoodsSSpecifficatiion = 12; ggoodsCCode = infoormatiion2; uunit = infoormatiion3; LListViiewIteem iteem = nnew LiistVieewItemm(new strinng gooddsCateegory, gooddsTypee, gooodsNamme, gooodsSppecifiicatioon, gooodsCoode, uunit, goodssCargoo.ToSttring() ); iitem.TTag = goodss; tt

60、his.llsvGooodsInDDetaill.Itemms.Addd(itemm); catchh(Exceeptionn ex) MMessaggeBox.Show(商品RFFID卡中尚尚未錄入信息息! + ex.Meessagee); 生成入庫(kù)單號(hào)方方法/ / 生成入庫(kù)單單號(hào) / privvate sstringg GeneerateCCode() /codde = I + Num.TToStriing(); long codeNNo = 110000000000001; strinng codde = ; strinng coddeLastt = ; codeLLast = Prog

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論