物联网应用技术实训指导书HD(共63页).doc
精选优质文档-倾情为你奉上淮安信息职业技术学院电子工程学院 “物联网应用技术”项目实训指导书2013年05月前言 智能家居最早是在20世纪80年代兴起于日本和美国,并在20世纪90年代进入我国,经过十几年的发展,特别是随着我国的住宅产业发展而迅速发展起来。而且在我国智能家居引起越来越多的关注,随着人民生活水平的提高,人们对于居住环境智能化、舒适程度等要求会越来越高,这给智能家居的发展提供了很大的市场空间。然而由于我国的居住模式和发达国家存在很大的差别,我国人口众多,城市多以密集型住宅为主,这造成了国内外在智能家居的发展和技术上存在了很大的差别。国内智能化更多地注重于整个小区智能化的建设。最早从做对系统开始,并且逐渐由过去的非可视对讲过渡到目前的以黑白可视对讲为主流,同时一些集成了安防功能、抄表功能,短信息等功能的对讲产品出现并在一些地区应用。由于可视对讲的发展迅速,一些厂家的宣传,给人造成了一种错误的观念,小区只要做可视对讲或者综合布线就称得上智能化小区。随着对智能家居的认识越来越深入,人们逐渐意识到智能化的真正主体是家居的智能化,更多地体现在家庭内部自动化。所以20世纪90年代后期,一些企业开始引入国外的智能家居技术和产品在国内推广,还有一些大的集团公司也看好该领域,通过各种途径介入,促进整个行业迅速发展。正如当今如火如荼的家电行业,无论是白色家电,还是黑色家电,以及其他一些日用家电无不嵌入了自动化控制,其智能化程度已远是以前的普通家电所不及了。专心-专注-专业目录 准备知识1:1.1模块认识应用设备包括:环境监测模块、家居安防模块、家居三表模块、家居电子支付模块、开关动作电路、模拟电压控制电路、总线型控制电路、网络 USB型控制电路。硬件设备主要包含各类传感器和执行器、安防监测设备、三表设备等。准备知识2:2.1传感器认识传感器类型包括:开关量传感器、数字量传感器、模拟量传感器。开关量传感器:热释电红外传感器数字量传感器:温湿度传感器模拟量传感器:光敏、可燃气体、气压、噪声、震动、烟雾传感器2.1.1温湿度传感器(数字量)我们这里选用的的是属于Sensirion温湿度传感器家族中的贴片封装系列的SHT11。它将传感元件和信号处理电路集成在一块微型电路板上,输出完全标定的数字信号。传感器采用专利的CMOSens® 技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电容性聚合体测湿敏感元件、一个用能隙材料制成的测温元件,并在同一芯片上,与14 位的A/D 转换器以及串行接口电路实现无缝连接。因此,该产品具有品质卓越、响应迅速、抗干扰能力强、性价比高等优点。实物图如下: 图 1-31.接口定义(注意:NC端口必须悬空)1.1电源引脚 (VDD, GND)SHT11 的供电电压范围为2.4-5.5V, 建议供电电压为3.3V。在电源引脚(VDD,GND)之间须加一个100nF的电容,用以去耦滤波。见图1-4。SHT1x 的串行接口,在传感器信号的读取及电源损耗方面,都做了优化处理;传感器不能按照I2C 协议编址,但是,如果I2C 总线上没有挂接别的元件,传感器可以连接到I2C 总线上,但单片机必须按照传感器的协议工作。 图 1-4图 1-4: 典型应用电路, 包括上拉电阻 RP 和 VDD 与 GND之间的去藕电容。2.1.2 串行时钟输入(SCK)SCK 用于微处理器与SHT1x 之间的通讯同步。由于接口包含了完全静态逻辑,因而不存在最小SCK 频率。DATA 引脚为三态结构,用于读取传感器数据 . 当向传感器发送命令时, DATA 在 SCK上升沿有效且在 SCK 高电平时必须保持稳定。DATA 在 SCK 下降沿之后改变。为确保通讯安全,DATA 的有效时间在 SCK 上升沿之前和下降沿之后应该分别延长至 TSU and THO 参见图 1-5。当从传感器读取数据时, DATA TV 在 SCK变低以后有效,且维持到下一个 SCK的下降沿 。为避免信号冲突,微处理器应驱动DATA 在低电平。需要一个外部的上拉电阻(例如:10k)将信号提拉至高电平。上拉电阻通常已包含在微处理器的I/O 电路中。图 1-5:时序图,缩写词在表 1-1 有注释。 加重的 DATA线由传感器控制,普通的 DATA 线 由单片机控制. 有效时间依据 SCK的时序。请注意 数据读取的有效时间为前一个切换的下降沿。表 1-1: SHT11 I/O 信号特性2 传感器的通讯2.1启动传感器首先,选择供电电压后将传感器通电,上电速率不能低于1V/ms。通电后传感器需要11ms 进入休眠状态,在此之前不允许对传感器发送任何命令。2.2发送命令用一组“ 启动传输”时序,来完成数据传输的初始化。它包括:当SCK 时钟高电平时DATA 翻转为低电平,紧接着SCK 变为低电平,随后是在SCK 时钟高电平时DATA 翻转为高电平。参见图 1-5。图 1-5: "启动传输" 时序下述方式表示已正确地接收到指令:在第8 个SCK 时钟的下降沿之后,将DATA 下拉为低电平(ACK 位)。在第9 个SCK 时钟的下降沿之后,释放DATA(恢复高电平)。表 1-2 SHT11命令集2.1.3 温湿度测量发布一组测量命令(表示相对湿度RH,表示温度T)后,控制器要等待测量结束。这个过程需要大约20/80/320ms,分别对应8/12/14bit 测量。确切的时间随内部晶振速度,最多可能有-30%的变化。SHT1x 通过下拉DATA 至低电平并进入空闲模式,表示测量的结束。控制器在再次触发SCK 时钟前,必须等待这个“数据备妥”信号来读出数据。检测数据可以先被存储,这样控制器可以继续执行其它任务在需要时再读出数据。接着传输2个字节的测量数据和1 个字节的CRC 奇偶校验(可选择读取)。uC 需要通过下拉DATA 为低电平,以确认每个字节。所有的数据从MSB 开,右值有效(例如:对于12bit 数据,从第5个SCK 时钟起算作MSB;而对于8bit 数据,首字节则无意始义)。在收到CRC 的确认位之后,表明通讯结束。如果不使用CRC-8 校验,控制器可以在测量值LSB 后,通过保持ACK高电平终止通讯。在测量和通讯完成后,SHT1x 自动转入休眠模式。警告: 为确保自身温升小于0.1°C, SHT1x 的激活时间应小于测量值的10% e.g. 对于 12位测量,最多 1秒 1次。2.1.4 通讯复位时序如果与SHT1x 通讯中断,可通过下列信号时序复位:当DATA 保持高电平时,触发SCK 时钟9 次或更多,参阅图1-6。接着发送一个“传输启动”时序。这些时序只复位串口,状态寄存器内容仍然保留。图 1-6: 复位时序2.1.5 CRC-8 Checksum 计算数据传输的可靠性由 CRC-8的校验来保证. 它确保可以检测并去除所有错误数据。 如上所述,用户可选择是否使用 CRC功能。2.1.6状态寄存器SHT1x 的某些高级功能可以通过给状态寄存器发送指令来实现,如选择测量分辨率,电量不足提醒,使用 OTP 加载或启动加热功能等。下面的章节概括介绍了这些功能。详情可参阅应用说明“状态寄存器”。在读状态寄存器或写状态寄存器之后,8 位状态寄存器的内容将被读出或写入,参阅表 1-2。通讯请阅图 1-7和图 1-8状态寄存器各 bit请参阅表 1-3。图 1-7:状态寄存器写图 1-8:状态寄存器读图 1-9和 1-10描述了整个通讯过程。图 1-9: 测量时序. TS = 传输开始, MSB = 高有效字节,LSB =低有效字节, LSb = 低有效位。图1-10: 相对湿度测量时序示例,数值“0000010000110001”=1073=35.50%RH(未包含温度补偿)。DATA 有效时间已标出,可参见DATA 线。加粗部分的DATA 线由传感器控制,普通的DATA 线由单片机控制。表 1-3: 状态寄存器位描述2.1.7相对湿度湿度的非线性补偿请参阅图 1-11 为获得精确的测量数据,建议用以下公式进行信号转换。公式中的参数见表 1-4:表 1-4: 湿度转换参数99%以上的湿度已经接近饱和必须经过处理显示100%RH13. 请注意 湿度传感器对电压无依赖性。图 1-10: 从 SORH 到相对湿度的转化2.1.8 湿度信号的温度补偿由于实际温度与测试参考温度25 (77)的显著不同, 湿度信号需要温度补偿。温度校正粗略对应于0.12%RH/50%RH,温度补偿系数请参阅表1-5。表 1-5: 温度补偿系数2.1.9 温度转换系数由能隙材料PTAT (正比于绝对温度) 研发的温度传感器具有极好的线性。可用如下公式将数字输出(SOT)转换为温度值,温度转换系数请阅表1-6:表 1-6: 温度转换系数2.1.10 露点SHT1x 并不直接进行露点测量,,但露点可以通过温度和湿度读数计算得到.。由于温度和湿度在同一块集成电路上测量,SHT1x 可测量露点。露点的计算方法很多,绝大多数都很复杂。 对于-40 50°C 温度范围的测量,通过下面的的公式可得到较好的精度,参数见表 1-7:表 1-7: 露点(Td)计算参数请注意公式中的 “ln()” 表示自然对数. RH 和 T 应引用经过线性处理和补偿的数值。2.2光敏传感器(模拟量)光电传感器是采用光电元件作为检测元件的传感器。它首先把被测量的变化转换成光信号的变化,然后借助光电元件进一步将光信号转换成电信号。光电传感器一般由光源、光学通路和光电元件三部分组成。光电式传感器是以光电器件作为转换元件的传感器,光电检测方法具有精度高、反应快、非接触等优点,而且可测参数多,传感器的结构简单,形式灵活多样,因此,光电式传感器在检测和控制中应用非常广泛。1.光敏电阻结构图:图1-12. 硬件连接图图1-22.3可燃气体传感器(模拟量) MQ-2图1-3应用可用于家庭和工厂的气体泄漏监测装置, 适宜于液化气、丁烷、丙烷、甲烷、酒精、氢气、烟雾等的探测。MQ-2 气敏元件的结构和外形如图 1 所示(结构 A or B), 由微型 AL2O3陶瓷管、SnO2 敏感层,测量电极和加热器构成的敏感元件固定在塑料或不锈钢制成的腔体内,加热器为气敏元件提供了必要的工作条件。封装好的气敏元件有只针状管脚,其中个用于信号取出,个用于提供加热电流。A-A 和 B-B 管脚在电路中是短接的。2.4噪声传感器(模拟量)2.5气压传感器(模拟量)2.6震动传感器(开关量)2.7 红外热释电传感器(开关量)热释电红外线传感器主要是由一种高热电系数的材料,如锆钛酸铅系陶瓷、钽酸锂、硫酸三甘钛等制成尺寸为 2*1mm 的探测元件。在每个探测器内装入一个或两个探测元件,并将两个探测元件以反极性串联,以抑制由于自身温度升高而产生的干扰。由探测元件将探测并接收到的红外辐射转变成微弱的电压信号,经装在探头内的场效应管放大后向外输出。为了提高探测器的探测灵敏度以增大探测距离,一般在探测器的前方装设一个菲涅尔透镜,该透镜用透明塑料制成,将透镜的上、下两部分各分成若干等份,制成一种具有特殊光学系统的透镜,它和放大电路相配合,可将信号放大70 分贝以上,这样就可以测出 1020 米范围内人的行动。见实物图1-11。图 1-11 红外人体感应模块1.功能特点 全自动感应:人进入其感应范围则输出高电平, 人离开感应范围则自动延时关闭高电平,输出低电平。 光敏控制(可选择,出厂时未设)可设置光敏控制,白天或光线强时不感应。 温度补偿(可选择,出厂时未设):在夏天当环境温度升高至 3032,探测距离稍变短,温度补偿可作一定的性能补偿。 两种触发方式:(可跳线选择)a、不可重复触发方式:即感应输出高电平后,延时时间段一结束,输出将自动从高电平变成低电平;b、可重复触发方式:即感应输出高电平后,在延时时间段内,如果有人体在其感应范围活动,其输出将一直保持高电平,直到人离开后才延时将高电平变为低电平(感应模块检测到人体的每一次活动后会自动顺延一个延时时间段,并且以最后一次活动的时间为延时时间的起始点)。 具有感应封锁时间(默认设置:2.5S 封锁时间):感应模块在每一次感应输出后(高电平变成低电平),可以紧跟着设置一个封锁时间段,在此时间段内感应器不接受任何感应信号。此功能可以实现“感应输出时间”和“封锁时间”两者的间隔工作,可应用于间隔探测产品;同时此功能可有效抑制负载切换过程中产生的各种干扰。(此时间可设置在零点几秒几十秒钟)。 工作电压范围宽:默认工作电压 DC4.5V-20V。 微功耗:静态电流<50 微安,特别适合干电池供电的自动控制产品。 输出高电平信号:可方便与各类电路实现对接。2使用说明 感应模块通电后有一分钟左右的初始化时间,在此期间模块会间隔地输出0-3 次,一分钟后进入待机状态。 应尽量避免灯光等干扰源近距离直射模块表面的透镜,以免引进干扰信号产生误动作;使用环境尽量避免流动的风,风也会对感应器造成干扰。 感应模块采用双元探头,探头的窗口为长方形,双元(A 元 B 元)位于较长方向的两端,当人体从左到右或从右到左走过时,红外光谱到达双元的时间、距离有差值,差值越大,感应越灵敏,当人体从正面走向探头或从上到下或从下到上方向走过时,双元检测不到红外光谱距离的变化,无差值,因此感应不灵敏或不工作;所以安装感应器时应使探头双元的方向与人体活动最多的方向尽量相平行,保证人体经过时先后被探头双元所感应。为了增加感应角度范围,本模块采用圆形透镜,也使得探头四面都感应,但左右两侧仍然比上下两个方向感应范围大、灵敏度强,安装时仍须尽量按以上要求。3.红外热释电传感器的电路连接(见图1-12)2.8 RFID射频识别装置准备知识3:3.1 Flash Programmer下载程序快速入门1、物理地址是产品出厂时,生成的全球唯一的地址,命名为物理地址(MAC)。Primary读取的是物理地址,不可擦写。2、 修改用户地址点击Secondary,点击Read IEEE,在右方地址框输入所需地址,然后点击Write IEEE,即可写入地址,若写入成功,状态栏显示successfully。3、IAR编译协调器为coordinator,路由和终端为enddevice。*SampleAppMaster.c和SampleAppSlave.c已编译好时会生成的hex文件,在类似以下地址中:C:UsersHeDongDesktopZigbee整理总文件夹Zigbee程序精简版coordinatorv2.1ZStack-CC2530-2.2.0-1.3.0ProjectszstackSamplesSampleAppCC2530DBCoordinatorEBExe4、选择载入.hex文件,并下载。*如需使用物理地址,需在地址框中输入16个FF。项目一:应用设备的安装与调试一:硬件实物介绍 安装参考二:硬件设备的安装与调试实训硬件提供: 开关电源、3.3V电压模块、四路隔离继电器模块、PWM调压模块、温湿度传感器节点、 安防控制节点、光照度监控节点、电控锁、声光报警器、LED灯泡、RFID读卡器、智能电表等器件。目标:进行智能家居监控系统硬件设备的选型熟练掌握各模块的使用规则正确的进行应用设备的安装与接线要求:学生根据任务书要求,在工作环境中,进行智能家居监控系统硬件设备的选型、安装、接线、编程与调试()。1.1 工作任务1.1.1、器件安装学生将实训提供的开关电源、3.3V电压模块、四路隔离继电器模块、PWM调压模块、温湿度传感器节点、安防控制节点、光照度监控节点、电控锁、声光报警器、LED灯泡、RFID读卡器、智能电表等器件安装在装置的适当位置。1.1.2、系统接线图绘制、接线与布线()采用实训指定的Protel99 SE软件绘制系统接线图,并按接线图在实训装置上设计布线路径,完成智能家居控制系统的布线和各设备器件的接线。1.1.3、无线感知层的调测实训提供6个感知节点模块;并提供两个半定制ZigBee协议栈,网络拓扑已设定成星型网,包含“协调器”、“路由”及“终端”三种网络角色,其中“协调器”具备网络管理及数据转发功能,“路由”具备读取电表信息功能,“终端”具备RFID读卡功能,其余功能实现符合发布的“无线组网通信协议”。6个感知节点模块对应信息如表1所示:表 1 感知节点信息表节点模块节点号标签号网络角色传感器执行器感知节点0000协调器感知节点1011路由光照度传感器LED灯泡感知节点2022路由电表感知节点3033终端热释红外传感器声光报警器感知节点4044终端RFID读卡器感知节点5055终端电控锁(1)感知节点的设置根据工位号,按表2所示,设置6个感知节点模块的 “Secondary IEEE Address”。并贴好标签纸加以区别,其中“协调器”对应0号,其余对应“15”号。表 2 Secondary IEEE Address设置表Secondary IEEE Address(8个字节,16进制)0F10010FFFFF工位号节点号注:工位号(16进制):01、02、03、04、05、06、07、08、09、0A、0B、0C、0D、0E、0F、10、11、12、13、14、15节点号(16进制):00、01、02、03、04、05根据工位号,按表3所示,设置ZigBee网络的PANID。表 3 PANID 设置表工位号(16进制)0102030405060708PANID(16进制)20102020203020402050206020702080工位号(16进制)090A0B0C0D0E0F10PANID(16进制)209020A020B020C020D020E020F02100工位号(16进制)1112131415PANID(16进制)21102120213021402150根据ZigBee网络角色,下载对应Z-Stack到感知节点,将0号感知节点配置成“协调器”, 15号感知节点根据表1配置成“路由”和“终端”,并将这6个节点组成无线个域网,网络拓扑为星型网。(2)完善感知节点ZigBee协议栈代码(代码已给出,见附录1)根据表1,在15号感知节点上安装传感器及连接执行器,完成对应的感知节点功能配置。感知节点功能配置完毕后,修改ZigBee协议栈,完成下述功能: 感知节点1能根据无线接收到的指令,读取光照度值,并无线传输给“协调器”。 感知节点3能根据无线接收到的指令,读取热释红外传感器状态,并无线传输给“协调器”。 感知节点1能根据无线接收到的指令实现LED灯泡调光。 感知节点3能根据无线接收到的指令控制声光报警器。 感知节点5能根据无线接收到的指令控制电控锁。项目二: 程序的编写与调试2.1 初始操作:2.1.1 协议栈中网络结构类型修改:地址: NWKNwk_globals.hNwk_globals.h143行网状网#elif ( STACK_PROFILE_ID = HOME_CONTROLS ) #define MAX_NODE_DEPTH 5 #define NWK_MODE NWK_MODE_MESH #define SECURITY_MODE SECURITY_COMMERCIAL星状网#elif ( STACK_PROFILE_ID = HOME_CONTROLS ) #define MAX_NODE_DEPTH 5 #define NWK_MODE NWK_MODE_STAR#define SECURITY_MODE SECURITY_COMMERCIAL树状网#elif ( STACK_PROFILE_ID = HOME_CONTROLS ) #define MAX_NODE_DEPTH 5 #define NWK_MODE NWK_MODE_MESH #define SECURITY_MODE SECURITY_COMMERCIAL地址:NwkNwk_globals.c134行网状网#elif ( STACK_PROFILE_ID = HOME_CONTROLS ) byte CskipRtrsMAX_NODE_DEPTH+1 = 6,6,6,6,6,0; byte CskipChldrnMAX_NODE_DEPTH+1 = 20,20,20,20,20,0;星状网#elif ( STACK_PROFILE_ID = HOME_CONTROLS ) byte CskipRtrsMAX_NODE_DEPTH+1 = 6,0,6,6,6,0; byte CskipChldrnMAX_NODE_DEPTH+1 = 20,0,20,20,20,0;树状网#elif ( STACK_PROFILE_ID = HOME_CONTROLS ) byte CskipRtrsMAX_NODE_DEPTH+1 = 6,6,6,6,6,0; byte CskipChldrnMAX_NODE_DEPTH+1 = 6,20,20,20,20,0;2.1.2 修改信道及网络编号(PANID)2.1.2.1 修改信道:地址:Toolsf8wconfig.cfg第35行开始Zigbee的信道范围是:1126信道。如,此时的信道为22。2.1.2.2 修改网络编号(PANID):第58行-DZDAPP_CONFIG_PAN_ID=0x2020 /等号后面为可修改PANID*以上 信道和PANID 必须在 MASTER和SLAVE中保持一致!2.1.3 生成Hex文件操作:一、 OptionsLinkerOutput 修改 勾上overide default 后缀改为.hex 选择otherintel-extended二、进入Toolsf8w2530.xcl至 208209行 去掉注释符,即生成Hex。三、 如欲进行仿真需加上注释;选择上Format debug去掉overide default 和Other。2.2 程序重点2.2.1 消息处理流程 分别有T_Buffer结构体、R_Buffer和Tback_Buffer(原名为Trans_Buffer)结构体作为消息存储的缓冲区,然后其他函数不断对其进行调用处理;函数主要功能: void SampleApp_Init( uint8 task_id ) /初始化,定义设备类型 void halPutch(char c) /串口打印,在void UartOutNetDis(void)中进 行调用 void UartOutNetDis(void) /串口输出节点网络 uint8 SendData(uint8 *buf, UINT16 addr, uint8 Leng) /向空中发送数据/此格式比较固定afAddrType_t SendDataAddr; /afAddrType_t型变量 /将目的节点的相关信息填入afAddrType_t型变量,准备发送SendDataAddr.addrMode = (afAddrMode_t)Addr16Bit;SendDataAddr.endPoint = SAMPLEAPP_ENDPOINT; /端口号设置SendDataAddr.addr.shortAddr = addr; /短地址设置 if ( AF_DataRequest( &SendDataAddr, /目的节点的地址及相关信息 &SampleApp_epDesc, /源节点的地址及相关信息 2, /簇号(命令号) Leng, /发送数据长度 buf, /数据缓冲区指针 &SampleApp_TransID, /指向发送序号的指针 AF_DISCV_ROUTE, AF_DEFAULT_RADIUS ) = afStatus_SUCCESS )return 1;elsereturn 0;/ Error occurred in request to send. void SampleApp_MessageMSGCB( afIncomingMSGPacket_t *pckt ) /消息处理函数解析: 协调器中,此函数主要进行处理消息是否是网络管理,若是,就对节点信息进行修改,若不是,就将数据信息直接打印串口发送给上位机。节点中,此函数负责 读(R)传感器 或 设置(S)节点IO口高低电平。 uint16 SampleApp_ProcessEvent( uint8 task_id, uint16 events ) /事件处理函数 afIncomingMSGPacket_t *MSGpkt; (void)task_id; / Intentionally unreferenced parameter /事件判断,系统消息事件 if ( events & SYS_EVENT_MSG ) MSGpkt = (afIncomingMSGPacket_t *)osal_msg_receive( SampleApp_TaskID ); while ( MSGpkt ) switch ( MSGpkt->hdr.event ) / Received when a messages is received (OTA) for this endpoint case AF_INCOMING_MSG_CMD: SampleApp_MessageMSGCB( MSGpkt ); break; / Received whenever the device changes state in the network case ZDO_STATE_CHANGE: SampleApp_NwkState = (devStates_t)(MSGpkt->hdr.status); if (SampleApp_NwkState = DEV_ZB_COORD) /协调器建立 /亮灯 HalLedSet(HAL_LED_1,HAL_LED_MODE_ON); /准备执行网络扫描 osal_start_timerEx( SampleApp_TaskID, SAMPLEAPP_Timeing_MSG_EVT, SAMPLEAPP_Timeing_MSG_TIMEOUT ); /计时刷新 break; case SPI_INCOMING_ZTOOL_PORT: /通过串口读16个字节 HalUARTRead( MT_UART_DEFAULT_PORT,R_Buffer.data, 16 ); uint8 ReadFlag; uint16 SrcSaddr; ReadFlag=0; if('&' = R_Buffer.data0) /RNW,读取网络信息 /此时网络信息已经存储在协调器上,因此“读自己” if(memcmp(R_Buffer.packet_Struct.cmd,"RNW",3)=0) ReadFlag = 1; if(ReadFlag) /串口输出网络结构 HalLedBlink(HAL_LED_1,2,50,500); UartOutNetDis(); else /组装地址,准备发送数据 SrcSaddr=(uint16)(R_Buffer.packet_Struct.Saddr0|R_Buffer.packet_Struct.Saddr1<<8); /发送数据失败串口输出消息 /发送成功等待AF_INCOMING_MSG_CMD if(SendData(R_Buffer.data, SrcSaddr, 16) = 0) HalLedBlink(HAL_LED_2,2,50,500); memset(T_Buffer.data,'y',32); memcpy(T_Buffer.data,"&WSNRNWF",8); T_Buffer.packet_Struct.Saddr0=R_Buffer.packet_Struct.Saddr0; T_Buffer.packet_Struct.Saddr1=R_Buffer.packet_Struct.Saddr1; T_Buffer.packet_Struct.foot='*' HalUARTWrite ( MT_UART_DEFAULT_PORT, T_Buffer.data, 32);/从串口输出 else HalLedBlink(HAL_LED_2,2,50,500); break; default: break; / Release the memory osal_msg_deallocate( (uint8 *)MSGpkt ); / Next - if one is available MSGpkt = (afIncomingMSGPacket_t *)osal_msg_receive( SampleApp_TaskID );