




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据的发送和接收一、 数据的发送在ZStack2006的协议栈中,我们只需调用函数AF_DataRequest()即可完成数据的发送。afStatus_t AF_DataRequest( afAddrType_t *dstAddr, endPointDesc_t *srcEP, uint16 cID, uint16 len, uint8 *buf, uint8 *transID, uint8 options, uint8 radius )而我们在使用AF_DataRequest() 函数时只需要了解其参数便可以非常灵活的以各种方式来发送数据。AF_DataRequest()函数参数说明如下:*dstAddr-发送目的地址、端点地址以及传送模式*srcEP -源端点cID -簇IDlen -数据长度*buf -数据*transID -序列号options -发送选项radius -跳数*dstAddr决定了消息发送到那个设备及那个endpoint,而簇ID(cID)决定了设备接收到信息如何处理。簇可以理解为是一种约定,约定了信息怎么处理。重要参数说明:1、地址 afAddrType_ttypedef structunionuint16 shortAddr; /短地址addr;afAddrMode_taddrMode; /传送模式byteendPoint; /端点号afAddrType_t;2、端点描述符 endPointDesc_ttypedef structbyteendPoint; /端点号byte*task_id; /那一个任务的端点号SimpleDescriptionFormat_t*simpleDesc;/简单的端点描述afNetworkLatencyReq_tlatencyReq;endPointDesc_t;3、简单描述符 SimpleDescriptionFormat_ttypedef structbyte EndPoint; /EPuint16 AppProfId; /应用规范IDuint16 AppDeviceId; /特定规范ID 的设备类型byte AppDevVer:4; /特定规范ID 的设备的版本byte Reserved:4; /AF_V1_SUPPORTusesforAppFlags:4.byte AppNumInClusters; /输入簇ID 的个数cId_t *pAppInClusterList; /输入簇ID 的列表byte AppNumOutClusters; /输出簇ID 的个数cId_t *pAppOutClusterList; /输出簇ID 的列表SimpleDescriptionFormat_t;4、簇ID cIDClusterID-具体应用串ID5、发送选项 options发送选项有如下选项#defineAF_FRAGMENTED 0x01#defineAF_ACK_REQUEST 0x10#defineAF_DISCV_ROUTE 0x20#defineAF_EN_SECURITY 0x40#defineAF_SKIP_ROUTING 0x80其中AF_ACK_REQUEST为发送后需要接收方的确认6、半径、条数 radius传输跳数或传输半径,默认值为10数据发送模式说明:在协议栈数据发送模式有以下几种:单播、组播、广播和直接发送四种模式。广播发送广播发送可以分为三种,如果想使用广播发送,则只需将dstAddr-addrMode设为AddrBroadcast,dstAddr-addr-shortAddr设置为相应的广播类型即可。具体的定义如下:NWK_BROADCAST_SHORTADDR_DEVALL(0xFFFF)数据包将被传送到网络上的所有设备,包括睡眠中的设备。对于睡眠中的设备,数据包将被保留在其父亲节点直到查询到它,或者消息超时。NWK_BROADCAST_SHORTADDR_DEVRXON(0xFFFD)数据包将被传送到网络上的所有接收机的设备(RXONWHENIDLE),也就是说,除了睡眠中的所有设备。NWK_BROADCAST_SHORTADDR_DEVZCZR(0xFFFC)数据包发送给所有的路由器,包括协调器。组播发送如果设备想传输数据到某一组设备,那么只需将dstAddr-addrMode设为AddrGroup,dstAddr-addr-shortAddr设置为相应的组ID 即可。代码如下:/Setupfortheflash commands destinationaddress-Group1SampleApp_Flash_DstAddr.addrMode=(afAddrMode_t)afAddrGroup;SampleApp_Flash_DstAddr.endPoint=SAMPLEAPP_ENDPOINT;SampleApp_Flash_DstAddr.addr.shortAddr=SAMPLEAPP_FLASH_GROUP;根据上面代码的配置,然后使用AF_DataRequest()函数来进行组播发送。单播发送单播发送需要知道目标设备的短地址,需要将 dstAddr- addrMode 设为Addr16Bit,dstAddr-addr-shortAddr设置为目标设备的短地址即可。代码如下:SampleApp_Flash_DstAddr.addrMode=(afAddrMode_t)afAddr16Bit;SampleApp_Flash_DstAddr.endPoint=SAMPLEAPP_ENDPOINT;SampleApp_Flash_DstAddr.addr.shortAddr=0x00;根据上面代码的配置,然后使用AF_DataRequest()函数来进行点对点发送。绑定发送绑定发送目标设备可以是一个设备、多个设备、或者一组设备,由绑定表中的绑定信息决定。绑定发送,需要将dstAddr-addrMode设为AddrNotPresent,dstAddr-addr-shortAddr设置为无效地址0xFFFE。代码如下:ZDAppNwkAddr.addrMode = AddrNotPresent;ZDAppNwkAddr.addr.shortAddr = 0xFFFE;根据上面代码的配置,然后使用AF_DataRequest()函数来进行绑定发送。二、 数据的接受在Zstack中,如当接收到OTA信息后,将触发SYS_EVENT_MSG事件下的AF_INCOMING_MSG_CMD事件。我们只需处理AF_INCOMING_MSG_CMD便可。数据收发实例: 在SampleApp工程中Zstack要周期性的向网络所有设备广发送一个信息,其具体代码如下:程序代码:void SampleApp_SendPeriodicMessage( void ) if ( AF_DataRequest( &SampleApp_Periodic_DstAddr, &SampleApp_epDesc, SAMPLEAPP_PERIODIC_CLUSTERID, 1, (uint8*)&SampleAppPeriodicCounter, &SampleApp_TransID, AF_DISCV_ROUTE, AF_DEFAULT_RADIUS ) = afStatus_SUCCESS ) else / Error occurred in request to send. 在这个函数中调用了函数AF_DataRequest()完成数据的发送,发送地址为SampleApp_Periodic_DstAddr,即SampleApp周期信息地址,该地址为0xFFFF,具体参见SampleApp。而簇ID为SAMPLEAPP_PERIODIC_CLUSTERID。在接受端触发了目标设备的AF_INCOMING_MSG_CMD事件。具体程序代码如下:程序代码:uint16 SampleApp_ProcessEvent( uint8 task_id, uint16 events ) case AF_INCOMING_MSG_CMD:SampleApp_MessageMSGCB( MSGpkt )break;在对事件AF_INCOMING_MSG_CMD进行处理时,Zstack又调用了函数SampleApp_MessageMSGCB( MSGpkt ),其代码如下:程序代码:void SampleApp_MessageMSGCB( afIncomingMSGPacket_t *pkt ) uint16 flashTime; switch ( pkt-clusterId ) case SAMPLEAPP_PERIODIC_CLUSTERID: break; case SAMPLEAPP_FLASH_CLUSTERID: flashTime = BUILD_UINT16(pkt-cmd.Data1, pkt-cmd.Data2 ); HalLedBlink( HAL_LED_4, 4, 50, (flashTime / 4) ); break; 在函数SampleApp_MessageMSGCB( MSGpkt )中会根据接收到信息的簇ID的不同,进行相关的处理,也就是上面提及的簇是一种约定,约定了信息将如何
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 耐火土石矿山开采对矿区生态环境的监测与预警考核试卷
- 木片在船舶建造中的应用考核试卷
- 探秘生态学实践
- 山西林业职业技术学院《红色经典音乐作品赏析》2023-2024学年第一学期期末试卷
- 江苏省扬州市江都区实验重点中学2024-2025学年初三下学期期末考质量调研(一模)生物试题含解析
- 山东省东平县重点名校2025年初三下学期第二次段考生物试题试卷含解析
- 山东省青岛市城阳九中学2024-2025学年初三下学期第四次月考生物试题含解析
- 辽宁省辽阳市2025年初三年级教学质量检测试题考试(二)生物试题试卷含解析
- 铁岭卫生职业学院《唐诗宋词鉴赏》2023-2024学年第二学期期末试卷
- 四川工商职业技术学院《休闲体育活动策划与案例分析》2023-2024学年第一学期期末试卷
- 颈椎病(混合型)病例汇报
- 微生物在果蔬保鲜中应用
- 院前急救技术培训课件
- 标书制作培训课件
- 化工静设备基础知识共课件
- 新概念英语青少版入门级Starter A 结业测试 含答案
- 烟草原料学-烟草的品质课件
- 非法行医和非法采供血信息报告课件
- DG-TJ 08-2362-2021 综合杆设施技术标准
- 计算机集成制造技术(CIMT)(PPT 53)第三讲柔性制造系统(FMS)
- 天津科技大学工程硕士学位论文答辩评议书及表决票
评论
0/150
提交评论