




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、項目十四 智能電子商務(wù)配送系統(tǒng)功能擴(kuò)展與實現(xiàn)一、教學(xué)目標(biāo)1、掌握物聯(lián)網(wǎng)綜合實踐開發(fā)技巧。2、掌握物聯(lián)網(wǎng)網(wǎng)綜合實踐開開發(fā)流程。3、掌握物聯(lián)網(wǎng)網(wǎng)工程集成技技術(shù)。二、教學(xué)內(nèi)容14.1 智智能電子商務(wù)務(wù)倉儲配送系系統(tǒng)項目任務(wù)務(wù)單項目名稱智能電子商務(wù)倉倉儲物流配送送系統(tǒng)開發(fā)任務(wù)內(nèi)容任務(wù)1:企業(yè)一一卡通系統(tǒng)及及出廠商品登登記功能開發(fā)發(fā);任務(wù)2:智能電電子商務(wù)物流流倉儲揀貨、備備貨、出庫;任務(wù)3:智能電電子商務(wù)倉儲儲環(huán)境參數(shù)監(jiān)監(jiān)控功能開發(fā)發(fā);任務(wù)4:貨物在在途跟蹤與數(shù)數(shù)據(jù)監(jiān)測;任務(wù)5:貨到簽簽收及動態(tài)盤盤點功能開發(fā)發(fā)。任務(wù)說明1、電子商務(wù)訂訂貨下達(dá)訂單單,訂單中的的貨物在貨架架上顯示標(biāo)記記。同時在大大學(xué)城職
2、教新新干線相應(yīng)的的板塊上加以以展示。2、倉庫揀貨提提醒、備貨、出出庫掃描等,出出庫時對接物物流公共信息息平臺的綜合合配貨系統(tǒng),將將該條貨源數(shù)數(shù)據(jù)發(fā)布到物物流公共信息息平臺上,同同時在大學(xué)城城職教新干線線相應(yīng)的板塊塊上加以展示示。3、倉庫環(huán)境參參數(shù)監(jiān)測,包包括倉庫溫度度、濕度、煙煙傳感、視頻頻監(jiān)控等。倉倉管員可以通通過智能手機機通過WIFFI或3G網(wǎng)網(wǎng)絡(luò)獲取倉庫庫內(nèi)相應(yīng)的環(huán)環(huán)境參數(shù)數(shù)據(jù)據(jù)。同時在大大學(xué)城職教新新干線相應(yīng)的的板塊上加以以展示。4、物流配送貨貨物在途跟蹤蹤,對接物流流公共信息平平臺的GPSS One定定位系統(tǒng),GGPS系統(tǒng)可可查相應(yīng)訂單單信息。貨主主或用戶可通通過PC端或或智能手機通
3、通過WIFII或3G網(wǎng)絡(luò)絡(luò)獲取貨物在在途的相應(yīng)環(huán)環(huán)境參數(shù)數(shù)據(jù)據(jù)。同時在大大學(xué)城職教新新干線相應(yīng)的的板塊上加以以展示。5、貨到簽收,采采用客戶手機機簽收方案。對對電子商務(wù)系系統(tǒng)智能倉庫庫進(jìn)行動態(tài)盤盤點,同時在在大學(xué)城職教教新干線相應(yīng)應(yīng)的板塊上加加以展示。使用設(shè)備及材料料物聯(lián)網(wǎng)應(yīng)用開發(fā)發(fā)實驗臺1套套(包含主要要設(shè)備:高頻頻RFID讀讀寫器1臺、多多路復(fù)用器11臺、高頻RRFID小天天線8個、WWSN工業(yè)級級網(wǎng)關(guān)1臺、溫溫濕度傳感器器節(jié)點1個、ZZigbeee數(shù)碼顯示模模塊1個、串串口通信數(shù)碼碼管8個、高高頻RFIDD電子標(biāo)簽 若干、智能能倉儲管理系系統(tǒng)配套開發(fā)發(fā)教學(xué)資源包包 1套),PPC電腦1套
4、套,實驗桌椅椅1套,智能能手機8臺。指導(dǎo)教師劉洋(主講、北北京京勝世紀(jì)紀(jì)物聯(lián)網(wǎng)事業(yè)業(yè)部部門經(jīng)理理),楊曉峰峰(助講、湖湖南省物流公公共信息平臺臺有限公司技技術(shù)總監(jiān)),班班主任時間4天提交資料1、實訓(xùn)報告;2、設(shè)計文檔。14.2 智智能電子商務(wù)務(wù)倉儲配送系系統(tǒng)需求概述述智能電子商務(wù)務(wù)倉儲配送系系統(tǒng)當(dāng)前的的倉儲配送系系統(tǒng)借助于傳傳統(tǒng)的人工管管理方法和手手段,數(shù)據(jù)的的采集和錄入入一直都是手手工操作,效效率低下、差差錯率高,且且資產(chǎn)實物信信息與管理系系統(tǒng)信息無法法實時同步。RFID技術(shù)作為物理世界與現(xiàn)有IT系統(tǒng)的橋梁,可將資產(chǎn)日常管理活動與資產(chǎn)管理系統(tǒng)有效的整合在一起,從而達(dá)到實物信息與系統(tǒng)信息的實時
5、同步一致。通過RFID這這項新技術(shù)實實現(xiàn)遠(yuǎn)程、動動態(tài)、實時的的 HYPERLINK t _blank 設(shè)備資產(chǎn)數(shù)據(jù)據(jù)采集,替換換傳統(tǒng)資產(chǎn)管管理方式的前前臺人工數(shù)據(jù)據(jù)采集,更好好的與后臺計計算機數(shù)據(jù)庫庫結(jié)合,實現(xiàn)對日常管理理中的資產(chǎn)新新增、調(diào)撥和和盤點等信息息進(jìn)行實時監(jiān)監(jiān)控、記錄和和自動更新,同同時采集人員員信息,從而而避免因人為為因素造成的的信息失真引引起管理效能能的下降,為為單位領(lǐng)導(dǎo)、網(wǎng)網(wǎng)絡(luò)規(guī)劃投資資與設(shè)計等部部門提供更準(zhǔn)準(zhǔn)確、實時的的網(wǎng)絡(luò)資產(chǎn)實實物信息,提提高資產(chǎn)使用用效率,有效效降低和控制制日常管理和和生產(chǎn)成本,從從而創(chuàng)造良好好的社會及經(jīng)經(jīng)濟(jì)效益。圖14-1 智智能電子商務(wù)務(wù)倉儲配送系系
6、統(tǒng)框架圖14.3 智智能電子商務(wù)務(wù)倉儲配送系系統(tǒng)開發(fā)環(huán)境境準(zhǔn)備(1)安裝SQQL Sevver 20005(省略略);(2)安裝Viisual Studdio 20010(省略略);(3)安裝PoowerDeesigneer(省略)。14.4 智智能電子商務(wù)務(wù)倉儲配送系系統(tǒng)功能設(shè)計計主要包括出廠商商品登記、環(huán)環(huán)境參數(shù)監(jiān)控控、商品入庫庫、商品出庫庫、入庫/揀揀貨提醒、商商品監(jiān)控和動動態(tài)盤點。出廠商品登記:針對于桌面讀寫寫器對RFIID多卡的操操作。實現(xiàn)對多卡卡號號的讀取。同時對多卡進(jìn)行行信息的寫入入。根據(jù)實際情況對對寫入信息進(jìn)進(jìn)行校驗。環(huán)境參數(shù)監(jiān)控:通過WSN無線線傳感網(wǎng)絡(luò)的的溫濕度節(jié)點點獲取當(dāng)
7、前環(huán)環(huán)境的溫度和和濕度,并在在程序界面上上顯示。商品入庫:通過桌面讀寫器器進(jìn)行商品入入庫操作。自動生成入庫單單號以“i”開頭,最初初的入庫單號號為“i10000000000001”為13位。通過桌面讀寫器器進(jìn)行多卡識識別并進(jìn)行綁綁定內(nèi)容包括括一級分類、二二級分類、商商品名稱、規(guī)規(guī)格型號、商商品編碼、單單位、貨位。自動為入庫商品品分配貨位。顯示入庫商品數(shù)數(shù)量。打印入庫單,入入庫單內(nèi)容包包括商品名稱稱、所分配貨貨架、商品數(shù)數(shù)量。在入庫單右下角角顯示條形碼碼,在條碼下下方顯示條碼碼值。商品出庫:通過復(fù)用讀寫器器進(jìn)行出庫操操作。自動生成出庫單單號以“o”開頭,最初初的出庫單號號為“o100000000
8、00001”為13位。可選擇商品名稱稱、所在貨位位、出庫數(shù)量量。對出庫商品進(jìn)行行綁定包括商商品卡號、商商品名稱、數(shù)數(shù)量、所在貨貨位編號。打印出庫單,出出庫單內(nèi)容包包括商品名稱稱、所在貨位位、商品數(shù)量量。在出庫單右下角角顯示條形碼碼,在條碼下下方顯示條碼碼值。入庫/揀貨提醒醒:通過入庫單或出出庫單對貨架架進(jìn)行操作實實現(xiàn)智能出庫庫或入庫。通過條碼槍掃描描打印好的出出庫單或入庫庫單判斷出庫庫還是入庫。對出庫或入庫商商品進(jìn)行綁定定顯示并顯示示數(shù)量,對要要操作的貨位位使其指示燈燈亮起。出庫或入庫完成成后指示燈熄熄滅。商品監(jiān)控:對貨架的整體監(jiān)監(jiān)控。對貨架進(jìn)行整體體實時監(jiān)控。綁定每個貨位的的商品信息,包包括
9、商品卡號號和名稱,并并綁定數(shù)量。當(dāng)貨架上的商品品數(shù)量與庫存存數(shù)量不同時時,指示燈亮亮起。動態(tài)盤點:對貨架的盤點操操作。綁定商品的名稱稱、庫存數(shù)量量和實際數(shù)量量。對比庫存數(shù)量和和實際數(shù)量。顯示盤點結(jié)果。14.5 智智能電子商務(wù)務(wù)倉儲配送系系統(tǒng)數(shù)據(jù)庫設(shè)設(shè)計圖14-2數(shù)據(jù)據(jù)庫表結(jié)構(gòu)匯匯總展示14.6 智智能電子商務(wù)務(wù)倉儲配送系系統(tǒng)程序設(shè)計計注:因為給合實實踐項目所涉涉及的程序代代碼比較多,以以下只將關(guān)鍵鍵代碼信息列列出來,關(guān)于于變量定義、串串口打開與關(guān)關(guān)閉、構(gòu)造函函數(shù)、一些操操作事件都在在教學(xué)資源中中提供。1、出廠商品登登記(1)界面設(shè)計計圖14-3出廠廠商品登記界界面(2)窗體屬性性設(shè)置向控件中添
10、加22個grouupbox控控件,6個標(biāo)標(biāo)簽,6個ttextboox,4個按按鈕和1個添添加滾動條的的textbbox控件??丶QNameTextgroupbooxgbCardssID商品標(biāo)簽groupbooxgbGoodssInfo商品信息控件名稱NameTextLabellblCateegory一級分類LabellblTypee二級分類LabellblNamee商品名稱LabellblSpeccificaation規(guī)格型號LabellblCodee商品編碼LabellblUnitt單位控件名稱NameTextTextboxxlblCateegoryTextboxxlblTypeeText
11、boxxlblNameeTextboxxlblSpeccificaationTextboxxlblCodeeTextboxxlblUnitt控件名稱NameScrollBBarsTexttxtCarddsIDVerticaal控件名稱NameTextButtonbtnReaddCardssID讀卡IDButtonbtnCleaarCarddsID清空(商品標(biāo)簽簽中)ButtonbtnWritteCardd寫卡ButtonbtnCleaarInfoo清空(商品信息息中)(3)編寫后臺臺代碼獲取讀取到的卡卡號的泛型集集合。/ / 獲取ID的的泛型集合方方法 / privvate vvoid GGe
12、tID() /VCPPOGetCCardNuumberMMultipple()讀讀寫器讀取多多卡卡號方法法 cardNNo = tthis.rrfid.VVCPOGeetCarddNumbeerMulttiple(); 校驗方法,對寫寫入信息進(jìn)行行校驗。/ / 寫入信息校校驗 / / privvate bbool CCheckIInput() if (tthis.ttxtCattegoryy.Textt = ) MMessaggeBox.Show(一級分類類不能為空!); rreturnn falsse; else if (tthis.ttxtTyppe.Texxt = ) MMessagge
13、Box.Show(二級分類類不能為空!); rreturnn falsse; else if (tthis.ttxtNamme.Texxt = ) MMessaggeBox.Show(商品名稱稱不能為空!); rreturnn falsse; else if (tthis.ttxtSpeecificcationn.Textt = ) MMessaggeBox.Show(規(guī)格型號號不能為空!); 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; 窗體載入事件,打打開讀寫器連連接串口。/ / 窗體載入事事件 / / / privvate vvoid ffrmIniitReg_Load(objecct sennder, EventtArgs e) OpenRRFID(); 讀卡按鈕事件,每每條卡號分別別占一行,所所以在添加是是后要跟“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 = ; 寫卡按鈕事件/ / 寫卡按鈕事事件 / /
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(寫入成功功!); 商品信息清空按按鈕/ / 清空信息按按鈕事件 / / / 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è)計計圖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)編寫后臺臺代碼:獲取節(jié)點的基本本信息,向?qū)?yīng)的節(jié)點發(fā)發(fā)送了信息后后,節(jié)點會返返回信息。即即可獲取節(jié)點點的基本信息息。 / / 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(); /獲取流水號號 thhis.seequencceID_TT1 = tthis.mmessaggeT1.GGetSeqquenceeID(); /實例化節(jié)點點泛型 Liist nnodeLiist = new LList(); /實例化節(jié)點點 GRRIP_Noode noode
21、 = new GGRIP_NNode(); /獲取節(jié)點編編號 noode.IEEEEAdddress = dtbb.RowssiIEEEAAddresss.TToStriing(); /獲取節(jié)點地地址 /node.ShorttAddreess = Conveert.TooUInt116(100255, 16); noode.ShhortAdddresss = Coonvertt.ToUIInt16(dtb.RRowsiiShhortAdddresss.TooStrinng(), 16); /將節(jié)點信息息添加到節(jié)點點泛型中 noodeLisst.Addd(nodee); /將節(jié)點數(shù)量量轉(zhuǎn)換成by
22、yte類型 byyte deeviceCCount = Connvert.ToBytte(noddeListt.Counnt); /將節(jié)點類型型轉(zhuǎn)換成byyte類型 byyte seensorCClass = Connvert.ToBytte(dtbb.RowssiNodeCClass); /將節(jié)點型號號轉(zhuǎn)換成byyte類型 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); /接收消息的的長度的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); /實例化接收收的消息頭 GRRIP_MeessageeHead msgHeeadReccv = nnew GRRIP_MeessageeHead(); /實例化接收收的消息體 GRRIP_MeessageeBody_Sensoor_Reaad_Ressp msggBodyRRecv = new GRIP_MessaageBoddy_Sennsor_RR
26、ead_RResp(); /獲取接收的的數(shù)據(jù)包信息息 thhis.meessageeT1.GeetReciiveMesssage(msgReecv, mmsgHeaadRecvv, msggBodyRRecv); /判斷消息體體長度和流水水號 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指令錯誤誤: + ex.Meessag
28、ee); 編寫線程方法,實實時監(jiān)控的線線程方法,在在該線程中使使用的是對溫溫濕度節(jié)點實實時的讀取并并獲取溫濕度度信息。 #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); 心跳包方法,為為了防止在沒沒有通信的時時候網(wǎng)關(guān)將連連接的用戶踢踢出連接,在在40秒時發(fā)發(fā)送一個空的的心跳包。并并接收返回信信息。 #regiion T11_HearrtBeatt privvate vvoid ttimer11_Tickk(objeect seender, EvenntArgss e) this.seconnd+; if (tthis.ssecondd = 55) /這里是為了了將放回的溫溫濕度節(jié)點的的信息顯示,每每隔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、商品入庫在商品入庫的操操作前,我們們需要編寫一一個類來將要要處理的對象象進(jìn)行封裝。如如:入庫單,每每個貨物的信信息等。(1)界面設(shè)計計圖14-5商品品入庫界面(2)修改控件件屬性設(shè)置控件名稱NameTextLabellblInCoode入庫單號:Lab
52、ellblNum數(shù)量:LabellblGooddsInDeetail入庫詳單:控件名稱NameReadOnllyTextBoxxtxtInCoodeTrueTextBoxxtxtNumTrue控件名稱NameTextButtonbtnPrinnt入庫單打印ButtonbtnOk確定ButtonbtnCleaar清空商品入庫索引號NameText0colCateegory一級分類1colTypee二級分類2cloNamee商品名稱3colSpeccificaation規(guī)格型號4colCodee商品編碼5colUnitt單位6colCarggo貨位(3)模塊編寫寫后臺代碼定義私有變量,接接口類需要
53、實實例化兩次,不不同名稱,因因為在調(diào)用過過程中打開后后讀寫器串口口后無法對復(fù)復(fù)用器的方法法進(jìn)行調(diào)用:獲取商品數(shù)量,讀讀取到的卡號號的數(shù)量:/ / 獲取商品數(shù)數(shù)量 / privvate vvoid GGetNummber() cardNNo = tthis.rrfidVCCPO.VCCPOGettCardNNumberrMultiiple(); this.txtNuum.Texxt = ccardNoo.Counnt.ToSStringg(); 對掃描的貨物做做操作,界面面顯示,貨位位分配任務(wù)的的方法: / / 對掃描的貨貨物做操作,界界面顯示,貨貨位分配任務(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(沒有檢測測到貨物,請請檢查); 自動為商品分配配貨位,設(shè)定定分配貨位每每個貨位最多多存放6個商商品。 分配貨位 / / 貨位分配 / / 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ù)量已滿,請請查看); 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ì)期,這這里為了演示示我們可以直直接添加上一一個值。貨物物
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); 生成入庫單號方方法/ / 生成入庫單單號 / privvate sstringg GeneerateCCode() /codde = I + Num.TToStriing(); long codeNNo = 110000000000001; strinng codde = ; strinng coddeLastt = ; codeLLast = Prog
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 勞動合同范本題目
- 農(nóng)村水田租賃承包合同范本
- 企業(yè)汽車銷售合同范本
- 代理買賣二手車合同范本
- 代領(lǐng)購房合同范本
- 一般經(jīng)銷合同范例
- 個人購貨采購合同范本
- 關(guān)于裝修貸款合同范本
- 升旗臺合同范本
- 前臺勞務(wù)派遣合同范本
- 2025勞動合同法重點法條導(dǎo)讀附案例詳解
- 2025年內(nèi)蒙古自治區(qū)政府工作報告測試題及參考答案
- 2024年全國中學(xué)生生物學(xué)聯(lián)賽試題及答案詳解
- 2025年度花卉產(chǎn)業(yè)大數(shù)據(jù)服務(wù)平臺建設(shè)合同2篇
- 2025年度花卉產(chǎn)業(yè)大數(shù)據(jù)平臺建設(shè)合同3篇
- 魚骨圖培訓(xùn)課件
- 小學(xué)班會-交通安全伴我行(共25張課件)
- 建筑施工現(xiàn)場安全警示(案例)
- 《生產(chǎn)與運作管理 第4版》課件 第1、2章 概論、需求預(yù)測與管理
- 護(hù)理禮儀與人文關(guān)懷
- 患者隱私保護(hù)的考試試題及答案
評論
0/150
提交評論