@@ -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> | |||
@@ -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(); | |||
} |
@@ -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_; | |||
@@ -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/> | |||
@@ -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(); | |||
} | |||
} |
@@ -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; | |||
}; | |||
@@ -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> | |||