This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

cc3200在TransceiverMode下抓不到udp,tcp协议报文

Other Parts Discussed in Thread: CC3200

我是这样测试的,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设置不对吗?