物聯(lián)網(wǎng)Demo代碼解析_第1頁
物聯(lián)網(wǎng)Demo代碼解析_第2頁
物聯(lián)網(wǎng)Demo代碼解析_第3頁
物聯(lián)網(wǎng)Demo代碼解析_第4頁
物聯(lián)網(wǎng)Demo代碼解析_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

中智訊代碼解析主要內(nèi)容常見問題框架分析實(shí)例講解內(nèi)容一常見問題常見問題程序的框架是怎樣的?解析協(xié)議的時機(jī)?數(shù)據(jù)幀最基本包含哪些內(nèi)容?有哪些節(jié)點(diǎn)類型?有沒有數(shù)據(jù)存儲?程序的框架服務(wù)端客戶端1客戶端2客戶端3客戶端4……解析協(xié)議的方式取決于接收數(shù)據(jù)的方式,有輪詢,有應(yīng)答式,這里使用的是應(yīng)答式,也就是說只有當(dāng)你請求了,才會獲得信息,而不是循環(huán)讀取。既然是應(yīng)答式,那么接收幀解析的方式跟請求幀的解析方式需要保持一致。數(shù)據(jù)幀最基本包含內(nèi)容請求幀應(yīng)答幀請求幀請求的種類分為3種:請求搜尋網(wǎng)絡(luò)(SEARCH_NETWORK)請求終端節(jié)點(diǎn)(另外2種是協(xié)調(diào)器和路由節(jié)點(diǎn))信息(NODE_ENDPOINT)請求應(yīng)用(APP_MSG)消息請求搜尋網(wǎng)絡(luò)(SEARCH_NETWORK)SOPCMD1lengthADDRCMD2數(shù)據(jù)1數(shù)據(jù)2數(shù)據(jù)3……FCS0x00010x00020x00050x00140x0015軟件版本硬件版本設(shè)備類型MAC地址鄰接表個數(shù)及地址讀0x00010x2900應(yīng)答幀的格式1個Byte2個Byte返回信息…….FCSADDRCMD狀態(tài)碼(1byte)參數(shù)標(biāo)識(2byte)參數(shù)值……請求終端節(jié)點(diǎn)信息(NODE_ENDPOINT)SOPCMD1lengthFCS0x0A06目的地址(2byte)Addressofinterest(2byte)Ep?(1byte)0?(1byte)回復(fù)幀格式?沒有這個處理例程-.-請求應(yīng)用(APP_MSG)消息SOPReq(2byte)Length(1byte)netAddr(2byte)CMD(2byte)數(shù)據(jù)……FCS節(jié)點(diǎn)類型溫度傳感器濕度傳感器光照傳感器燈光傳感器人體傳感器Co2傳感器三軸加速度傳感器Rfid傳感器指紋傳感器距離傳感器數(shù)據(jù)存儲指紋傳感器氣壓傳感器RFID傳感器3軸加速度傳感器內(nèi)容二框架分析應(yīng)用程序服務(wù)端2點(diǎn)擊,觸摸,等動作1請求和響應(yīng)Zigbee協(xié)議溫度傳感器濕度傳感器光照傳感器燈光傳感器人體傳感器Co2傳感器三軸加速度Rfid、指紋、距離……程序流程1.連接服務(wù)端。2.請求查找網(wǎng)絡(luò)。3.根據(jù)返回的信息組織程序界面。4.如果返回信息表明找不到信息,跳到2。5.如果返回信息找到了網(wǎng)絡(luò),則組織信息,形成拓?fù)鋱D。6.如果用戶點(diǎn)擊了拓?fù)鋱D上的某個節(jié)點(diǎn),則跳轉(zhuǎn)至對應(yīng)節(jié)點(diǎn)的界面。在那個界面中顯示用戶選擇的節(jié)點(diǎn)信息。7.如果用戶點(diǎn)擊返回,則退出。內(nèi)容三實(shí)例講解19查找網(wǎng)絡(luò)privatevoidconnect2server()

{

mConnectStatus=1;

mZbThread.requestConnect(mZigBeeGetWay,8320);//

setTitle("正在連接到ZigBee網(wǎng)關(guān)--"

+this.mZigBeeGetWay);

setProgressBarIndeterminateVisibility(true);

}voidrequestConnect(Stringhost,intport){mProx.connect(host,port);}publicvoidconnect(Stringhost,intport){mLink.requestConnect(host,port);}publicint

requestConnect(Stringhost,intport)//應(yīng)答鏈接

{Messagemsg;

intret;synchronized(mLockConn){if(mConnectStatus==CONNECT_DISCONNECT){

msg=Message.obtain();

msg.what=REQUEST_CONNECT;msg.arg1=port;msg.obj=host;

mConnectStatus=CONNECT_CONNECTING;

mWorkerHandler.sendMessage(msg);

ret=0;}elseret=1;

}returnret;

}publicvoidhandleMessage(Messagemsg)

{

switch(msg.what)

{caseREQUEST_CONNECT:

doRequestConnect(msg);break;privatevoiddoRequestConnect(Messagemsg)

{Stringhost=(String)msg.obj;

intport=msg.arg1;

intret;

ret=linkOpen(host,port);

msg=Message.obtain();if(ret<0){

mConnectStatus=CONNECT_DISCONNECT;/*notifymainthread*/

msg.what=NOTIFY_CONNECT_FAIL;}else{

mConnectStatus

=CONNECT_CONNECTED;

mReceiver=newReceiver();

msg.what=NOTIFY_CONNECT_ON;

}/*notifymainthread*/

mWorkerHandler.sendMessage(msg);

}privateint

linkOpen(Stringhost,intport)//建立連接

{try{//mSocket=newSocket(host,port);

mSocket=newSocket();

mSocket.connect(newInetSocketAddress(host,port)/*,30*1000*/);

}catch(Exceptione){//e.printStackTrace();Log.e(TAG,"connecthost:"+host+":"+port);return-1;}try{mReader=mSocket.getInputStream();mWriter=mSocket.getOutputStream();}catch(IOExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();return-2;}return0;}rlen=mReader.read(dat);byte[]d=newbyte[rlen];for(inti=0;i<rlen;i++)d[i]=dat[i];//msg=Message.obtain();//msg.what=NOTIFY_CONNECT_DATA;//msg.obj=d;//mWorkerHandler.sendMessage(msg);mConnectListener.onConnectData(d);}}else{/*connecton*/mConnectStatus=2;setTitle("正在搜索ZigBee網(wǎng)絡(luò)...");setProgressBarIndeterminateVisibility(true);mSearchingZbNet=1;mZbThread.requestSerachNetWrok();}voidrequestSerachNetWrok(){Messagemsg=Message.obtain();msg.what=REQUEST_SEARCH_NETWORK;mMyHandler.sendMessage(msg);}publicvoidhandleMessage(Messagemsg)

{switch(msg.what){caseREQUEST_SEARCH_NETWORK:

doSearchNetWork();break;privatevoiddoSearchNetWork(){Top.DistroyTree(mTree);//devinfo=mProx.syncRequestSYS_GET_DEVICE_INFO();byte[]ninfo=mProx.syncRequestSYS_APP_MSG(2,newbyte[]{(byte)(0>>8),(byte)0,//addr0x00,0x01,//cmd0x00,0x01,0x00,0x02,0x00,0x05,0x00,0x14,0x00,0x15});if(ninfo==null||ninfo.length<29){/*getdevinfofail*/Log.e(TAG,"Can'tgettherootdeviceinfo.");Messagemsg=Message.obtain();msg.what=MSG_NEW_NETWORK;msg.arg1=-1;mMainHandler.sendMessage(msg);return;}/*notifyui*/Top.DrawTop(mTree);Messagemsg=Message.obtain();msg.what=MSG_NEW_NETWORK;msg.arg1=1;mMainHandler.sendMessage(msg);buildNetWork(mTree,childs);/*notifyui*/Top.DrawTop(mTree);msg=Message.obtain();msg.what=MSG_NEW_NETWORK;msg.arg1=0;mMainHandler.sendMessage(msg);}privatevoidbuildNetWork(Nodepa,int[]cli)//建立ZigBee{for(inti=0;i<cli.length;i++){/*getchildiinfo*/try{Thread.currentThread().sleep(500);}catch(InterruptedExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}byte[]ninfo=mProx.syncRequestSYS_APP_MSG(2,newbyte[]{(byte)(cli[i]>>8),(byte)cli[i],//addr0x00,0x01,//cmd0x00,0x01,0x00,0x02,0x00,0x05,0x00,0x1

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論