微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI WIFI设计交流 > CC3000 socket中send()和recv()收发数据的问题

CC3000 socket中send()和recv()收发数据的问题

时间:10-02 整理:3721RD 点击:

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,还会有这个问题吗?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top