Browse Source

将Modbus对象改为创建在Mainwindow中

master
鹏鹏 李 17 hours ago
parent
commit
84fb792ffc
7 changed files with 51 additions and 53 deletions
  1. +1
    -1
      editor.pro.user
  2. +20
    -1
      mainwindow.cpp
  3. +4
    -0
      mainwindow.h
  4. +18
    -0
      mainwindow.ui
  5. +6
    -18
      plc.cpp
  6. +2
    -7
      plc.h
  7. +0
    -26
      plc.ui

+ 1
- 1
editor.pro.user View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 4.11.1, 2025-08-08T13:01:33. -->
<!-- Written by QtCreator 4.11.1, 2025-08-09T09:34:13. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>


+ 20
- 1
mainwindow.cpp View File

@@ -19,8 +19,10 @@ MainWindow::MainWindow(QWidget *parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
plc_ = new PLC(ui->widget);
registerManager = new RegisterManager(this);
plc_ = new PLC(registerManager, ui->widget);
hmi_ = new HMI(ui->widget);
modbusManager = new ModbusManager(registerManager, this);
plc_->show();
hmi_->hide();
connect(ui->action_plc,&QAction::triggered,this,&MainWindow::plcChange);
@@ -29,6 +31,11 @@ MainWindow::MainWindow(QWidget *parent)
connect(ui->action_new, &QAction::triggered, this, &MainWindow::newProject);
connect(ui->action_save, &QAction::triggered, this, &MainWindow::saveProject);
connect(ui->action_open, &QAction::triggered, this, &MainWindow::openProject);
connect(ui->action_connect, &QAction::triggered, this, &MainWindow::connection);
connect(ui->action_disconnect, &QAction::triggered, this, &MainWindow::disconnection);

connect(modbusManager, &ModbusManager::connectionStatusChanged,
plc_, &PLC::updateConnectionStatus);


plc_->applyProjectToScene(plcProject_); // 初始空
@@ -133,3 +140,15 @@ void MainWindow::saveProject()
}
}
}

void MainWindow::connection()
{
modbusManager->connectToDevice("COM1",QSerialPort::BaudRate(9600),QSerialPort::DataBits(8),QSerialPort::EvenParity,QSerialPort::StopBits(1));
modbusManager->startSimulation(2000);
}

void MainWindow::disconnection()
{
modbusManager->disconnectDevice();
modbusManager->stopSimulation();
}

+ 4
- 0
mainwindow.h View File

@@ -26,11 +26,15 @@ private slots:
void newProject();
void openProject();
void saveProject();
void connection();
void disconnection();

private:
Ui::MainWindow *ui;
RegisterManager* registerManager;
PLC *plc_;
HMI *hmi_;
ModbusManager* modbusManager;
Project plcProject_;
Project hmiProject_;
QString plcFilePath_;


+ 18
- 0
mainwindow.ui View File

@@ -49,8 +49,16 @@
<addaction name="action_plc"/>
<addaction name="action_hmi"/>
</widget>
<widget class="QMenu" name="menu_3">
<property name="title">
<string>仿真</string>
</property>
<addaction name="action_connect"/>
<addaction name="action_disconnect"/>
</widget>
<addaction name="menu"/>
<addaction name="menu_2"/>
<addaction name="menu_3"/>
</widget>
<widget class="QStatusBar" name="statusbar"/>
<action name="action_new">
@@ -78,6 +86,16 @@
<string>HMI</string>
</property>
</action>
<action name="action_connect">
<property name="text">
<string>connect</string>
</property>
</action>
<action name="action_disconnect">
<property name="text">
<string>disconnect</string>
</property>
</action>
</widget>
<resources/>
<connections/>


+ 6
- 18
plc.cpp View File

@@ -12,13 +12,13 @@
#include <QMessageBox>
#include "creatitem.h"

PLC::PLC(QWidget *parent) :
PLC::PLC(RegisterManager *regManager, QWidget *parent) :
QWidget(parent),
ui(new Ui::PLC)
ui(new Ui::PLC),
registerManager(regManager)
{
ui->setupUi(this);
registerManager = new RegisterManager(this);
modbusManager = new ModbusManager(registerManager, this);
// modbusManager = new ModbusManager(registerManager, this);
/* 1. 场景 */
plc_scene_ = new QGraphicsScene(this);
ui->graphicsView->setScene(plc_scene_);
@@ -35,8 +35,8 @@ PLC::PLC(QWidget *parent) :
createComponents();
connect(ui->listWidget,&QListWidget::currentTextChanged,this,&PLC::onListwidgetCurrenttextchanged);
connect(ui->btn_insert,&QPushButton::clicked,this,&PLC::btnInsertClicked);
connect(modbusManager, &ModbusManager::connectionStatusChanged,
this, &PLC::updateConnectionStatus);
// connect(modbusManager, &ModbusManager::connectionStatusChanged,
// this, &PLC::updateConnectionStatus);
// connect(modbusManager, &ModbusManager::errorOccurred,
// this, &PLC::handleModbusError);
connect(ui->graphicsView, &MyGraphicsView::itemBoundToRegister,
@@ -235,26 +235,14 @@ void PLC::btnInsertClicked()
ui->graphicsView->scene()->addItem(c2);
}

void PLC::on_pushButton_clicked()
{
modbusManager->connectToDevice("COM1",QSerialPort::BaudRate(9600),QSerialPort::DataBits(8),QSerialPort::EvenParity,QSerialPort::StopBits(1));
}

void PLC::on_pushButton_2_clicked()
{
modbusManager->disconnectDevice();
}

void PLC::updateConnectionStatus(bool connection)
{
if (connection)
{
ui->textEdit->append("连接");
modbusManager->startSimulation(2000);
}
else
{
ui->textEdit->append("断开");
modbusManager->stopSimulation();
}
}

+ 2
- 7
plc.h View File

@@ -15,7 +15,7 @@ class PLC : public QWidget
Q_OBJECT

public:
explicit PLC(QWidget *parent = nullptr);
explicit PLC(RegisterManager* regManager, QWidget *parent = nullptr);
~PLC();
void createComponents();

@@ -26,20 +26,15 @@ public:
protected:
bool eventFilter(QObject *obj, QEvent *event) override;

private slots:
public slots:
void onListwidgetCurrenttextchanged(const QString &currentText);
void btnInsertClicked();

void on_pushButton_clicked();

void on_pushButton_2_clicked();

void updateConnectionStatus(bool connection);

private:
Ui::PLC *ui;
QGraphicsScene *plc_scene_;
ModbusManager* modbusManager;
RegisterManager* registerManager;
QString selectedComponentType;
};


+ 0
- 26
plc.ui View File

@@ -59,32 +59,6 @@
</rect>
</property>
</widget>
<widget class="QPushButton" name="pushButton">
<property name="geometry">
<rect>
<x>120</x>
<y>0</y>
<width>93</width>
<height>28</height>
</rect>
</property>
<property name="text">
<string>连接</string>
</property>
</widget>
<widget class="QPushButton" name="pushButton_2">
<property name="geometry">
<rect>
<x>230</x>
<y>0</y>
<width>93</width>
<height>28</height>
</rect>
</property>
<property name="text">
<string>断开</string>
</property>
</widget>
</widget>
<customwidgets>
<customwidget>


Loading…
Cancel
Save