OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4612|回复: 5

LWIP的TCP客户端测试为什么前两个字节不显示还有延迟问题

[复制链接]

19

主题

176

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1105
金钱
1105
注册时间
2015-10-27
在线时间
206 小时
发表于 2015-12-17 16:37:13 | 显示全部楼层 |阅读模式
5金钱
UPD测试已经实现了调试助手发送数据给开发板,开发板马上把数据再回给调试助手,不管调试助手发送间隔是1毫秒还是100毫秒,都正常。
TCP Client的测试,我把原子的程序稍微改动下,去掉LCD,按键,希望调试助手发送数据给开发板,然后开发板再把数据发送给调试助手。相当于服务器发送给客户端,然后客户端再把数据返回。
1.我先把调试助手发送数据设置为1000毫秒,然后数据流循环发送,接收还面前能跟的上发送的速度。明显有很的延迟。出现问题如下图所示:前两个字节丢了。发送一个字节显示发送一个。接收一个,但是调试助手没显示,两个字节也是这样。三个字节的时候才显示第三个前两个丢了。循环发送,从第二次出现前面那个符号。不知道为什么


2.发送间隔设置为100毫秒的时候,循环发送就开始出现发送和接收数据不一致了,也是前两两个字节不显示。而且Ex出现在末尾。


不知道是什么问题。求大神给看看。
就修改了void tcp_client_test(void)里面的这点


还有修改了一点//lwIP tcp_poll的回调函数一点,为了实现接收的数据再发送出去。
err_t tcp_client_poll(void *arg, struct tcp_pcb *tpcb)
{
err_t ret_err;
struct tcp_client_struct *es; 
es=(struct tcp_client_struct*)arg;
if(es!=NULL)  //连接处于空闲可以发送数据
{
if(tcp_client_flag&(1<<7)) //判断是否有数据要发送 


// es->p=pbuf_alloc(PBUF_TRANSPORT, strlen((char*)tcp_client_sendbuf),PBUF_POOL); //申请内存 
// pbuf_take(es->p,(char*)tcp_client_sendbuf,strlen((char*)tcp_client_sendbuf)); //将tcp_client_sentbuf[]中的数据拷贝到es->p_tx中
es->p=pbuf_alloc(PBUF_TRANSPORT, strlen((char*)tcp_client_recvbuf),PBUF_POOL); //申请内存 
pbuf_take(es->p,(char*)tcp_client_recvbuf,strlen((char*)tcp_client_recvbuf)); //将tcp_client_recvbuf[]中的数据拷贝到es->p_tx中
tcp_client_senddata(tpcb,es);//将tcp_client_sentbuf[]里面复制给pbuf的数据发送出去
tcp_client_flag&=~(1<<7); //清除数据发送标志
if(es->p)pbuf_free(es->p); //释放内存
}else if(es->state==ES_TCPCLIENT_CLOSING)

  tcp_client_connection_close(tpcb,es);//关闭TCP连接

ret_err=ERR_OK;
}else

tcp_abort(tpcb);//终止连接,删除pcb控制块
ret_err=ERR_ABRT;
}
return ret_err;

我把整个工程发上来。大神给看看啊

TCP客户端无DHCP版.rar

7.88 MB, 下载次数: 72

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

19

主题

176

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1105
金钱
1105
注册时间
2015-10-27
在线时间
206 小时
 楼主| 发表于 2015-12-17 16:40:28 | 显示全部楼层
用的就是探索者的板子,大神给看看啊
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2015-12-17 22:35:09 | 显示全部楼层
我们的例程不会有这个问题,你对照着看一下是不是改代码的时候把哪里改错了。
开往春天的手扶拖拉机
回复

使用道具 举报

19

主题

176

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1105
金钱
1105
注册时间
2015-10-27
在线时间
206 小时
 楼主| 发表于 2015-12-18 09:11:11 | 显示全部楼层
回复【3楼】zuozhongkai:
---------------------------------
例程是在LCD上显示,我现在只是让他在调试助手显示,代码就小改动了三个地方,就在上面说了。我再调调看吧
回复

使用道具 举报

19

主题

176

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1105
金钱
1105
注册时间
2015-10-27
在线时间
206 小时
 楼主| 发表于 2015-12-18 10:07:01 | 显示全部楼层
回复【3楼】zuozhongkai:
---------------------------------
版主问个问题。例程中那个开发板往调试助手发送数据的速度是哪个函数决定的。我把例程中的按键屏蔽掉。运行成功直接发送数据,感觉特别慢。
回复

使用道具 举报

19

主题

176

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1105
金钱
1105
注册时间
2015-10-27
在线时间
206 小时
 楼主| 发表于 2015-12-18 17:42:58 | 显示全部楼层
问题已解决...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-24 18:25

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表