微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI WIFI设计交流 > CC3200 TCP传输

CC3200 TCP传输

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

    我遇到一个问题,想请教你一下, 

if (g_ucUARTBuffer[0]!=0)     //串口的额数据
	        {
	        	// sending packet  Ibcon的数据
	        	iStatus = sl_Send(iSockID1, g_ucUARTBuffer, sizeof(g_ucUARTBuffer), 0 );//发送TCP数据
	        	if(iStatus<=0)
	        	{
	        		ASSERT_ON_ERROR(sl_Close(iSockID1));
	        		ASSERT_ON_ERROR(TCP_CLIENT_FAILED);
	        	}
	        	memset(g_ucUARTBuffer, 0, sizeof(g_ucUARTBuffer));
	        }
	    	//接收来自服务器的TCP数据。
	          iStatus = sl_Recv(iSockID1,g_cBsdbuf,sizeof(g_cBsdbuf),0);  if(iStatus > 0)  {      UART_PRINT("recv ok\n");	  UART_PRINT(">>>%s\r\n", g_cBsdbuf);
  }  else  {	  ASSERT_ON_ERROR(sl_Close(iSockID1));	  ASSERT_ON_ERROR(TCP_CLIENT_FAILED);  }  memset(g_cBsdbuf, 0, sizeof(g_cBsdbuf));

 单独的发送和接收都可以,当一起运行的时候,就会出现,当串口数据发送时候,服务器那边没有显示接收的数据,只有当服务器那边发送数据的时候,才会显示出从串口发过来的数据,这是为什么? 

有什么解决方法吗?

QQ445945370

QQ:734679109

能具体告知怎么解决吗?谢谢

iStatus = sl_Recv(iSockID1,g_cBsdbuf,sizeof(g_cBsdbuf),0);这一句死等服务器发的数据,直到有数据发过来,才会执行下一句

那我如何解决,这个问题?

能具体一点吗?解决方法

可是我是Sl_send()函数在前面,按理说应该先运行这个函数才对啊,和Sl-recv()死等没关系吧

能具体一点解决方法吗?

能否把SOCKET设置成为nonblocking再测试一下,或者给recv设置timeout.

long nonBlocking = 1;

iStatus = sl_SetSockOpt(SockID, SL_SOL_SOCKET, SL_SO_NONBLOCKING, \
&nonBlocking,
sizeof(nonBlocking));

谢谢啊

我加了一个FREERTOS操作系统,完美的解决了这个问题

能具体说一下吗?我QQ:734679109

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

网站地图

Top