完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
本帖最后由 一只耳朵怪 于 2018-5-31 15:50 编辑
用SampleSwitch例子做了个route 和coord 。route定时向coord发送数据。 从dongle看来coord是收到数据,但是coord并没有进入zclSampleSw_ProcessIncomingMsg( zclIncomingMsg_t *pInMsg ) 请问是哪里没有配置好吗? Switch_coord.rar |
|
相关推荐
10个回答
|
|
如果你用的是zcl并且注册回调会直接进入zcl回调。
|
|
|
|
|
|
|
|
看了一下你的code, 你用的是AF_DataRequest发送的。建议你直接参考GenericApp. |
|
|
|
GenericApp还是从这个函数 zclGenericApp_ProcessIncomingMsg( (zclIncomingMsg_t *)MSGpkt ); 吗 |
|
|
|
按ZCL回调,coord并没有进入 if ( *msgPtr == AF_INCOMING_MSG_CMD ) [ zcl_ProcessMessageMSG( (afIncomingMSGPacket_t *)msgPtr ); ] 请问有解决的方法吗? 或是分享一个能通讯的code例子给我,谢谢 |
|
|
|
[size=150%]是这样的,给你打个比方,绝对让你明白zigbee这鸟玩意到底是怎么通讯一回事: [size=150%]假如节点0x1234要发送信息给0x5678,怎么做呢? [size=150%]我们知道,首先0x1234和0x5678两边都要注册endpoint,不注册是不行的,用的是afRegister这个函数注册的,假如0x1234这边注册的endpoint是14,0x5678那边注册的是18 [size=150%]我们就实现给0x5678发送一个开灯的指令,并问候一句"你是猪吗": [size=150%] uint8 srcEndpoint=14; //指定我们(0x1234)的endpointuint8 dstEndpoint=18; //指定对方(0x5678)的endpointuint8 pBuf[]=["Are you pig?"];uint8 msgLen=sizeof(pBuf);uint8 seqNum=0;afAddrType_t dstAddr;dstAddr.addrMode = Addr16Bit;dstAddr.addr.shortAddr = 0x5678;dstAddr.endPoint=dstEndpoint;zcl_SendCommand( srcEndpoint, &dstAddr, ZCL_CLUSTER_ID_GEN_ON_OFF, COMMAND_ON, TRUE, ZCL_FRAME_CLIENT_SERVER_DIR, TRUE, 0, seqNum, msgLen, pBuf); [size=150%] |
|
|
|
ggfvxv 发表于 2018-5-31 02:12 在init里面有注册过endpoint的 void zclSampleSw_Init( byte task_id ) [ zclSampleSw_TaskID = task_id; P1DIR |= 0x03; // Set destination address to indirect zclSampleSw_DstAddr.addrMode = (afAddrMode_t)Addr16Bit; //AddrNotPresent; zclSampleSw_DstAddr.endPoint = 18; zclSampleSw_DstAddr.addr.shortAddr = 0x0000; zclSampleSw_epDesc.endPoint = 10; zclSampleSw_epDesc.task_id = &zclSampleSw_TaskID; zclSampleSw_epDesc.simpleDesc = (SimpleDescriptionFormat_t *)&zclSampleSw_SimpleDesc; // Register the Simple Descriptor for this application bdb_RegisterSimpleDescriptor( &zclSampleSw_SimpleDesc ); // Register the ZCL General Cluster Library callback functions zclGeneral_RegisterCmdCallbacks( SAMPLESW_ENDPOINT, &zclSampleSw_CmdCallbacks ); 现在的问题是coord收到了router发过来的 ["Are you pig?"]; coord收到了,但不知道放在哪里了。 |
|
|
|
你调用了bdb_RegisterSimpleDescriptor,注册的Endpoint就在ZCL_TaskID上了,数据放在zcl_event_loop的if ( *msgPtr == AF_INCOMING_MSG_CMD )里面。这个地方交给ZCL处理,你用zclGeneral_RegisterCmdCallbacks注册了每条ZCL控制指令,ZCL会自动把你收到的控制指令对应到你注册的执行函数上。“你是猪吗”不是正确指令,所以ZCL给你滤掉了。 |
|
|
|
你的zclSampleSw_epDesc是多此一举,bdb_RegisterSimpleDescriptor已经给你分配了一个epDesc了 |
|
|
|
adolclistin 发表于 2018-5-31 02:52 这个不怪Juson,这个是TI SampleLight代码的问题,一言以蔽之:脱裤子放屁---多此一举。 的确是在bdb_RegisterSimpleDescriptor里面已经调用afRegister注册了endpoint,后面又接着调用afRegister注册同一个endpoint,不是多此一举是什么? 的确是要检查一下AF_INCOMING_MSG_CMD消息的处理,一般很多时候都是在这里根据clusterId和command以及client-server方向等等来判断,给滤除了。 |
|
|
|
只有小组成员才能发言,加入小组>>
TMS320F28377D:新做了以377d为芯片的板子,上电后芯片复位引脚出现方波请问如何解决?
1903 浏览 0 评论
TPS55340通电后输入端保险丝烧断,芯片输入和GND之间短路
3660 浏览 4 评论
5038 浏览 0 评论
请问如何用DM368对RGB格式的图片数据进行编码生成JPEG格式图片?
1738 浏览 1 评论
9402 浏览 8 评论
CC3100BOOST使用CC3200lunchXL进行烧录
678浏览 2评论
726浏览 1评论
TMS320F28034: 利用C2prog通过SCI给TMS320F28034烧录程序,出现错误提示:Bootloading... failed (invalid echo)!
694浏览 1评论
求DLPC350 Programmer’s Guide User's Guide 中文版说明书
1204浏览 1评论
1788浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-5-3 12:09 , Processed in 0.476930 second(s), Total 56, Slave 48 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号