当前位置: 首页 > news >正文

2016响应式网站模版万能导航网

2016响应式网站模版,万能导航网,网络营销概念及理解,一个空间能否做两个网站最近使用QModbusTCPClient通信,需要频繁发送读写请求,发现软件占用内存一直在增减,经过不断咨询和尝试,终于解决了。 1.方案一(失败) 最开始以为是访问太频繁,导致创建reply的对象比delete re…

    最近使用QModbusTCPClient通信,需要频繁发送读写请求,发现软件占用内存一直在增减,经过不断咨询和尝试,终于解决了。

1.方案一(失败)

最开始以为是访问太频繁,导致创建reply的对象比delete reply快导致的。尝试增加时间间隔,发现无效。内存占用还是在增加,只是增速慢了点。

QModbusReply*reply= m_modbus->sendReadRequest();

2.方案二(失败)

直接保存每个reply,只有reply==nullptr时才能重复发送对应的request()请求。在reply的finish槽函数中delete reply,同时让reply=nullptr。这样可以避免过于频繁的通信,确保前一次request()处理响应之后再次发送相同的request().

if(!m_reply[4])         //确保前一次响应处理之后再次发送相同的request(){QVector<quint16>values(1, 0);QModbusDataUnit read(QModbusDataUnit::Coils, 128 + m_param->motorID(), values);m_reply[4] = m_modbus->sendReadRequest(read, m_485ID);if(m_reply[4] && !m_reply[4]->isFinished()){connect(m_reply[4], &QModbusReply::finished, [this]() {if(m_reply[4]->error() == QModbusDevice::NoError){m_runState = m_reply[4]->result().values().first();}delete  m_reply[4];m_reply[4] = nullptr;//确保下次可以再次发送request()});}else {delete  m_reply[4];m_reply[4] = nullptr;}}

仍然没有解决问题,内存还是在持续增加。

3.方案三(成功)

感谢这里的内容

https://bugreports.qt.io/browse/QTBUG-92072

问题:

//qmodbusclient_p.h ->enqueueRequest
q->connect(q, &QModbusClient::timeoutChanged,element.timer.data(), QOverload<int>::of(&QTimer::setInterval));

QModbusTCPClient的每次request(无论读写)都会增加这样一个连接。即使销毁了对应的reply,也不能删除该链接,导致内存逐渐增加。

解决:

针对每一次request,手动断开该链接。

m_modbus->disconnect(SIGNAL(timeoutChanged(int)), 0, 0);

一段完整代码:

QModbusReply *reply = m_modbus->sendWriteRequest(m_param->modbusData(topLeft),m_485ID);int id = m_param->index(topLeft.row(), m_param->IDCol).data().toInt();int value = topLeft.data().toInt();QString text = m_param->index(topLeft.row(), m_param->TextCol).data().toString();if(reply && !reply->isFinished()){connect(reply, &QModbusReply::finished, [ = ]() {if(reply->error() == QModbusDevice::NoError){qInfo() << QString("MotorID:%1 Write(%2->%3(%4)) Succeed!\n").arg(m_param->motorID()).arg(value).arg(id).arg(text);}else{qWarning() << QString("MotorID:%1 Write(%2->%3(%4)) Failed!\n").arg(m_param->motorID()).arg(value).arg(id).arg(text);}//响应函数中手动断开连接m_modbus->disconnect(SIGNAL(timeoutChanged(int)), 0, 0);delete  reply;});}else{qWarning() << QString("MotorID:%1 Write(%2->%3(%4)) No Response!\n").arg(m_param->motorID()).arg(value).arg(id).arg(text);
//响应函数中手动断开连接m_modbus->disconnect(SIGNAL(timeoutChanged(int)), 0, 0);delete reply;}

http://www.dt0577.cn/news/15485.html

相关文章:

  • linux建设php网站电子商务seo
  • 怎么建公司免费网站百度竞价排名算法
  • 建筑装饰公司做网站的作用百度识图网页版 在线
  • 安庆商城网站开发seo技术博客
  • 自己给公司做网站难不难百度推广有效果吗
  • 企业的网站建设与设计论文全媒体广告加盟
  • 装饰公司网站如何做推广企业培训课程有哪些
  • 营销型网站制作方法seo优化排名
  • 查询公司的app小红书seo优化
  • 基于html5设计的网站建设湖南百度推广代理商
  • 大棚网站怎么做跨境电商seo
  • 清远企业网站建设百度广告收费表
  • 网站开发前端招聘怎么样拓展客户资源
  • 政府响应式网站建设百度知道灰色词代发收录
  • 自己电脑做电影网站2023年新闻摘抄十条
  • 龙之向导外贸网站 网络服务安徽网络关键词优化
  • 国企网站建设百度应用app
  • 加州网络公司排名seo有哪些作用
  • xp系统做网站服务器最新搜索关键词
  • 哪个网站教做pptcba排名
  • 做刷网站怎么赚钱朋友圈推广怎么收费
  • 类似WordPress的Python神马快速排名优化工具
  • 做音乐的网站关键词推广技巧
  • 销型网站建设必须的步骤包括网络推广seo教程
  • 做外贸网站武汉网站优化
  • 专门做爬虫的网站百度大全
  • seo整站优化网站建设免费直链平台
  • 国外网站众筹怎做扬州网络推广公司
  • 哪个视频网站做视频赚钱营销案例网站
  • 南京网站建设苏icp备长沙百度快速排名优化