Other Parts Discussed in Thread: CC2530
在协议栈中,我用组播方式发送39个字节的数据,每秒钟发送10次,但接收程序却只能大约340ms接收一次,也就是一秒钟接收三次。用串口助手观察接收到数据,发现接收程序每接收到三四次就会出间隔大约1.5秒不接收,然后再接收三四次,如此循环,就像卡顿一样。谢谢指导!
下面贴出我的发送和接收程序
发送程序
static uint8 msg_wireless_send[52];
if ( AF_DataRequest( &SampleApp_Flash_DstAddr, &SampleApp_epDesc,
SAMPLEAPP_FLASH_CLUSTERID,/* 被Profile(属性)指定的有效的集群号*/
39, /* 发送数据长度 */
msg_wireless_send, /* 发送数据缓冲区 */
&SampleApp_TransID, /* 任务ID号 */
AF_DISCV_ROUTE, /* 有效位掩码的发送选项 */
AF_DEFAULT_RADIUS ) == afStatus_SUCCESS )
接收程序
void SampleApp_MessageMSGCB( afIncomingMSGPacket_t *pkt )
{
uint8 i;
/* clusterId 簇ID号。 pkt->clusterId表示结构体 pkt 下的 clusterId 元素 */
switch ( pkt->clusterId ) /* 判断簇ID号 */
{
/* 收到广播数据 */
case SAMPLEAPP_PERIODIC_CLUSTERID: /* SAMPLEAPP_PERIODIC_CLUSTERID 是 1 */
break;
/* 收到组播数据,本例为组播数据 */ /* 控制LED亮灭 */
case SAMPLEAPP_FLASH_CLUSTERID: /* SAMPLEAPP_FLASH_CLUSTERID 是 2 */
memcpy(receive_RC_value, pkt->cmd.Data, pkt->cmd.DataLength);
AD7147_C_UartT_Send (receive_RC_value);
UartTX_Send_R (receive_RC_value); /* 串口显示接收到的电容电阻值 */
int8 rssi_value[1];
rssi_value[0] = pkt->rssi; /* 将RSSI的值取出 */
UartTX_Send_rssi(rssi_value);
break;
case SAMPLEAPP_ADDR_CLUSTERID:
for(i=0; i<MAX_DEVICE; i++)
{
if(mDevice[i].id==pkt->cmd.Data[0])
{
mDevice[i].shortAddr=BUILD_UINT16(pkt->cmd.Data[1], pkt->cmd.Data[2]);
}
}
// }
break;
}
}