基于ZigBee的无线温湿度采集系统_第1页
基于ZigBee的无线温湿度采集系统_第2页
基于ZigBee的无线温湿度采集系统_第3页
基于ZigBee的无线温湿度采集系统_第4页
基于ZigBee的无线温湿度采集系统_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

1、基于ZigBee的无线温湿度采集系统 17基于ZigBee的无线温湿度采集系统摘要:针对传统温湿度检测存在的问题,结合无线传感器网络技术,本文提出一种基于ZigBee 技术的无线温湿度采集系统的设计方法。设计采用CC2530 射频芯片及SHT11 数字温湿度传感器,在ZigBee 协议栈的基础上进行应用开发。阐述了ZigBee技术,系统组成及工作原理,系统软硬件设计等内容,并通过实验测试表明,该无线温湿度采集系统能够稳定可靠的运行,并且具有组网简单、功耗低,成本低等优点,具有十分好的实用价值和经济效益。关键字:ZigBee,温湿度,CC2530,协议栈Wireless temperature

2、and humidity acquisition system based on ZigBee technologyAbstract: According to the problems existing in temperature and humidity detecting of traditional ways, combining with wireless sensor network technology , this paper puts forward a new design of temperature and humidity acquisition system ba

3、sed on ZigBee technology. The design was carried out based on the ZigBee protocol, adopting CC2530 RF chip and digital humidity and temperature sensor SHT11. Paper introduces ZigBee technology, the overall design of the system, hardware and software design of the nodes and so forth. Finally, the exp

4、erimental tests have proved that the wireless temperature and humidity acquisition system was stable and credible , with the advantages of simple networking , low cost and low power, and it has a very good practical value and economic benefits .Keywords: ZigBee, Temperature and humidity, CC2530, Pro

5、tocol1 引言在冷链物流、农业生产、仓库管理以及食品保存等领域,温度和湿度控制显得十分重要,但传统的方法采用测试器材来测量温度和湿度,通过人工进行检测,这种人工测试方法费时费力、效率低,而且测试的温度及湿度的误差大,随机性大。因此,开发一种全新的温湿度采集系统就显得十分迫切和重要了。本文设计了一种采用无线传感器网络技术进行温度和湿度的采集系统。无线传感器网络不需要较高的传输带宽,但需要较低的传输时延和较低的功率消耗。ZigBee 是一种新兴的短距离、低功耗、低数据速率、低成本、低复杂度的无线网络技术,它的出现正好满足了这个要求。2 ZigBee技术ZigBee是一种标准,该标准定义了短距离

6、、低数据传输速率无线通信所需要的一系列通信协议,它拥有一套完整的协议层次结构,由IEEE802. 15. 4 和ZigBee 联盟共同制定完成。其工作频段分别是868MHz(欧洲)、915MHz(北美)、2. 4GHz(全球)3个频段,可以应用于不同的场合,诸如家庭自动化网络、工业控制网络、交互式玩具、远程检测等。完整的ZigBee 协议栈包括物理层(PHY) 、媒体访问控制层(MAC) 、网络层(NWK) 和应用层(APL)。其中,ZigBee 的应用层由应用支持子层(APS) 、ZigBee 设备对象(ZDO) 和制造商定义的应用对象组成。在ZigBee 协议栈中,每一层通过使用下层提供的

7、服务完成自己的功能,同时对上层提供服务,网络中的通信在对等的层次上进行。ZigBee 网络含三种类型的节点,即协调器、路由器和终端设备,其中协调器和路由器均为全功能设备(FFD),而终端设备选用精简功能设备(RFD) 。一个ZigBee 网络有且仅有一个协调器,该设备负责启动网络,配置网络成员地址,维护网络,维护节点的绑定关系表等,需要最多的存储空间和计算能力,它可以看作是一个PAN 的网关节点。路由器主要实现扩展网络及路由消息的功能,终端设备则负责与实际的监控对象相连,实现具体功能的单元。无线传感器网络中可以根据不同的需要组成星型、簇型网和网状型三种不同的网络拓扑结构。星状网络由一个PAN

8、协调器和多个终端设备组成。只存在PAN 协调器与终端设备的通信,终端设备间的通信都需通过PAN 协调器的转发;树状网络由一个协调器和一个或多个星状结构连接而成,设备除了能与自己的父节点或子节点进行点对点直接通讯外,其他只能通过树状路由完成消息传输;网状网络是树状网络基础上实现的,与树状网络不同的是,它允许网络中所有具有路由功能的节点直接互连,由路由器中的路由表配合实现消息的网状路由。一个ZigBee 网络最多可含有65000 多个子节点,通过无线网络数据从一个节点传送到另一个节点,最终传送到控制中心。另外,它可以与其他的无线网络如GPRS 和CDMA 等兼容,也可以接入有线网络如Interne

9、t 、Ethernet ,实现远程监控。3 系统结构和原理基于ZigBee的无线温湿度采集系统采用ZigBee星型拓扑组网方式,多个具有简单功能的设备和传感器构成传感器节点(终端设备),一台具有完整功能的设备作为中心节点(协调器节点),中心节点与中心控制计算机(PC机)相连,中心控制计算机通过上位机软件可以实现对整个系统节点的监测和控制。整个系统工作时,传感器节点负责现场温湿度数据的采集,将采集到数据一定的数据格式存储起来,当上位机需要读取温湿度时,就发送相应指令给协调器,协调器将指令翻译后发送给传感器节点,传感器节点接收到指令,就将温湿度数据无线发送给协调器,协调器通过串口RS232 将数据

10、发送给PC 机,PC机就可以对温湿度数据进行显示、分析和处理,从而实现了温湿度全程的无线采集和监测工作。此外,整个温湿度采集系统还可以实现协调器自检、发送功率设置、终端节点地址设定、时间读取和设置、低功耗设置、拍照等其它功能。4 系统硬件设计4.1 传感器节点无线传感器节点由数据采集、数据处理、无线通信和能量供应四个模块组成。数据采集模块由数字传感器或者模拟传感器加A/ D 转换器组成,负责区域内的温湿度信息采集和数据转换;数据处理模块由微控制器组成,负责控制整个传感器节点的操作和数据存储;无线通信模块由无线收发器组成,负责与其他传感器节点进行通信,能量供应模块为系统其他的三个部分提供能量。传

11、感器节点由瑞温湿度传感器SHT11 检测得到温湿度信息,并转化为数字信号,传输至CC2530,由CC2530负责对信号进行处理发送。节点电源部分使用两节五号电池为整个节点供电。为了使系统工作时间持续长,节点通常在闲置时快速进入休眠模式,其外设模块进入休眠状态,或者电源管理部分不对这些外设模块供电。SHT11是瑞士Sensirion 公司推出的基于CMOSensTM 技术的新型温湿度传感器。SHT11将温湿度传感器、信号放大调理、A/ D 转换、I2C 总线接口全部集成于一个芯片上,该芯片包括一个电容性聚合体湿度敏感元件和一个用能隙材料制成的温度敏感元件。这两个敏感元件分别将湿度和温度转换成电信

12、号,该电信号首先进入微弱信号放大器进行放大器;然后进入一个14 位的A/ D 转换器;最后经过二线串行数字接口输出数字信号。SHT11 通过DA TA 数据总线输出的是相对湿度,需要进行线性补偿和温度补偿后才能得到较为准确的湿度值。CC2530芯片是用于2.4-GHz IEEE 802.15.4、ZigBee 和RF4CE 应用的一个真正的片上系统(SoC)解决方案。它能够以非常低的总的材料成本建立强大的网络节点。CC2530 结合了领先的RF 收发器的优良性能,业界标准的增强型8051 CPU,系统内可编程闪存,8-KB RAM 和许多其它强大的功能。在本无线温湿度采集系统中,我们

13、采用的是CC2530F256芯片,它结合了德州仪器的业界领先的黄金单元ZigBee 协议栈(Z-Stack),提供了一个强大和完整的ZigBee 解决方案。温湿度传感器SHT11采集到的温湿度数据,存储在CC2530的FLASH ROM中,当传感节点接收到读取温湿度指令时,就通过ZigBee协议栈将温湿度数据发送出去。4.2 协调器节点网络协调器主要负责网络的建立,信息的接收、汇总、处理及控制指令的发送ZigBee 网络最初由协调器发动并建立。协调器通过主动扫描选择一个合适信道, 根据扫描的结果选择自己的PANID 及0x0000 作为自己的短地址,其网络层将通过向MAC 层发送ML

14、ME2START. request原语启动一个新的PAN 。协调器节点在建成网络后,开始数据收发工作及各种操作指令的执行。当协调器收到数据时,根据数据的串ID 来判断传送的数据是地址信息还是传感器采集的数据,根据不同的数据类型解析数据包提供给PC 机显示和处理。5 系统软件设计本系统的软件设计是基于Ti 公司推出的跟CC2530 芯片配套的Z2STACK 协议栈和IAR 集成开发环境进行设计的。ZSTACK 协议栈运行在一个基于任务调度机制的OSAL 操作系统上,OSAL 通过触发任务的事件来实现任务调度。OSAL 中的任务可以通过任API 将其添加到系统中,实现多任务机制。系统中传感器节点由

15、CC2530 内部的MCU(8051) 控制,定时向温湿度传感器SHT11 发送读温度和湿度指令,SHT11完成温度和湿度转换后会发出转换完成信号,MCU 在接收到转换完成信号后,读取温湿度值,并将这些数据信号传送给协调器。协调器通过串口RS232 和上位机( PC) 相连,通过人机交互的方式对整个区域的进行检测。为了实现这一功能,必须知道节点的长短地址对应表,这就需要节点在加入网络后发送自己的长短地址给协调器,协调器将长短地址对应列表存储起来,以便用户要求采集数据时依据地址表来采集每个传感器的数据。传感节点与协调器节点的温湿度采集及通信流程图如下图1所示。图1 传感器节点与协调器节点的通信流

16、程图6 系统测试验证本无线温湿度采集系统设计完成后,进行了一系列的测试工作,包括通信距离,穿墙能力,系统稳定性以及数据准确性等。经过测试,系统通信距离200米左右(与发送功率有关),可以成功穿越一堵墙通信(与网络拓扑形式有关),并可以稳定工作,预计传感器节点工作寿命可达1年。7 结束语本文设计的基于ZigBee技术的CC2530无线温湿度采集系统,其外围设备简单、功耗低、传输无线化,而且精度高,可靠性好,提供了良好的人机交互界面,方便控制使用,在冷链物流,农业生产以及食品保存等等领域都有很好的应用前景。参考文献:1 王小强,欧阳骏,黄宁淋,ZigBee无线传感网络设计与实现,北京:化学工业出版

17、社,2012.5.2 高手玮,吴灿阳. ZigBee技术实践教程,北京:北京航空航天大学出版社,2009.63 瞿雷,刘盛德,胡咸斌. ZigBee技术及应用,北京:北京航空航天大学出版社,2007.9.4 吕强,刘玉华,刘志军,王国胜. 基于ZigBee的无线温湿度检测终端设计. 科学技术与工程, 2008.12; 8 (23) .5 Shahin Farahani. ZigBee Wireless Networks and Transceivers, Elsevier Ltd ,20086 Sensirion.SHT11Datasheet.http/ pdf7 X. Li , W. Dav

18、id. Combining the Best of Global2as2 View and Local2as2View for Data IntegrationC. PODS ,2004.8 A Cal , D Lembo , et al. Experimenting Data Inte2 gration with DISDISC . CAiSE 2004 , Lecture Notes in Computer Science ,2004 ,3084 ,9 :5166.附录:实物图及部分代码1 实物图传感器节点实物 传感器节点外包装手持读写器(协调器节点)2 部分程序代码2.1 终端节点(传感

19、器节点)部分代码static void SerialApp_ProcessZDOMsgs( zdoIncomingMsg_t *inMsg );static void SerialApp_HandleKeys( uint8 shift, uint8 keys );static void SerialApp_ProcessMSGCmd( afIncomingMSGPacket_t *pkt );static void SerialApp_Send(void);static void SerialApp_Resp(void);static void SerialApp_CallBack(uint8

20、 port, uint8 event);void SerialApp_ProcessHym8563(void); /处理时钟芯片,得到时间数据void SerialApp_ProcessSht11(void); /处理温湿度传感器,得到温湿度数据uint8 SerialApp_GetVoltage(void); /获取电压数据void SerialApp_MemoryTime(void); /存储时间数据(一组时间以及第一组温湿度数据)void SerialApp_MemoryTemp_Humi(void); /存储温湿度数据(第二组到第十七组温湿度数据)void SerialApp_LowP

21、ower(void); /低功耗处理函数if ( events & SERIALAPP_MEM_TIME_EVT ) PktNum+; /存储时间事件发生,温湿度组数加1 SerialApp_ProcessHym8563(); SerialApp_ProcessSht11(); SerialApp_GetVoltage(); SerialApp_MemoryTime(); osal_start_timerEx( SerialApp_TaskID, SERIALAPP_MEM_TEMP_HUMI_EVT, 10000 ); /一组时间数据和第一组温湿度数据存储好后,等待10秒,触发温湿度

22、存储事件,存储第二到第十七组温湿度 /注意:此处时间最大为65536毫秒,因此为了方便,最多我们可以设置1分钟的延时,即60000 return ( events SERIALAPP_MEM_TIME_EVT ); if ( events & SERIALAPP_MEM_TEMP_HUMI_EVT ) if(PktNum > 1 && PktNum <= 17) /温湿度数据的组数小于17时,依次每10秒存一组温湿度数据 /SerialApp_ProcessHym8563(); SerialApp_ProcessSht11(); SerialApp_Memo

23、ryTemp_Humi(); PktNum+; /存一组温湿度,其组数加1 osal_start_timerEx( SerialApp_TaskID, SERIALAPP_MEM_TEMP_HUMI_EVT, 10000 ); /每10秒存储一组,同上最长延时为65536毫秒,为方便,可最多设置为一分钟 if(PktNum = 18) /当存满17组温湿度数据时,NV条目自动加1,温湿度数据组数重新归1,并再次注册存储时间任务 PktNum = 1 ; CCLD_NV = CCLD_NV + 1 ; offset = 5 ; osal_start_timerEx( SerialApp_Task

24、ID, SERIALAPP_MEM_TIME_EVT, 100 ); return ( events SERIALAPP_MEM_TEMP_HUMI_EVT ); void SerialApp_ProcessMSGCmd( afIncomingMSGPacket_t *pkt ) uint8 buffer20; uint8 Temp_Humi_Read70 ; /存放读取的温湿度数据 uint8 Time_Read5; /存放读取的时间数据 uint8 Data_Package80; /存放要发给协调器的数据包 uint8 delay; uint8 i,ReturnValue1,ReturnV

25、alue2; switch ( pkt->clusterId ) / A message with a serial data block to be transmitted on the serial port. case SERIALAPP_CLUSTERID1: / Store the address for sending and retrying. osal_memcpy(&SerialApp_RxAddr, &(pkt->srcAddr), sizeof( afAddrType_t ); if(pkt->cmd.Data3 = 0x00) /读温湿

26、度指令 CCLD_NV = 0x0400 + pkt->cmd.Data4; /将选择读取的数据包与NV条目对应起来 ReturnValue1 = osal_nv_read(CCLD_NV,0,5,Time_Read); /读时间数据 ReturnValue2 = osal_nv_read(CCLD_NV,5,68,Temp_Humi_Read); /读17组温湿度数据 if(ReturnValue1 = ZSUCCESS && ReturnValue2 = ZSUCCESS && osal_nv_item_len(CCLD_NV) )/读取成功,返回相应

27、数据 Data_Package0 = pkt->cmd.Data0 ; /前缀 Data_Package1 = pkt->cmd.Data1 ; /读写器ID Data_Package2 = pkt->cmd.Data2 ; /TagID Data_Package3 = pkt->cmd.Data3 ; /功能位,读温湿度 Data_Package4 = 0xFF ; /状态位 Data_Package5 = Time_Read0; /时间 Data_Package6 = Time_Read1; Data_Package7 = Time_Read2; Data_Pack

28、age8 = Time_Read3; Data_Package9 = Time_Read4; for(i=10;i<78;i+) /将17组温湿度的有效数据提取出来 Data_Packagei = Temp_Humi_Readi-10; /温湿度 if(Data_Packagei = 0xFF)break; /NV条目初始化后全为FF,故当读到的温湿度数据为FF时,说明实际温湿度已经读完,该处没有存温湿度 SerialApp_TxAddr.addrMode = (afAddrMode_t)Addr16Bit; /单播发送 SerialApp_TxAddr.addr.shortAddr =

29、 0x0000; /协调器地址 SerialApp_TxAddr.endPoint = SERIALAPP_ENDPOINT; /发送端口 AF_DataRequest(&SerialApp_TxAddr, (endPointDesc_t *)&SerialApp_epDesc, SERIALAPP_CLUSTERID1, i, Data_Package, &SerialApp_MsgID, 0, AF_DEFAULT_RADIUS); else /读取失败,则返回下面数据 Data_Package0 = pkt->cmd.Data0 ; /前缀 Data_Pac

30、kage1 = pkt->cmd.Data1 ; /读写器ID Data_Package2 = pkt->cmd.Data2 ; /TagID Data_Package3 = pkt->cmd.Data3 ; /功能位,读温湿度 Data_Package4 = 0xFE ; /状态位 SerialApp_TxAddr.addrMode = (afAddrMode_t)Addr16Bit; SerialApp_TxAddr.addr.shortAddr = 0x0000; SerialApp_TxAddr.endPoint = SERIALAPP_ENDPOINT; AF_Da

31、taRequest(&SerialApp_TxAddr, (endPointDesc_t *)&SerialApp_epDesc, SERIALAPP_CLUSTERID1, 5, Data_Package, &SerialApp_MsgID, 0, AF_DEFAULT_RADIUS); if(pkt->cmd.Data3 = 0x01) /设定冷链标签时间,通常设定为当前时间 extern uint8 seconds,minute,hour,date,week,month,years; minute = pkt->cmd.Data8; /设定时间,将协调

32、器发送过来的年月时分秒分别对应赋给年月时分秒 hour = pkt->cmd.Data7; date = pkt->cmd.Data6; month = pkt->cmd.Data5; years = pkt->cmd.Data4; HYM8653_Init(); /时钟芯片初始化 HYM8563_Write_time(); /将设定的时间写入时钟 buffer0 = pkt->cmd.Data0; /前缀 buffer1 = pkt->cmd.Data1; /读写器ID buffer2 = pkt->cmd.Data2; /TagID buffer3

33、 = pkt->cmd.Data3; /功能位,设定时间 if(date != 0x00) /通过日期来判定时间是否设定成功,日期等于0,设定失败,否则成功 buffer4 = 0xFF; else buffer4 = 0xFE; SerialApp_TxAddr.addrMode = (afAddrMode_t)Addr16Bit; SerialApp_TxAddr.addr.shortAddr = 0x0000; SerialApp_TxAddr.endPoint = SERIALAPP_ENDPOINT; AF_DataRequest(&SerialApp_TxAddr,

34、(endPointDesc_t *)&SerialApp_epDesc, SERIALAPP_CLUSTERID1, 5, buffer, &SerialApp_MsgID, 0, AF_DEFAULT_RADIUS); if(pkt->cmd.Data3 = 0x02) /读取冷链标签时间数据(不一定是当前时间) uint8 Tx_Len; /要发送的数据长度(字节数) buffer0 = pkt->cmd.Data0; /前缀 buffer1 = pkt->cmd.Data1; /读写器ID buffer2 = pkt->cmd.Data2; /Ta

35、gID buffer3 = pkt->cmd.Data3; /功能位,读取时间 buffer5 = TimeBuf0; /时间数据 buffer6 = TimeBuf1; buffer7 = TimeBuf2; buffer8 = TimeBuf3; buffer9 = TimeBuf4; if(buffer7 != 0x00) /通过日期来判断是否读到时间,因为日期是不可能为0的 buffer4 = 0xFF; Tx_Len = 10 ; else buffer4 = 0xFE; Tx_Len = 5 ; SerialApp_TxAddr.addrMode = (afAddrMode_

36、t)Addr16Bit; SerialApp_TxAddr.addr.shortAddr = 0x0000; SerialApp_TxAddr.endPoint = SERIALAPP_ENDPOINT; AF_DataRequest(&SerialApp_TxAddr, (endPointDesc_t *)&SerialApp_epDesc, SERIALAPP_CLUSTERID1, Tx_Len, buffer, &SerialApp_MsgID, 0, AF_DEFAULT_RADIUS); if(pkt->cmd.Data3 = 0x03) /复杂指令

37、/osal_stop_timerEx(SerialApp_TaskID, SERIALAPP_MEM_TIME_EVT); /收到此指令时,停止存储数据 /osal_stop_timerEx(SerialApp_TaskID, SERIALAPP_MEM_TEMP_HUMI_EVT); uint8 DataBuf80; uint8 T_H80; uint8 i=0 ; osal_nv_read(CCLD_NV,0,73,DataBuf); /读取最后一个数据包的数据 for(i=0;i<73;i+) T_Hi = DataBufi; if(T_Hi = 0xFF)break; /获取最后

38、一个数据包的有效数据 buffer0 = pkt->cmd.Data0; buffer1 = pkt->cmd.Data1; buffer2 = pkt->cmd.Data2; buffer3 = pkt->cmd.Data3; buffer4 = 0xFF; buffer5 = SerialApp_GetVoltage(); /电压 buffer6 = Total_Pkt_Num; /总的数据包数 buffer7 = (i-5)/4; /最后一个数据包的温湿度数据组数 buffer8 = pkt->rssi; /RSSI值 SerialApp_TxAddr.ad

39、drMode = (afAddrMode_t)Addr16Bit; SerialApp_TxAddr.addr.shortAddr = 0x0000; SerialApp_TxAddr.endPoint = SERIALAPP_ENDPOINT; AF_DataRequest(&SerialApp_TxAddr, (endPointDesc_t *)&SerialApp_epDesc, SERIALAPP_CLUSTERID1, 9, buffer, &SerialApp_MsgID, 0, AF_DEFAULT_RADIUS); break;2.2 协调器节点部分代码

40、void SerialApp_ProcessMSGCmd( afIncomingMSGPacket_t *pkt ) uint8 BUF100; uint8 Frame_Buf100; uint8 i; uint8 delay; switch ( pkt->clusterId ) / A message with a serial data block to be transmitted on the serial port. case SERIALAPP_CLUSTERID1: / Store the address for sending and retrying. osal_mem

41、cpy(&SerialApp_RxAddr, &(pkt->srcAddr), sizeof( afAddrType_t ); osal_memcpy(BUF, pkt->cmd.Data, pkt->cmd.DataLength); if(BUF3 = 0x00) /读温湿度 if(BUF4 = 0xFF) /读取成功 Frame_Buf0 = pkt->cmd.DataLength + 2 ; /总的数据长度 Frame_Buf1 = SerialApp_RxAddr.addr.shortAddr >> 8 ; /冷链标签的地址高8位 F

42、rame_Buf2 = SerialApp_RxAddr.addr.shortAddr ; /冷链标签的地址低8位 Frame_Buf3 = BUF2; /TagID Frame_Buf4 = BUF3; /功能位 Frame_Buf5 = BUF4; /状态位 Frame_Buf6 = SerialApp_TxBuf4; /数据包的序号 for(i=7;i<pkt->cmd.DataLength + 2 ;i+) /温湿度数据 Frame_Bufi = BUFi-2; HalUARTWrite(SERIAL_APP_PORT, Frame_Buf, pkt->cmd.Dat

43、aLength + 2 ); if(BUF4 = 0xFE) Frame_Buf0 = pkt->cmd.DataLength + 1 ; Frame_Buf1 = SerialApp_RxAddr.addr.shortAddr >> 8 ; Frame_Buf2 = SerialApp_RxAddr.addr.shortAddr ; Frame_Buf3 = BUF2; Frame_Buf4 = BUF3; Frame_Buf5 = BUF4; HalUARTWrite(SERIAL_APP_PORT, Frame_Buf, pkt->cmd.DataLength +

44、 1 ); if(BUF3 = 0x01) /设置冷链标签时间 Frame_Buf0 = pkt->cmd.DataLength + 1 ; Frame_Buf1 = SerialApp_RxAddr.addr.shortAddr >> 8 ; Frame_Buf2 = SerialApp_RxAddr.addr.shortAddr ; for(i=3;i<pkt->cmd.DataLength + 1 ;i+) Frame_Bufi = BUFi-1; HalUARTWrite(SERIAL_APP_PORT, Frame_Buf, pkt->cmd.Da

45、taLength + 1 ); if(BUF3 = 0x02) /读冷链标签的时间(不一定是当前时间) Frame_Buf0 = pkt->cmd.DataLength + 1 ; /总的数据长度 Frame_Buf1 = SerialApp_RxAddr.addr.shortAddr >> 8 ; Frame_Buf2 = SerialApp_RxAddr.addr.shortAddr ; for(i=3;i<pkt->cmd.DataLength + 1 ;i+) Frame_Bufi = BUFi-1; HalUARTWrite(SERIAL_APP_POR

46、T, Frame_Buf, pkt->cmd.DataLength + 1 ); if(BUF3 = 0x03) /复杂指令 Frame_Buf0 = pkt->cmd.DataLength + 1 ; Frame_Buf1 = SerialApp_RxAddr.addr.shortAddr >> 8 ; Frame_Buf2 = SerialApp_RxAddr.addr.shortAddr ; for(i=3;i<pkt->cmd.DataLength + 1 ;i+) Frame_Bufi = BUFi-1; HalUARTWrite(SERIAL_A

47、PP_PORT, Frame_Buf, pkt->cmd.DataLength + 1 ); if(BUF3 = 0x04) /检查协调器的工作状态 Frame_Buf0 = pkt->cmd.DataLength + 2 ; Frame_Buf1 = SerialApp_RxAddr.addr.shortAddr >> 8 ; Frame_Buf2 = SerialApp_RxAddr.addr.shortAddr ; Frame_Buf3 = SerialApp_TxBuf2; Frame_Buf4 = SerialApp_TxBuf3; Frame_Buf5 =

48、0xFF; HalUARTWrite(SERIAL_APP_PORT, Frame_Buf, pkt->cmd.DataLength + 2 ); if(BUF3 = 0x05) /设置发送功率 /uint8 T3; uint8 Return_Value ; void *Tx_Value ; uint8 TransmissionPower ; TransmissionPower = SerialApp_TxBuf4; Tx_Value = &TransmissionPower; Return_Value = MAC_MlmeSetReq(MAC_PHY_TRANSMIT_POWER_SIGNED,Tx_Value); /T0 = macPhyTxPower; /HalUARTWrite(SERIAL_APP_PORT, T, 1 ); Frame_Buf0 = pkt->cmd.DataLen

温馨提示

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

最新文档

评论

0/150

提交评论