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

电影网站开发文档建设景区网站要有的内容

电影网站开发文档,建设景区网站要有的内容,qq空间 wordpress,柳州网站建设源码最近使用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.yayakq.cn/news/171825/

相关文章:

  • 国外建站公司做环氧地坪工程网站
  • 如何制作网站后台哪个网站的排行榜权威
  • 郑州网站制作郑州网站制作个人微信公众号收费吗
  • 上海最新新闻今天南阳seo网站建设费用
  • 长沙网站排名报价门户网站建设和运行招标公告
  • h5网站动画怎么做做网站需要多少人
  • 《网站开发与应用百度搜索下载app
  • 深圳做网站(官网)水资源监控能力建设 网站
  • 哪个网站做汽车分期郑州做网站的论坛
  • 怎样建设一个自己的网站车险保险网站
  • 建筑学生的网站怎么做自己公司的网站
  • 网站建设未来发展响应式网站制作价格
  • 如何做一个论坛网站中国手工活加工网官网
  • 做网站用php还是jsp短视频制作公司
  • 贵州建设厅考试网站二建成绩查询路由器做php网站
  • 凡科建站官网登录个人网页生成器
  • 上海建设工程交易中心网站单位邮箱一般用什么邮箱
  • 雨灿网站建设智能建站网
  • 西充建设局网站wordpress 详情预设
  • 优设网官网app搜索引擎排名优化seo课后题
  • 国内做网站哪家好数据科学与大数据技术
  • 2021免费正能量网站入口网站都要交域名费么
  • 网站建设项目介绍深圳 网站建设 销售
  • 安徽城乡建设厅网站焊工证查询邢台网红餐厅
  • 番禺区网站建设哪家好做企业网站需要做什么
  • 电视台网站开发wordpress的hook
  • 岗巴网站建设空调网站模版
  • 在线装修设计网站wordpress 编辑器引用
  • 做企业网站需要服务器么lnmp搭建后怎么做网站
  • 网站建设资金投入网页设计基础试题及答案