前言:最近在做一些和网口相关的工作,开此贴记录下任务进展中遇到的问题,方便后面查阅,也希望可以帮助到遇到相同问题的同志。(问题遇到一个记一个,会不断补充直到任务完成)
一.环境介绍
麒麟v10 / ubuntu
借助 QT开发
二.问题汇总
1.利用QT中的qudpsocket进行网口传输出现的丢包问题,通过各种方法改进仍不能解决,多多少少的问题而已,后来看到这篇帖子,才突然意识到qt信号-槽机制的一个特点:当槽函数是非虚函数时,信号与槽机制大约比回到函数机制慢10倍。这就导致网口速度稍稍快一点,槽函数响应速度就顶不住了。
解决方法:取消信号-槽的方式,在网口接收线程中利用while循环来接收数据。
while(1)
{
while( p_socket->hasPendingDatagrams()) // 有数据
{
net_pack_size = p_socket->pendingDatagramSize();
p_socket->readDatagram((char*)p_net_pack,net_pack_size);
// 补充其他处理:数据存储等
}
}
未完,待续……