登录注册
论坛
版主
9794
24
我使用LWIP UDP通过百兆以太网发数据,连续发送多包数据接收到的总比实际少,我猜测有时是udp_send函数执行一次后数据还没有发送就完成就再次执行了下一个udp_send,或者是放内存导致。但是我不知道应该通过什么方式来检测数据是否发送完成。请教这种情况应该怎么处理?
扫一扫,分享给好友
如果我的循环里只有udp_send_data函数,PC端收到数据的吞吐量为16Mbps左右
image.png (2.18 KB, 下载次数: 0) 下载附件 保存到相册 2021-10-18 21:49 上传
image.png (2.18 KB, 下载次数: 0)
下载附件 保存到相册
2021-10-18 21:49 上传
然后如果在每次执行完udp_send_data后延时100us,速度会提升一倍还多,达到37Mbps
image.png (2.75 KB, 下载次数: 0) 下载附件 保存到相册 2021-10-18 21:50 上传
image.png (2.75 KB, 下载次数: 0)
2021-10-18 21:50 上传
image.png (36.7 KB, 下载次数: 0) 下载附件 保存到相册 2021-10-18 21:46 上传
image.png (36.7 KB, 下载次数: 0)
2021-10-18 21:46 上传
如果使用延时的方法,100Mbps的网络不知道应该设置多少合适,不是一个理想的解决方案。
五彩晶圆(高级)
6822
0
数据包小点重发,发包后停顿吗,UDP 包是不能发太快的,不然肯定要丢包 如果是缓冲区已满,失败后等待
使用延时的方法可以试试,确实不是很理想的方法
一直以为是下位机的问题,后来测试发现是上位机反应慢才丢的包,优化上位机程序,再把下位机发送时加点延时问题解决。
五彩晶圆(中级)
3218
1,上位机的实时性并不好。所以高速UDP通信会丢数据。 还有我不知道UDP——send后有没有办法查询发送缓冲区是否清空。
2,还有一个办法你可以试一下,就是你的单片机通过百兆连接一个千兆交换机,千兆交换机用千兆网线连接电脑的千兆网口试验一下。看看通讯速率能不能上来。
发表回复 回帖后跳转到最后一页
EEWorld Datasheet 技术支持
查看 »