TinyOS操作系统开发技术及实践(西电版)实践5 TinyOS网络协议.ppt_第1页
TinyOS操作系统开发技术及实践(西电版)实践5 TinyOS网络协议.ppt_第2页
TinyOS操作系统开发技术及实践(西电版)实践5 TinyOS网络协议.ppt_第3页
TinyOS操作系统开发技术及实践(西电版)实践5 TinyOS网络协议.ppt_第4页
TinyOS操作系统开发技术及实践(西电版)实践5 TinyOS网络协议.ppt_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实践5根据5TinyOS网络协议、实践指导知识的开拓、实践指导实践5.G.1分发协议收集和传输烟信息。 (1)本例程为了实现信息的收集和传输,程序的实现部分需要分为发送部分和接收部分这两个部分来作成。 (2)发送部分程序实现烟信息的收集和传输。 (3)接收部分程序,实现信息的接收和向PC的数据传输。 (4)下载调试,观察现象。【参考解决方法】1 .创建工程文件夹,在/mytinyos/apps目录下新建SmokeTest的文件夹(步骤参照实践5.G.1 ),在SmokeTest文件夹下创建Sender文件夹和rec 其中,Sender文件夹是实现数据发送部分的程序接收文件夹是实现数据接收的程序的一部分。 2 .在发送部分程序的“mytinyos/apps/SmokeTest/Sender”目录中,新建SmokeTestSApp.nc、SmokeTestSC.nc和makefile三个文件。 其中smoketestssc.nc文件实现数据的收集和发送,SmokeTestSApp.nc文件是smoketestssc.nc文件的顶级附件。(1)smokesapp.nc的主要代码如下: # include bliktoadio.h configurationsmoketestsappc 000000000000000000000 e6componentsmainc; SmokeTestSC.Boot-MainC; componentsActiveMessageC; smoketestsc.radio控制- activeemessagec; componentsDisseminationC; smoke tests.dissemination control-dissemination c; componentsnewdisseminatorc (uint 16 _ t,0 x 2345 ) as对象16 c; SmokeTestSC.Value16-Object16C; smoketestsc .更新16-object 16 c; componentsLedsC; SmokeTestSC.Leds-LedsC; componentsnewTimerMilliC (); SmokeTestSC.Timer-TimerMilliC;smoketestsc.packet-activeemessagec; smoketestsc.am分组- activeemessagec; smoke tests sc.am send-activemessagec.am send 唯一计数( smoke app ) ; componentsnewAdcC()asADSensor; smoketestsc.adsensiorcontrol-dsensor; smoke tests sc.adsensisorread-dsensor; ,(2)SmokeTestSC.nc文件的主要代码实现如下: # include # include ADC.h # include bliktoadio.h module smoke tests uses 接口包;interfacePacket; 接口ampacket; 接口acereadasadsensorread; interaceadccontrolasadsensorconrol; 接口引导; interacesplitcontrolasradiocontrol; interacestdcontrolasdisseminationcontrol; interacedissemationvalueasvalue 16; interacedissemiconductionupdateasupdate 16; 接口发光二极管; 接口定时器; 实施 uint 16 _ TT计数器; am_addr_tDES=0 x0003; 选择P0.7作为传感器收集任务*/taskvoidsensorTask()/收集频道,calladsensiorcontrol.enable (ADC _ ref _ avdd、ADC_14_BIT、ADC_AIN3) /ad信息callADSensorRead.read (); eventvoidboot.booted () callradiocontrol.start (); eventvoidradioocontrol.start done (error _ t result ) if (result!=success ) callradiocontrol.start (); else calldissemitioncontrol.start (); 计数器=0; callTimer.startPeriodic(2000) ,eventvoidradioocontrol.stop done (error _ t result ) eventvoidtimer.fired () postsenortask (); eventvoidvalue 16.changed () const uint 16 _ t * newval=call value 16.get (); callLeds.led2Toggle (); counter=*newVal; eventvoidamsend.send done (message _ t * msg,error _ terr ) callleds.led1toggle (); ,/*ADC读取完成后,读取事件*/eventvoidadserread.readdone (error _ t result,int16_tval)message_tpkt; blinkadiomsg*btrpkt; 计数器=val; 在callUpdate16.change,if (callamsend.send (am _ broadcast _ addr,(BlinkRadio.h )文件中定义了发送数据的结构。 具体代码如下: # ifndef _ blink adio _ h # define _ blink adio _ htypedefnx _ structblinkadiomsg NX _ uint 16 _ tnode id; nx_uint16_tnum; blinkktoadiomsg; #endif,(4)在makefile中描述程序的顶层附件。 其代码接受component=smoketestsappccflags=-I $ (toss dir )/lib/net-I % t/lib/net/drill include $ (makerules ),3 .一些程序SmokeTestRApp.nc、SmokeTestRC.nc和化妆文件。 其中SmokeTestRC.nc文件实现通过数据的接收和串行向PC传输数据,smoketenstestrapp.nc文件是SmokeTestRC.nc文件的顶层附件。SmokeTestRApp.nc的主要代码如下: # include blink adio.h configurationsmoketestrappc componentssmoketestrc,MainC; SmokeTestRC.Boot-MainC; componentsActiveMessageC; smoke test RC.radio控制- activeemessagec; componentsDisseminationC; smoke test RC.dissemination control-dissemination c; componentsnewdisseminatorc (uint 16 _ t,0 x 2345 ) as对象16 c; smoke test RC .更新16-object 16 c; 组件sledsc; SmokeTestRC.Leds-LedsC; componentsnewTimerMilliC (); SmokeTestRC.Timer-TimerMilliC; smoke test RC.packet-activeemessagec; smoke test RC.am packet-activeemessagec; smoke test RC.receive-activemessagec.receive unique count ( smoke app ) ; componentsplatformserialalc; smoke test RC.STD控制-平台序列. STD控制; smoke test RC.UART stream-plaformserialal.UART stream; ,(2)SmokeTestRC.nc文件的主要代码实现如下: # include # blink adio.h modulesmoketestrc uses 接口接收; 接口包;interfacePacket; 接口ampacket; 接口stdcontrol; 接口uartstream; 接口引导; interacesplitcontrolasradiocontrol; interacestdcontrolasdisseminationcontrol; interacedissemiconductionupdateasupdate 16; 接口发光二极管; 接口定时器; 实施 uint 16 _ TT计数器; uint8_tm_send_buf2;eventvoidboot.booted () callradiocontrol.start (); /打开串行传输callStdControl.start (),eventvoidradioocontrol.start done (error _ t result ) if (result!=success ) callradiocontrol.start (); else calldissemitioncontrol.start (); 计数器=0; callTimer.startPeriodic(2000) ,eventvoidradiocontrol.stop done (error _ t result ) ,eventvoidtimer.fired () , 接收/*信息,串行接收PC */event消息_ t *接收. receive (消息_ t * msg,void *支付,uint8_ tlen ) callleds.led0toggle (); if (len=sizeof (blinkadiomsg ) ) blinkadiomsg * btr PKT=(blinkadiomsg * ) payload; 计数器=btr PKT-num; if (btr PKT -节点=0x 0003 ) m _ send _ buf 0=计数器8; m_send_buf1=counter,callUartStream.send(m_send_buf,2 ); returnmsg; asynceventvoiduartstream.send done (uint8_ t * buf,uint16_tlen,error_terror),asynceventvoiduartstream.received byte (uint 接收到接收命令要接收的长度时,该事件*/asynceventvoiduartstream.received one (uint8_ t * buf,uint16_tlen,error_terror), (在BlinkRadio.h文件中定义了发送数据的结构,具体代码如下: # ifndef _ bliktoadio _ h # define _ bliktoadio _ htypedefnx _ structbliktoadiomsg NX nx_uint16_tnum; blinkktoadiomsg; #endif,(4)在makefile中描述程序的顶层附件。 其代码是component=smoketestsappccflags=-I $ (toss dir )/lib/net-I % t/lib/net/drill include $ (makerules ), 4 .实验结果,将收发的程序下载到两个不同的CC2530开发板上(因为用于接收程序的开发板需要串行端口,所以提出了接收程序的开发板用Zigbee协调器),并下载程序图5-1中收集的烟信息、知识增强AODV路由协议AODV路由协议是每组的路由协议。 此协议用于特定网络中的移动节点。 可以通过动态变化的点对点网络确定通向目的地的路线,具有访问速度快、计算量少、内存消耗低、网络负荷轻等特征。 AODV路由协议使用所需的序列号避免了传统的距离阵列协议中出现的许多问题(如无限计数问题),以便在路由控制信息发生异常时,始终不会发生回送。 AODV算法的目

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论