diff --git a/editor.pro.user b/editor.pro.user index 916a4d0..3a14858 100644 --- a/editor.pro.user +++ b/editor.pro.user @@ -1,6 +1,6 @@ - + EnvironmentId diff --git a/mainwindow.cpp b/mainwindow.cpp index 290aaa1..8d38fa6 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -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(); +} diff --git a/mainwindow.h b/mainwindow.h index e46b3b7..b54ff0a 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -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_; diff --git a/mainwindow.ui b/mainwindow.ui index 73fda7d..300e9d9 100644 --- a/mainwindow.ui +++ b/mainwindow.ui @@ -49,8 +49,16 @@ + + + 仿真 + + + + + @@ -78,6 +86,16 @@ HMI + + + connect + + + + + disconnect + + diff --git a/plc.cpp b/plc.cpp index b8e05ed..68c37cf 100644 --- a/plc.cpp +++ b/plc.cpp @@ -12,13 +12,13 @@ #include #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(); } } diff --git a/plc.h b/plc.h index 99c7f7e..04e4fc7 100644 --- a/plc.h +++ b/plc.h @@ -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 ¤tText); 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; }; diff --git a/plc.ui b/plc.ui index c595c9f..b7189f9 100644 --- a/plc.ui +++ b/plc.ui @@ -59,32 +59,6 @@ - - - - 120 - 0 - 93 - 28 - - - - 连接 - - - - - - 230 - 0 - 93 - 28 - - - - 断开 - -