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