我是这样测试的,13个信道循环抓包,每个信道尝试抓取10次,并将抓到的数据包通过串口发到电脑端显示出来,代码如下:
unsigned char TransceiverTest(void)
{
unsigned char buff[1536];
unsigned char info[1536];
unsigned char data[2];
unsigned char ch;
int iSockID = 0;
int iRevLen = 0;
int iStatus = 0;
unsigned int i = 0;
unsigned int j = 0;
char *s;
ch=1;
while(1)
{
iSockID = sl_Socket(SL_AF_RF,SL_SOCK_RAW,ch);
if(iSockID > 0)
{
j=0;
while(1)
{
memset(info,0x00,1536);
s=(char *)info;
iRevLen = sl_Recv(iSockID,buff,1536,0);
if(iRevLen)
{
TransHeader=(SlTransceiverRxOverHead_t *)(buff+0x00);
TransMACHeader=(SlTransceiverMACHead_t *)(buff+0x08);
if(TransMACHeader->Type==0x02)//&&(TransMACHeader->SubType==0x00))
{
strcat(s,"Frame Type=");
sprintf(s+strlen(s),"0x%x,",TransMACHeader->Type);
strcat(s,"Frame SubType=");
sprintf(s+strlen(s),"0x%x,",TransMACHeader->SubType);
strcat(s,"\r\n\r\n");
strcat(s,"ch=");
sprintf(s+strlen(s),"%d,",TransHeader->channel);
strcat(s,"rssi=");
sprintf(s+strlen(s),"%d,",TransHeader->rssi);
strcat(s,"rate=");
sprintf(s+strlen(s),"%d,",TransHeader->rate);
strcat(s,"size=");
sprintf(s+strlen(s),"%d",iRevLen-0x08);
strcat(s,"\r\n\r\n");
for(i=0;i<iRevLen;i++)
{
hex_ctoa(buff[i+0x08],data);
strncat(s,(char const *)data,2);
strcat(s," ");
}
strcat(s,"\r\n\r\n\r\n\r\n");
Uart0PutStr((unsigned char *)s,strlen(s));
}
}
j++;
if(j>=10) break;
}
}
sl_Close(iSockID);
MAP_UtilsDelay(DELAY_MS(10));
ch++;
if(ch>13)
{
ch=1;
}
}
}
通过测试,是有抓取到数据包,帧类型有数据帧,管理帧,控制帧的,截图如下:
然后,两台笔记本之间通过udp方式,wifi网络下互相收发数据,用cc3200来抓取两台笔记本交互的数据,为什么一直抓不到的?是socket设置不对吗?