Qt5.9.9 关于界面拖动导致QModbusRTU(QModbusTCP没有测试过)离线的问题

问题锁定

参考网友的思路:

Qt5.9 Modbus request timeout 0x5异常解决

  1. 网友认为是Qt的bug, 我也认同;
  2. 网友认为可以更新模块, 我也认同, 我也编译了Qt5.15.0的code并成功安装到Qt5.9.9中进行使用,界面拖动QModbusRTU离线问题解决!
    Note: 为什么使用Qt5.15.0, 因为其他更高的版本改动较大,已经更Qt5.9.9差异变大了,移植到Qt5.9.9恐怕会有问题

编译Qt5.15.0 QSerialbus模块步骤

1. 下载QtSerialBus 5.15.0 模块, 只下载模块就好

https://mirrors.tuna.tsinghua.edu.cn/qt/official_releases/qt/5.15/5.15.0/submodules/
在这里插入图片描述

2. 解压,使用Qt Creator 打开里面的qtserialbus.pro, 点击编译, 编译之后报错如3

3. 错误罗列如下

  1. Qt::hex 全局替换成 hex
  2. Qt::endl 全局替换成endl
  3. Qt:: hex 全局替换成hex
  4. qmodbustcpclient_p.h
setupTcpSocket()&QAbstractSocket::errorOccurred 改为-static_cast<void(QAbstractSocket::*)(QAbstractSocket::SocketError)>(&QAbstractSocket::error)
  1. qmodbusserver.cpp
    增加头文件
#include <bitset>

QModbusServerPrivate::readBits 函数内

// Using byteCount * 8 so the remaining bits in the last byte are zeroQBitArray bytes(byteCount * 8);address = 0; // The data range now starts with zero.for ( ; address < count; ++address)bytes.setBit(address, unit.value(address));QByteArray payload = QByteArray::fromRawData(bytes.bits(), byteCount);payload.prepend(char(byteCount));return QModbusResponse(request.functionCode(), payload);

替换成

address = 0; // The data range now starts with zero.QVector<quint8> bytes;for (int i = 0; i < byteCount; ++i) {std::bitset<8> byte;// According to the spec: If the returned quantity is not a multiple of eight,// the remaining bits in the final data byte will be padded with zeros.for (int currentBit = 0; currentBit < 8; ++currentBit)byte[currentBit] = unit.value(address++); // The padding happens inside value().bytes.append(static_cast<quint8> (byte.to_ulong()));}return QModbusResponse(request.functionCode(), byteCount, bytes);
4. 最终编译, 编译通过, 在项目中添加install指令使模块安装到Qt5.9.9中

在这里插入图片描述
执行即可, 或创建新的编译, 最后再检查是否更新到Qt5.9.9的模块中了!

如下代表着有新的Qt5.15.0的QSerialbus库安装到Qt5.9.9中了
在这里插入图片描述

Note: 注意编译流程和安装流程是否有错, 要排错, 否则不一定完整安装!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/41699.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Laravel文件存储:云端数据管理的艺术

标题&#xff1a;Laravel文件存储&#xff1a;云端数据管理的艺术 Laravel框架提供了一个强大的文件存储抽象层&#xff0c;允许开发者以一致的方式与本地磁盘或云存储服务&#xff08;如Amazon S3&#xff09;进行交互。文件存储系统简化了文件上传、下载、移动和删除等操作&…

Java面试之Java多线程常见面试题

1、什么是线程&#xff1f; 定义&#xff1a;线程是程序中的执行路径&#xff0c;是操作系统进行调度的基本单位。它允许程序并发执行多个任务&#xff0c;提高程序的响应速度和资源利用率。 2、为什么需要线程&#xff1f; 1、提高并发性&#xff1a;线程允许程序同时执行多…

Mybatis原生使用

一、MyBatis初次使用 2.1 环境搭建步骤 MyBatis 的 API &#xff1a; https://mybatis.org/mybatis-3/zh/getting-started.html 1.引入依赖包 2.准备核心配置件 db.properties drivercom.mysql.cj.jdbc.Driver urljdbc:mysql://123.57.206.19:3306/demo?useUnicodetrue&am…

如何选择最佳的照片和视频恢复软件

您是否意外从硬盘或 USB 卡中删除了照片或视频&#xff1f;最好的视频和照片恢复软件可以帮到您&#xff01;如果您一直在寻找最好的照片恢复软件&#xff0c;那么您来对地方了。本文将分享一些帮助您找到最佳视频恢复软件的提示。 重要提示&#xff1a;事实&#xff1a;媒体文…

知识图谱嵌入

文章目录 知识图谱嵌入的概念知识图谱嵌入的优点知识图谱嵌入的主要方法知识图谱嵌入的应用知识图谱嵌入的概念 为了解决前面提到的知识图谱表示的挑战,在词向量的启发下,研究者考虑如何将知识图谱中的实体和关系映射到连续的向量空间,并包含一些语义层面的信息,可以使得在…

【LabVIEW学习篇 - 3】:程序结构——顺序结构、for循环、while循环

文章目录 顺序结构案例一案例二 for循环while循环 顺序结构 LabVIEW中的顺序结构是一种常用的控制结构&#xff0c;用于按顺序执行程序的不同部分。顺序结构在程序中按照从左到右的顺序依次执行各个子结构&#xff0c;类似于传统的文本编程语言中的顺序执行。 案例一 案例一…

JAVA的线性表数据结构的超详解

目录 顺序表的顺序存储结构 1.数组 2.顺序表 顺序表的声明&#xff0c;存储操作以及效率分析 1.泛型类 2.顺序表的插入操作 3. 顺序表的删除操作 4.顺序表查询操作 5.顺序表的应用 线性表的链式存储结构 单链表的基本操作 顺序表的顺序存储结构 数组是实现顺序存储…

随手记录: Ubuntu NVIDIA显卡驱动安装后 屏幕亮度无法调节 无法连接外显示器等问题

背景 一句话&#xff1a;简单记录帮身边人装系统发现 GPU和外接显示器的无法连接&#xff0c;同时亮度无法调节等新问题 设备型号&#xff1a; 联想笔记本&#xff1a;ThinkBook 16p Gen2CPU&#xff1a;AMD Ryzen 7 5800HGPU&#xff1a;RTX 3060 问题描述及流程&#xff…

类继承-多继承虚继承

#include<iostream> using namespace std; class A1 { public:int a 10;}; class A2 { public:int b 20; }; class B :public A1, public A2 { public:int c 30; }; int main(){B b;cout << b.a << b.b << b.c << endl;return 0; } 如果基类…

STM32-HAL-SDIO-(sd卡的识别,整理后的版本)

1STM32Cube操作 1-1配置时钟 1-2配置调试端口 1-3配置uart 1-4配置SDIO 选择数据传输引脚个数 需改配置&#xff08;图中改了两处&#xff0c;选中的和最后一个&#xff09; 1-5打开DMA 传输方向改为图中的&#xff08;由内转向外设&#xff09;在改图中的一次读写的大小 1-…

图像处理调试软件推荐

对于图像处理的调试&#xff0c;使用具有图形用户界面&#xff08;GUI&#xff09;且支持实时调整和预览的图像处理软件&#xff0c;可以大大提高工作效率。以下是几款常用且功能强大的图像处理调试软件推荐&#xff1a; ImageJ/FijiMATLABOpenCV with GUI LibrariesNI Vision …

Java中关于构造代码块和静态代码块的解析

构造代码块 特点&#xff1a;优先于构造方法执行,每new一次,就会执行一次 public class Person {public Person(){System.out.println("我是无参构造方法");}{System.out.println("我是构造代码块"); //构造代码块} }public class Test {public stati…

面试专区|【54道Spring Cloud高频题整理(附答案背诵版)】

什么是Spring Cloud&#xff1f; Spring Cloud是一个基于Spring Boot的开源框架&#xff0c;它提供了在分布式系统中集成各种服务治理功能的工具&#xff0c;如配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态等。其主要目…

【推荐图书】深入浅出Spring Boot 3.x

推荐原因 这部SpringBoot3.x经典之作&#xff0c;时隔六年迎来重磅升级&#xff01; 适合java开发相关读者 购买链接 商品链接&#xff1a;https://item.jd.com/14600442.html 介绍 书名&#xff1a;深入浅出Spring Boot 3.x ISBN&#xff1a;978-7-115-63282-1/ 作者&…

「ETL趋势」分区支持PostgreSQL、Greenplum、Gauss200, 定时任务支持Kettle

FineDataLink作为一款市场上的顶尖ETL工具&#xff0c;集实时数据同步、ELT/ETL数据处理、数据服务和系统管理于一体的数据集成工具&#xff0c;进行了新的维护迭代。本文把FDL4.1.9最新功能作了介绍&#xff0c;方便大家对比&#xff1a;&#xff08;产品更新详情&#xff1a;…

【国产开源可视化引擎Meta2d.js】钢笔

钢笔 钢笔是和其他众多绘图工具&#xff08;Photoshop、Sketch、Illustrator&#xff09;中一致的钢笔工具&#xff0c;能够很方便的在线绘制各种小图标 在线体验&#xff1a; 乐吾乐2D可视化 示例&#xff1a; // 开始绘画&#xff1a;curve。除了curve&#xff0c;还有poly…

c++应用网络编程之二网络的IO模型

一、网络编程的开发平台 一般来说&#xff0c;目前开发者面对的主流开发平台就是Windows和类Unix&#xff0c;或者干脆就是Windows和Linux平台。至于如IBM或其它等公司的相关平台&#xff0c;可能对绝大多数开发者来说&#xff0c;可能一生都遇不到。至于嵌入式平台&#xff0…

上位机图像处理和嵌入式模块部署(mcu项目1:用户手册)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 一个完整的产品&#xff0c;除了上位机软件、固件、硬件、包装之外&#xff0c;一般还需要一个用户手册。好的用户手册应该能够兼顾到大多数人的认…

力扣(3200)- 三角形的最大高度

好方法&#xff1a; 垃圾方法&#xff1a;

Python面试题:请解释 `lambda` 函数是什么,并举一个例子

lambda函数是Python中用于创建小型匿名函数的一种方式。这些函数通常用于需要一个简单函数的场景&#xff0c;例如作为参数传递给高阶函数。lambda函数以lambda关键字开始&#xff0c;后跟参数列表和表达式&#xff0c;语法形式如下&#xff1a; lambda arguments: expression…