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; icmd.Data[0]) { mDevice[i].shortAddr=BUILD_UINT16(pkt->cmd.Data[1], pkt->cmd.Data[2]); } } // } break; }}