首页 > 其他分享 >Modbus串口 未完成

Modbus串口 未完成

时间:2023-11-13 23:24:45浏览次数:37  
标签:void QModbusDevice Modbus ui 完成 串口 reply rtuMaster MainWindow

111205

 

 

 

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QModbusRtuSerialMaster>
#include <QSerialPort>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private slots:
    void on_pushButton_clicked();
    void replyFinished();

    void on_pushButton_2_clicked();

private:
    Ui::MainWindow *ui;
    QModbusRtuSerialMaster *rtuMaster;
};


#endif // MAINWINDOW_H

 

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    rtuMaster=new QModbusRtuSerialMaster(this);
    rtuMaster->setConnectionParameter(QModbusDevice::SerialPortNameParameter,"COM3");
    rtuMaster->setConnectionParameter(QModbusDevice::SerialBaudRateParameter,9600);
    rtuMaster->setConnectionParameter(QModbusDevice::SerialParityParameter,QSerialPort::EvenParity);
    rtuMaster->setConnectionParameter(QModbusDevice::SerialDataBitsParameter,QSerialPort::Data8);
    rtuMaster->setConnectionParameter(QModbusDevice::SerialStopBitsParameter,QSerialPort::OneStop);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_pushButton_clicked()
{
    QModbusDataUnit unit(QModbusDataUnit::HoldingRegisters,ui->lineEdit_2->text().toInt(),2);
    QModbusReply *reply=rtuMaster->sendReadRequest(unit,1);
    if(reply&&!reply->isFinished())
    {
        connect(reply,QModbusReply::finished,this,MainWindow::replyFinished);
    }
}



void MainWindow::on_pushButton_2_clicked()
{
    if(rtuMaster->state()!=QModbusRtuSerialMaster::ConnectedState)
    {
        rtuMaster->connectDevice();
    }

    QVector<quint16> data;
    data<<5<<24;
    QModbusDataUnit uint(QModbusDataUnit::HoldingRegisters,ui->lineEdit_2->text().toInt(),data);
    rtuMaster->sendWriteRequest(uint,1);
}


void MainWindow::replyFinished()
{
    QModbusReply *reply=qobject_cast<QModbusReply *>(sender());
    if(reply)
    {
        QModbusDataUnit uint=reply->result();
        reply->deleteLater();
        ui->lineEdit->setText(QString::number(uint.value(0)));
    }
}

 

标签:void,QModbusDevice,Modbus,ui,完成,串口,reply,rtuMaster,MainWindow
From: https://www.cnblogs.com/dq0618/p/17830572.html

相关文章

  • 在created等虚拟DOM没有完成挂载的钩子函数中,避免操作DOM报错可以把操作语句放在$next
    在created等虚拟DOM没有完成挂载的钩子函数中,避免操作DOM报错可以把操作语句放在$nextTick的回调函数中在组件内使用vm.$nextTick()实例方法特别方便,因为它不需要全局Vue,并且回调函数中的this将自动绑定到当前的Vue实例上需要使用$nextTick()原因是Vue是异步渲染$nextTick()返......
  • 编程最佳外挂:批量数据分析与可视化,CodeGeeX工具箱一键完成
    ChatGLM3代模型的CodeInterpreter能力,本周已经在VSCode里的CodeGeeX插件产品中,以开发者工具箱的产品形态上线。下图以VSCode插件为例:在CodeGeeX的侧边栏,和智能问答AskCodeGeeX并列出现的工具箱标签,用户登录后就可以直接打开使用。CodeInterpreter曾被称为ChatGPT最强外挂。现......
  • 如何使用React/JSX在样式加载完成之前等待React的加载?
    在React中,可以使用加载状态来等待样式加载完成之后再渲染React组件。以下是一种常见的方法:创建一个加载状态isLoading并将其初始化为true。在componentDidMount生命周期方法中使用setTimeout函数来模拟样式加载的延迟。在延迟结束后,将isLoading状态设置为false。在渲染方法中,使用条......
  • 在工作站计算机配置等待设备安装任务完成的秒数为 300 秒
    一、打开本地组策略WIN+R二、步骤打开计算机配置\管理模板\系统\设备安装配置设备安装超时 三、操作启用......
  • 使用element-UI完成展示个人信息的组件
    <template><el-descriptionsclass="margin-top"title="":column="3":size="size"border><templateslot="extra"><el-buttontype="primary"size="small"&......
  • UART串口介绍和演示
    UART(通用异步收发器)是一种广泛用于串口通信的协议,它在嵌入式系统中起着重要的作用。本文将介绍UART串口的基本原理,并通过代码演示如何在嵌入式系统中使用UART进行通信。UART串口概述UART串口是一种异步通信协议,它使用两个引脚进行数据传输:一个用于发送(TX-Transmit)和一个用于接收(R......
  • x = x 相当于 let x = x ;使用let声明变量时,只要变量在还没有声明完成前使用,就会报错
    针对以下f函数分别执行f(2)和f()会有怎样的结果?f=(x=x)=>x;A2、undefinedB报错、报错C2、报错Dundefined、undefined正确答案:C在(x=x)=>x中的三个x都是指向相同的变量,并且当函数在尝试给x赋值时会访问第2个x,如果是f()则此时由于变量x是未赋值的,因此它就如同let变......
  • Arduino UNO使用DHT11温湿度传感器通过串口向PC发送温湿度信息​
    ArduinoUNO使用DHT11温湿度传感器通过串口向PC发送温湿度信息硬件介绍笔者使用的开发板为ArduinoUNO国产兼容板,淘宝上大约卖20rmb左右。如下图DHT11传感器为四脚封装样式,从正面看引脚从左往右依次为1、2、3、4引脚,其中1引脚为VCC3~5V,2引脚为通信引脚要与单片机引脚相连,3引脚是个......
  • vue完成记事本小功能(没有css样式)
    app.vue<template><divclass=""><SchuRuKuang@Add="handleAdd"></SchuRuKuang><LieBiaoZhanShi:list="list"@delOne="handledelOne"></LieBiaoZhanShi><TongjiQingKo......
  • 《Modbus学习套件测试程序》开发过程讲解
    1.项目创建  vs2022  .NETFramework4.5/4.6/4.7/4.72/4.8  .NETCore3.x  .NET5/6/7  <Windowx:Class="ModbusTest.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="ht......