CC3000 socket中send()和recv()收发数据的问题
hello all
CC3000可以正常配置及连接到路由器,我把它作为一个客户端socket,我的源码是这样的
while(1)
{
if(usLinkSocketStatus == -1)
usLinkSocketStatus = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if((usLinkSocketConnect == -1)&& (usLinkSocketStatus != -1))
usLinkSocketConnect = connect(usLinkSocketStatus, &ServersAddr, sizeof(ServersAddr));
if((usLinkSocketConnect == 0))
{
usLinkSocketSend = send(usLinkSocketStatus,pucCC3000_Tx_Buffer, sizeof(pucCC3000_Tx_Buffer), 0);
usLinkSocketRecv = recv(usLinkSocketStatus,pucCC3000_Rx_Buffer, sizeof(pucCC3000_Rx_Buffer), 0);
uSocketSendCount++;
}
ARM_RunF ^= 1; //System Running Flag
GPIO_D.ODR.bit.IO12 ^= 1;
delay_cycles(500);
}
1:socket() 正常,返回值为 0;
2:connect() 正常,返回值为 0;
3:send() 正常,返回值为 发送的字节数;
4:recv() hanging,
服务器端的情况是:显示有新的连接,接受到client端发送的数据。
我的问题出现在,CC3000 的recv()接受缓存中可以看到服务器端发来的数据,但程序挂起在recv()之中,过了一段时间,程序可以继续运行,示波器检测CC3000的 IRQ及CE端,当运行send()时此2引脚上一直为高电平,并且send()返回值是正常的。当运行recv()时,此2引脚上有两个下降沿。
除了第一次可以收发数据外,服务器端并没有连续的接收到CC3000发送的数据,而CC3000也没有连续的接收到服务器端发来的数据,请帮我分析下哪里的问题,感激不尽
驱动及固件库我已经都更新到1.11.1了。
你参考一下http://software-dl.ti.com/ecs/simplelink/cc3000/public/doxygen_API/v1.11.1/html/d2/d21/group__socket__api.html#ga2834936767b72c82fcd8c69906349f01
设定一下SOCKOPT_RECV_TIMEOUT,还会有这个问题吗?