Qt Modbus 寄存器读写实例

news2025/1/22 9:20:03

一.线圈状态寄存器读写

  • 项目效果如下
    在这里插入图片描述

1. 写单个寄存器

  • MODBUS_API int modbus_write_bit(modbus_t *ctx, int coil_addr, int status);
int addr=ui->spinBoxwirte_addr->value();
    int data=ui->spinBoxwirte_data->value();
    int ret = modbus_write_bit(mb,addr,data);

    if(ret!=1)
    {
        QMessageBox::information(this,"失败",
                                 "写状态寄存器失败,地址:"+QString::number(data));
    }else
    {
        label_status->setText("写线圈状态寄存器成功!");
    }

2. 读单个寄存器

  • int modbus_read_bits(modbus_t *ctx, int addr, int nb, uint8_t *dest);
int addr=ui->spinBoxRead_addr->value();
    int data=ui->spinBoxRead_data->value();
    //int modbus_read_bits(modbus_t *ctx, int addr, int nb, uint8_t *dest);
    uint8_t dest[4];
    int ret = modbus_read_bits(mb,addr,1,dest);

    if(ret!=1)
    {
        QMessageBox::information(this,"失败",
                                 "读状态寄存器失败,地址:"+QString::number(data));
    }else
    {
        label_status->setText("读线圈状态寄存器成功!");
        qDebug()<<"读出的数据为:"<<dest[0];
        ui->spinBoxRead_data->setValue(dest[0]);
    }

3. 写多个寄存器

  • int modbus_write_bits(modbus_t *ctx, int addr, int nb, const uint8_t *data);
int addr=ui->spinBoxWriteMore_addr->value();

    //使用正则表达式,来处理字符串的分割
    QString  str = ui->textEdit_xianWrite->toPlainText();

    //用正则表达式进行分割
    QRegExp separator= QRegExp("\t|\n|\r\n|,| |;");

    //进行分割
    QStringList list =  str.split(separator,QString::SkipEmptyParts);

    uint8_t*value=new uint8_t[list.count()];

    for(int i=0;i<list.count();i++)
    {
        value[i]=list[i].toInt();
    }

    //int modbus_write_bits(modbus_t *ctx, int addr, int nb, const uint8_t *data);

    int ret = modbus_write_bits(mb,addr,list.count(),value);

    if(ret!=list.count())
    {
        QMessageBox::information(this,"写多个失败",
                                 "读状态寄存器失败,地址:"+QString::number(addr));
         label_status->setText("写多个线圈状态寄存器失败!");
    }else
    {
        label_status->setText("写多个线圈状态寄存器成功!");
    }

    delete [] value;


4. 读多个寄存器

- int modbus_read_bits(modbus_t *ctx, int addr, int nb, uint8_t *dest);

ui->textEditRead_xian->clear();
    int addr=ui->spinBoxReadMorexian_addr->value();
    int count=ui->spinBoxReadMorexian_num->value();

    uint8_t *values = new uint8_t[count];

    //int modbus_read_bits(modbus_t *ctx, int addr, int nb, uint8_t *dest);
    int ret=modbus_read_bits(mb,addr,count,values);

    if(ret!=count)
    {
        QMessageBox::information(this,"读多个失败",
                                 "读状态寄存器失败,地址:"+QString::number(addr));
         label_status->setText("读多个线圈状态寄存器失败!");
    }else
    {
        label_status->setText("读多个线圈状态寄存器成功!");
        QString str;
        for(int i=0;i<count;i++)
        {
            str+=QString::number(values[i])+"\t";
        }

        ui->textEditRead_xian->setText(str);

    }

    delete [] values;

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

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

相关文章

【Qt】Qt日志信息处理

Qt日志信息处理 一、介绍二、相关函数的使用介绍1. qInstallMessageHandle2. QtMsgType3. QMessageLogContext 三、一个简单示例 一、介绍 Qt有Info、Debug、Warning、Critical、Fatal五种级别的调试信息。 Info: 提示信息qDebug&#xff1a;调试信息qWarning&#xff1a;警告…

目标检测——X光安检数据集

1. OPIXray数据集&#xff08;2020&#xff09; 2. HIXray数据集&#xff08;2021&#xff09; 3. SIXray数据集&#xff08;2019&#xff09; 4. CLCXray数据集&#xff08;2022&#xff09; 5. PIDray数据集&#xff08;2021&#xff09; 6. GDXray数据集&#xff08;20…

C++-引用,inline,nullptr

一&#xff0c;引用 1.1引用的概念与定义 引用不是新定义⼀个变量&#xff0c;而是给已存在变量取了⼀个别名&#xff0c;编译器不会为引用变量开辟内存空间&#xff0c;它和它引用的变量共用同⼀块内存空间。 引用的使用方式如下&#xff1a; 类型& 引用别名 引用对象…

【带你入门生信】什么是生物信息学

生物信息学 生物信息学&#xff1a;利用应用数学、信息学、统计学和计算机科学&#xff0c;对生物学数据进行搜索&#xff08;收集和筛选&#xff09;、处理&#xff08;编辑、整理、管理和显示&#xff09;及分析&#xff08;计算和模拟&#xff09;&#xff0c;提取生物信息…

一键生成原创文案,轻松成为文案高手的方法

当下时代&#xff0c;文案写作对于各个企业推广产品和服务显得隔外重要。优秀的文案能够吸引用户的注意力&#xff0c;激发购买欲望&#xff0c;从而为企业带来更多的销售机会。然而&#xff0c;对于许多人来说&#xff0c;撰写出一篇吸引人的原创文案可能并不容易。但是&#…

【C++】C++11之新的类功能与可变参数模板

目录 一、新的默认成员函数 二、新的关键字 2.1 default 2.2 detele 2.3 final和override 三、可变参数模板 3.1 定义 3.2 递归展开参数包 3.3 逗号表达式展开参数包 3.4 emplace_back 一、新的默认成员函数 在C11之前&#xff0c;默认成员函数只有六个&#xff0c;…

2024华数杯选题建议-建模思路-代码论文助攻

你是否在寻找数学建模比赛的突破点&#xff1f;数学建模进阶思路&#xff01; 作为经验丰富的数学建模团队&#xff0c;我们将为你带来2024 华数杯的全面解析。这个解决方案包不仅包括完整的代码实现&#xff0c;还有详尽的建模过程和解析&#xff0c;帮助你全面理解并掌握如何…

C:关于static 和 extern 关键字的介绍-学习笔记

目录 1、作用域与生命周期 1.1 作用域 1.2 生命周期 1.3 变量的作用域和生命周期之间的关系 2、static 和 extern 2.1 static 修饰局部变量&#xff1a; 2.2 static 修饰全局变量&#xff08;包含extern的作用&#xff09;&#xff1a; 2.3 static修饰函数&#xff1a…

海思RTSP推流第二篇——海思平台和H264编码Demo

前言&#xff1a; 记得行内一个老师说过&#xff0c;基础不牢&#xff0c;地动山摇&#xff0c;对于海思的编码过程还是不是很熟悉所以回头把这个分析一遍。 海思平台&#xff1a; 官方手册&#xff1a;HiMPP IPC V2.0 媒体处理软件开发参考&#xff0c;里面有介绍海思IPC平台的…

polyfit曲线拟合

一、简介 polyfit函数是matlab中用于进行曲线拟合的一个函数。其数学基础是最小二乘法曲线拟合原理。曲线拟合&#xff1a;已知离散点上的数据集&#xff0c;即已知在点集上的函数值&#xff0c;构造一个解析函数&#xff08;其图形为一曲线&#xff09;使在原离散点上尽可能接…

深度学习 —— 个人学习笔记10(池化层、LeNet)

声明 本文章为个人学习使用&#xff0c;版面观感若有不适请谅解&#xff0c;文中知识仅代表个人观点&#xff0c;若出现错误&#xff0c;欢迎各位批评指正。 二十一、池化层 1、 最大池化层和平均池化层 与互相关运算符一样&#xff0c;汇聚窗口从输入张量的左上角开始&#…

打靶记录6——靶机EvilBox---One

靶机下载地址 https://www.vulnhub.com/entry/evilbox-one,736/学习记录 在进行目录爆破和文件爆破的过程当中&#xff0c;如果有发现新的路径&#xff0c;一定要对新的路径再次进行更深层次的爆破虚拟机出现问题就删除掉&#xff0c;重新导入虚拟机 目标: 获取两个flag&am…

如何准备专利申请书的摘要部分?

如何准备专利申请书的摘要部分&#xff1f;

基于概率神经网络的异方差不确定性估计

目录 摘要1 介绍2 预热3 分析3.1对称性和特征非线性3.2逆方差加权有效欠样本 4 方法5 实验5.1合成数据集5.2真实数据集6 结论 摘要 捕获任意不确定性是许多机器学习系统的关键部分。在深度学习中&#xff0c;达到这一目的的一种常用方法是训练神经网络&#xff0c;通过最大化观…

力扣SQL50 组合两个表 入门基础连表查询

Problem: 175. 组合两个表 select FirstName, LastName, City, State from Person left join Address on Person.PersonId Address.PersonId ;

AI说 | 如何入门AI行业,成为人工智能产品经理?(上)

这周在上海出差&#xff0c;划个水&#xff0c;发一篇之前写的文章&#xff0c;谈谈如何入门AI行业 另外&#xff0c;有朋友说我的文章读起来很累&#xff0c;自我反思&#xff0c;确实写的太长&#xff0c;后面我会在保证有趣或有干货的情况下&#xff0c;将文章内容尽量减短…

《深入浅出WPF》学习笔记四.提高效率,code snippets的使用

《深入浅出WPF》学习笔记四.提高效率,code snippets的使用 背景 再跟着视频教程学习Wpf的过程中,发现这个小技巧。很惭愧好几年开发经验&#xff0c;没用过这个东西。 这个信息差还是很让人头疼的&#xff0c;特别在此分享。 code snippets是什么 Code Snippets是插入代码…

Elasticsearch 未授权访问漏洞

Elasticsearch 未授权访问漏洞 ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎&#xff0c;基于RESTful web接口。Elasticsearch是用Java开发的&#xff0c;并作为Apache许可条款下的开放源码发布&#xff0c;是当前流行的企业级搜索…

zabbix监控中文乱码解决方案

zabbix切换中文后&#xff0c;会出现乱码情况&#xff0c;如下图&#xff1a; 解决方案如下&#xff1a; 1、找到字体 WinR打开运行&#xff0c;输入fonts&#xff0c;回车进入Windows字体目录&#xff0c;找到微软雅黑-常规字体&#xff0c;复制出来将文件名修改为msyh.ttf…

Substance Painter工具栏及快捷键

3 菜单栏_哔哩哔哩_bilibili ctrl右键左右滑动调整笔刷大小/左键流量 上下滑动有其他作用 线框显示工具 制作随机效果 Fill要配合遮罩使用 白色遮罩显示底色&#xff0c;黑色遮罩不显示底色 核心工具 图层关系 必须添加在蒙版的效果下 选择中蒙版 滤镜仅能添加在图层下 id图…