Qt多线程中定时读取Modbus服务器寄存器以及读写,另⼀个线程点击刷新系统
时间
代码链接:
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);timeout on t2 timer
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

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。