This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DSP网口通过TCP/IP协议接收数据过大就会失败



专家你好:

新手学习网口调试,遇到一些问题;

想从PC端通过网口TCP/IP协议发送数据给DSP,用

i = (int)recvnc( s, (void **)&p, 0, &hBuffer );

再用memcpy()函数将数据放入DDR中,当数据为120KB的时候,用网络调试助手可以存入,

但是自己编写的程序,最多只能到9600B,请问是什么原因?谢谢专家解答。

for(;;)
{

i = (int)recvnc( s, (void **)&p, 0, &hBuffer );
if(i >= 0)
{

memcpy(&rectest[0+k],p,i);
send(s,p,i,0);
k=k+i;
// printf("SUCCESS (%d) (%d)\n",i,k);
}
// while(1)
// {
// send(s,sendpBuf,Total_Num,0);
// }
else
{ printf("FINISHED\n");
break;
}
}

  • 你使用的具体是哪款dsp,运行的是TI的例程么,是PC向DSP发送数据超过9600B后就发送失败么,有check DSP软件接收是否有限制么。

  • 谢谢专家回复!

    我用的是DSP6678,例程是ndk下面的helloWord,DSP向PC发送数据是可以的,反过来DSP接收数据过大就会出错,但是没有check DSP软件接收是否有限制,不知道该如何check DSP软件是否有限制。

    用网络调试助手NetAssist可以将数据存入DDR中,而且5.62M的数据完全正确,自己写的PC端程序利用网络调试助手也可以成功发送数据,但是PC与DSP两者之间

    联调就会出现错误,想问一下专家问题可能出现在DSP上面,还是PC段程序上面,谢谢专家!

    程序里面设置  int  bufferlength=64000;

    setsockopt( s, SOL_SOCKET, SO_SNDBUF, &bufferlength, sizeof( int ) );
    setsockopt( s, SOL_SOCKET, SO_RCVBUF, &bufferlength, sizeof( int ) );

    for(;;)
    {
    // i=recv(s, (void *)&p, 3080, 0 );
    i = (int)recvnc( s, (void **)&p, 0, &hBuffer );
    if(i >= 0)
    {

    memcpy(&rectest[0+k],p,i);
    send(s,p,i,0);
    k=k+i;
    recvncfree( hBuffer );
    // printf("SUCCESS (%d) (%d)\n",i,k);
    }
    // while(1)
    // {
    // send(s,sendpBuf,Total_Num,0);
    // }
    else
    { printf("FINISHED\n");
    break;
    }
    }

  • 现在发现当PC向DSP发送数据的时候,DSP一直在接收,开始的时候比较快,当数据到达135840B的时候,数据就接收的非常慢,还是在接收数据,请问是什么原因,

    PC发送程序是自己编的,现在不知道是哪边的问题,谢谢专家解答!

  • 你好,我也是这个问题,请问你问题解决了吗?