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

网站SEO基础代做外贸 网站设计

网站SEO基础代做,外贸 网站设计,域名一年要多少钱,做网站的书籍推荐背景 在编写ModbusTCP时候,连接、寄存器读写属于通用的功能,为了便于后续直接复用,选择封装到一个类。本博文在封装展示该类过程中,会提及到编写该类过程中,出现的连接未成功的问题,以及该问题的解决方式。…

背景

在编写ModbusTCP时候,连接、寄存器读写属于通用的功能,为了便于后续直接复用,选择封装到一个类。本博文在封装展示该类过程中,会提及到编写该类过程中,出现的连接未成功的问题,以及该问题的解决方式。

问题

首先,需要明确设备连接状态有4类:

enum State {UnconnectedState,ConnectingState,ConnectedState,ClosingState};

其次,需要明确client->connectDevice()返回true并不是表示连接成功了,而只是连接请求发送成功,即状态切换到了ConnectingState。由于连接成功是ConnectedState,需要做client->state() == QModbusDevice::ConnectedState判断,只有true了,才是真正意义上的连接成功。

实现

在解决该问题前,需要介绍一个处理事件循环的类QEventLoop,主要作用于在同步代码中实现异步操作的等待,允许在程序中创建一个局部事件循环,用于阻塞当前线程并等待特定事件发生,直到事件循环被退出(quit()exit() 被调用)才结束。它的生命周期:事件循环在exec()调用后启动,在 quit() 后停止,通常配合信号槽机制使用

针对以上提及的问题,加入超时机制,等待连接完成:

bool modbusClient::connect(QString &msg)
{if (!client->connectDevice()) {qDebug() << "连接请求发送失败:" << client->errorString();msg="连接请求发送失败";return false;}// 等待连接完成(添加超时机制)QEventLoop loop;QTimer timer;timer.setSingleShot(true);//单次触发模式。定时器超时后会自动停止,不会重复触发timer.setInterval(2500);// 监听连接状态变化QObject::connect(&timer, &QTimer::timeout, &loop, &QEventLoop::quit);QObject::connect(client, &QModbusClient::stateChanged, [&](QModbusDevice::State state) {// qDebug() << "连接状态变化:" << state;if (state == QModbusDevice::ConnectedState) {loop.quit();  // 连接成功,退出事件循环}});timer.start();loop.exec();if (client->state() != QModbusDevice::ConnectedState) {msg = "连接超时";return false;}return true;
}

解决了以上的问题后,就可以进行modbusClient类封装了,已上传资源,注意使用时候要pro中引入QT += serialbus。调用方式,可以采用值调用方式modbusClient md(it.key(),it.value());md.work1(msg);,也可以采用指针的调用方式modbusClient *md1 =new modbusClient(it.key(),it.value()); md1->work1(msg);

http://www.dtcms.com/wzjs/799459.html

相关文章:

  • wordpress 图片采集器seo网站页面f布局
  • 免费网站建设培训杭州网站建设的企业
  • 建设科技信息+网站建设世界500强排名一览表
  • 哪个网站注册域名网站开发类论文题目
  • 北京建站公司排名首推万维科技兰州网站建设公司有哪些
  • 我国酒店网站建设存在的问题美工自学网
  • 网站模板软件生成静态页面网站源码
  • 青岛商业网站建设免费的网站域名查询浏览器
  • 外国字体网站设计公司怎么找
  • 学校网站在建设方面的的优势wordpress不能发表
  • 刚备案的域名如何做网站在深圳注册公司需要什么条件
  • 郑州网站服务公司做影视网站侵权吗
  • 网站登记表网站的站长是什么意思
  • 做视频的音乐哪里下载网站网站维护公司广州
  • 动易cms网站后台很慢是什么原因wordpress打赏积分功能
  • 网站建设报价模板下载设计网站一般要多少钱
  • 沧州大型企业网站建设网站建设国内外研究现状
  • 山东网站seo设计江阴外贸网站建设
  • 做网站公司牛鼻子教育教学网站建设
  • 淄博企业网站建设哪家好免费建设网站
  • 洛阳市网站建设扬州今天的最新发布消息
  • 金湖网站建设做网站用的符号
  • 华夏业务员做单的网站网站解决方案
  • 超值的镇江网站建设桂林象鼻山附近的酒店
  • 厂西建设厅网站wordpress 用户角色插件
  • 国内网站放国外服务器网站制作的费用
  • 腾讯企业邮箱下载appseo学习
  • 溧阳网站建设报价教你用模板做网站
  • 国土局网站建设经验网页设计实验报告实验步骤
  • 化工企业建网站做网站维护