SDK的实例(TCP SERVICE)对接收的处理如下:
lRetVal = ConfigureSimpleLinkToDefaultState();
lRetVal = sl_Start(0, 0, 0);
lRetVal = WlanConnect();
iSockID = sl_Socket(SL_AF_INET,SL_SOCK_STREAM, 0);
iStatus = sl_Bind(iSockID, (SlSockAddr_t *)&sLocalAddr, iAddrSize);
iStatus = sl_Listen(iSockID, 0);
iStatus = sl_SetSockOpt(iSockID, SL_SOL_SOCKET, SL_SO_NONBLOCKING,&lNonBlocking, sizeof(lNonBlocking));
iNewSockID = sl_Accept(iSockID, ( struct SlSockAddr_t *)&sAddr,(SlSocklen_t*)&iAddrSize);
iStatus = sl_Recv(iNewSockID, g_cBsdBuf, iTestBufLen, 0);
我这也有个程序(应该是上系统了,对此不大懂),接收如下:
lRetVal = VStartSimpleLinkSpawnTask(SPAWN_TASK_PRIORITY);
lRetVal = osi_TaskCreate( Wlan_Ape,(const signed char*)"Wire_AP",OSI_STACK_SIZE,NULL,WLAN_AP_TASK_PRIORITY,NULL );
lRetVal = osi_TaskCreate( Wire_RV,(const signed char*)"Wire_RV",OSI_STACK_SIZE,NULL,RV_TASK_PRIORITY,NULL );
Wire_RV函数中:
if( IS_IP_LEASED(g_ulStatus) && g_ConnectionOK)
{ lRetVal = sl_Recv(g_TcpSock.iNewSockDesc, (unsigned char *)&g_CtrlDataBuff, MAX_CTRL_PACKET_SIZE, 0);
}这两都实际应用上的差别在哪?
通过同一块电路板测试,SDK自带的程序接收数据正常,下面这个程序接收不到数据(最后sl_Recv返回的数据一直为0),
下面这个程序在以前的板子上使用过是没问题的!!!!
Alvin Chen:
看不出什么问题,上面的那个程序就是标准TCP的程序。
你后面这段程序:
lRetVal = osi_TaskCreate( Wlan_Ape,(const signed char*)"Wire_AP",OSI_STACK_SIZE,NULL,WLAN_AP_TASK_PRIORITY,NULL );
lRetVal = osi_TaskCreate( Wire_RV,(const signed char*)"Wire_RV",OSI_STACK_SIZE,NULL,RV_TASK_PRIORITY,NULL );
这是增加了两个TASK 一个是AP 猜测你的TCP client连接的是CC32xx 一个TCP 接收程序。关于sl_Recv可以看下面的。
dev.ti.com/…/group___socket.html你最好去问写这个程序的怎么回事。
你什么芯片,烧录相同的server pack试下。
processors.wiki.ti.com/…/CC3200_Release_Notes