代码链接:
https://download.csdn.net/download/dfy1407/16692818
ui界面
程序结构图
global.h
#ifndef GLOBAL_H
#define GLOBAL_H
#include <QString>
class global
{
public:
global();
static QString ComPortName;
static QString Tor;
};
#endif // GLOBAL_H
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include "plctimerthread.h"
#include "plcthread.h"
#include <QTimer>
#include <QTime>
#include <QDebug>
#include <QString>
#include <QThread>
#include <QDebug>
#include "global.h"
#include <QModbusDataUnit>
#include <QModbusRtuSerialMaster>
#include <QModbusClient>
#include <QModbusReply>
#include <QSerialPort>
#include <QSerialPortInfo>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
Ui::MainWindow *ui;
QThread *thread;
PlcTimerThread *plcThread;
QThread *qthreadPlc;
PlcThread *plc;
signals:
void sendSpinbox(int);
void writeTor(QString);
private slots:
void on_pushButton_clicked();
void on_pushButton_2_clicked();
void on_pushButton_3_clicked();
void on_pushButton_4_clicked();
void showTime(QString);
void on_spinBox_valueChanged();
void on_connectModbus_clicked();
void on_searchPort_clicked();
void on_writeT_clicked();
void on_statusBar(const QString&);
void on_change2Discon();
void on_change2Con();
void on_updateT(QString);
void on_updateS(QString);
};
#endif // MAINWINDOW_H
plcthread.h
#ifndef PLCTHREAD_H
#define PLCTHREAD_H
#include <QObject>
#include <QModbusDataUnit>
#include <QModbusRtuSerialMaster>
#include <QModbusClient>
#include <QModbusReply>
#include <QSerialPort>
#include <QSerialPortInfo>
#include "global.h"
#include <QString>
#include <QDebug>
#include <QThread>
#include <QTimer>
class PlcThread : public QObject
{
Q_OBJECT
public:
explicit PlcThread(QObject *parent = nullptr);
~PlcThread();
void doWork();
void connectPlc();
void readPlc();
void torqReadReady();
void spdReadReady();
void on_writeTor(QString);
signals:
void startWork();
void finishWork();
void statusBar(const QString&);
void change2Discon();
void change2Con();
void updateT(QString);
void updateS(QString);
public slots:
private:
QModbusClient *modbusDevice;
QTimer *dataTimer;
uchar T[4];
uchar S[4];
};
#endif // PLCTHREAD_H
plctimerthread.h
#ifndef PLCTIMERTHREAD_H
#define PLCTIMERTHREAD_H
#include <QObject>
#include <QTimer>
#include <QDebug>
#include <QTime>
#include <QString>
#include "ui_mainwindow.h"
#include <QMainWindow>
#include <QModbusDataUnit>
#include <QModbusRtuSerialMaster>
#include <QModbusClient>
#include <QModbusReply>
#include <QSerialPort>
#include <QSerialPortInfo>
class PlcTimerThread : public QObject
{
Q_OBJECT
public:
explicit PlcTimerThread(QObject *parent = nullptr);
~PlcTimerThread();
public:
void run();
void dowork();
void printSpinBox(int);
signals:
void workStart();
void workFinished();
void upDateTime(QString);
private:
QTimer *timer;
QString str_time;
int spinbox;
public slots:
};
#endif // PLCTIMERTHREAD_H
global.cpp
#include "global.h"
QString global::ComPortName;
QString global::Tor;
global::global()
{