3.0协议栈协调器和终端通过zcl_SendReportCmd互发数据
1.发送多字节(例如10字节)的数据的时候pReportCmd->numAttr 是不是就是10?
zclReportCmd_t *pReportCmd;
pReportCmd->numAttr
pReportCmd->attrList[0].attrID
pReportCmd->attrList[0].dataType
pReportCmd->attrList[0].attrData
2.接收端会进入下面的函数是吗?
case ZCL_CMD_REPORT:
zclSampleSw_ProcessInReportCmd( pInMsg );
我在接收函数里怎么提取数据?
static uint8 zclSampleSw_ProcessInReportCmd( zclIncomingMsg_t *pInMsg )
{
}
Alvin Chen:
attr 值是report 几个属性,跟你单个属性上传的数据无关。
可以看一下下面的文章有一定参考意义:
bbs.newbitstudio.com/forum.php
user5367314:
回复 Alvin Chen:
zcl_SendReportCmd一次最大可以发送多少个字节的私有数据?
Alvin Chen:
回复 user5367314:
这个取决你的应用程序可以申请出多少空间,以及考虑IEEE 802.15.4MAC数据包的最大长度为127字节
ZCL REPPROT 参考
SampleTemperatureSensor
SampleThermostat
YiKai Chen:
回复 user5367314:
建議一次发送不要超過60个字节
user5367314:
回复 YiKai Chen:
测试的时候发现终端有掉线和自动重启的现象,抓包如附件,请帮忙看看是什么原因?3.0协议栈开关灯例程
掉线自动重启.psd
user5367314:
回复 Alvin Chen:
协调器通过zcl_SendReportCmd给2630终端发私有数据,
2630终端在应用程序里怎么接收?
协调器发送后会,2630的接收处理函数是?
user5367314:
回复 YiKai Chen:
发送端:
uint8zclSampleSw_IR_CMD[4]={0};zclSampleSw_IR_CMD[0]=1;zclSampleSw_IR_CMD[1]=2;zclSampleSw_IR_CMD[2]=3;zclSampleSw_IR_CMD[3]=4;//发送pReportCmd = osal_mem_alloc( sizeof(zclReportCmd_t) + sizeof(zclReport_t) );if ( pReportCmd != NULL ){pReportCmd->numAttr = 1;pReportCmd->attrList[0].attrID = ATTRID_ON_OFF;pReportCmd->attrList[0].dataType = ZCL_DATATYPE_UINT8;pReportCmd->attrList[0].attrData = (void *)(&zclSampleSw_IR_CMD);zcl_SendReportCmd( SAMPLESW_ENDPOINT, &zclSampleSw_DstAddr,ZCL_CLUSTER_ID_GEN_ON_OFF,pReportCmd, ZCL_FRAME_CLIENT_SERVER_DIR, TRUE, zclSampleSwSeqNum++ );}osal_mem_free( pReportCmd );
接收端uint8 str[4]={0};zclReportCmd_t *pReportCmd;pReportCmd=(zclReportCmd_t *)pInMsg->attrCmd;osal_memcpy(&str,pReportCmd->attrList[0].attrData,4);HalUARTWrite(0,str,4 );
接收端能收到,但是接收的数据不对,
请问哪里代码有误?
YiKai Chen:
回复 user5367314:
pReportCmd->attrList[0].dataType = ZCL_DATATYPE_UINT8;這個不對,至少要設置成ZCL_DATATYPE_UINT32才能送4個bytes
Alvin Chen:
回复 user5367314:
你有认真看过我第一个链接??
要使用ZCL_DATATYPE_CHAR_STR
user5367314:
回复 YiKai Chen:
那我发送50个字节用什么类型?