记录一下近期工作-Qt实现tcp协议接收数据

4.01以及之前

  1. 完成自定义标题
    包括最大化最小化关闭以及伸缩放大
  2. 正视布局
    如果是代码编写的界面,可以自己定义widget(或者其他类),不用像ui一样需要“提升为”这个动作实现自定义标题,其实现在来看用ui也是可以实现的,但开始的基础较弱,所幸一股脑的全用代码了,也当锻炼锻炼基础。直接利用verticalLayout->addWidget/addLayout便可以实现不同控件的连接。
    需要注意的是:指针型->需要new,,即对应的实例化
  3. 学会使用connect
    包括qt4 以及 qt5 的写法,同时了解到connect函数第五个参数在多线程中使用较广。这里也感谢小猪老师的文档,以后有空再整理吧。
  4. tcp套接字的连接
    服务端、客户端,我方主要作为客户端,接收数据的缓存池没有处理好。
  5. Qchart与ChartView实现简单的图形绘制
    功能较为简单,实时调试时数据量一大就卡死。

4.02

学了一天,发现刚开始数据量小些,之后数据量加大(比如1s发送200个或者更多),程序表现还是较可以的,也没有crashed(后期发送10000个也没崩),但是数据接收上会发现绘制线条出现丢数据的现象。

4.03

学了一天,受昨晚启发,利用QCustomplot绘图,利用某位大佬的包,能实现光标显示,全屏自适应显示,感觉界面也更优化。但是新问题又出现了:数据量稍微大一点界面就卡的要死,三牛也没响应,在实时数据这一块还不如Qchart的表现呢!

4.04

开始尝试线程,qt4和5的写法又有区别,还好b站大佬的课程详细。最终用的5的写法,跨线程传输数据,emit signal可以携带数据,同时多线程通信一定要用connect。

性能:收数据不会崩了,但是画图有点掉数据。。。
哦更过分的是,配置了半天OpenGL,想提高一下画图的性能,也失败了。。。。

4.05

vs2022卸载,重下2017;qt creator也重新配置上了msvc2017编译器,编译速度的确有所加快,不过出现了C2001问题,编码方式的不同导致中文居然出bug,几经折腾还好在csdn上找到了资料,但是某些中文字符表现还是令人难过,而且数据量一大,界面还是会崩……是电脑处理器的频率跟不上吗。。。。
链接:C2001错误.

4.15

进步飞速,解决了卡顿问题,还进行了傅里叶分析:fft算法、mkl库调用、ftw调用……同时发现Qcustomplot中的addData函数里可以设置计数器,当数据量足够大时,比如我是1024个数据一包一包的发,那我可以收到512个数据再调用**replot()**函数。注意这一过程最好是与每次要显示的点数成倍数关系,不要出现空档——ex

//绘制512个点就清屏(频谱)
addData如果add到200个点就replot()会发现频谱图越来越短,直到看不见,因为200,200,112+78 ,clear()……
//所以后来改成add到512个点再replot()就刚好能显示完整的频谱。
  • 提高Qcustomplot的绘图的方法总结:
  1. addData()函数中设置计数器,比如512个点再调用replot ()函数。绘图时间有变快很多。
    受启发链接.
     pGraph->addData(x, y);
      //新加xx个数据则replot一次
      numberCount ++;
      if(numberCount == 512)  //结合频域数据,刚好512个点刷新一次
          //其他数会出现空白…… 比如100,就会满100便绘制,512总有数据绘制不出来
      {
//          this->replot();
          this->replot(QCustomPlot::rpQueuedReplot);  //对应方法3
          numberCount = 0;
      }
  1. 本人要绘制的频谱图有对称性,所以只绘制一半长度即可,也就是说要绘制的数据量越少,绘制时间越少。
for(int m = 0; m<vecFreqData2.size()/2;m++)
       {
           freqPlot->addData(0, (xFreq++)* tick, vecFreqData2[m]);
       }
  1. 从Qcustomplot角度进行设置,一位大佬的博客:
    链接: Qcustomplot绘图效率提升.
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值