emsApplication/applications/EmsShower/mainwindow.h

113 lines
2.4 KiB
C
Raw Normal View History

2025-03-04 11:27:16 +08:00
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QSettings>
#include "libmodbus/modbus.h"
#include "slave_define.h"
QT_BEGIN_NAMESPACE
namespace Ui
{
class MainWindow;
}
QT_END_NAMESPACE
typedef enum _tagModbusMode : int
{
modeRtu = 0,
modeTcp = 1,
} ModbusMode;
//这是解码类,针对协议进行解码
class DecodeWorker : public QObject
{
Q_OBJECT
public:
DecodeWorker(QObject* parent = nullptr) : QObject(parent) {}
void setParameters(const QVector<uint16_t>& array, int slave_id, int start_addr, int quantity, DeviceData* pDevice)
{
this->array = array;
this->slave_id = slave_id;
this->start_addr = start_addr;
this->quantity = quantity;
this->pDevice = pDevice;
}
private:
QVector<uint16_t> array;
int slave_id;
int start_addr;
int quantity;
DeviceData* pDevice;
signals:
// 处理进度信号
void progress(int index);
// 完成处理信号
void finished();
public slots:
// 处理数组的槽函数
// 根据从机id、开始地址、寄存器数量三个变量进行辨别和解码处理
void processArray(const QVector<uint16_t>& array,int slave_id,int start_addr,int quantity,DeviceData* pData);
};
//处理主界面
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
protected:
void getConfiguration(QString iniFilePath);
bool InitializeUI();
bool InitializeModbus();
bool InitializeRtu();
bool InitializeTcp();
bool readRegister(int addr,int nb,uint16_t* dest);
private:
Ui::MainWindow *ui;
protected:
modbus_t *m_pModbus;
SlaveData m_SlaveData;
protected:
QString m_version;
int m_modbus_type;
QString m_modbus_ip;
int m_modbus_port;
QString m_modbus_com;
int m_modbus_baund;
int m_modbus_data;
int m_modbus_parity;
int m_modbus_stop;
int m_modbus_slave_id;
QSettings* m_pSettings;
protected:
//异步处理数据
void startAsyncProcess(const QVector<uint16_t>& array,int slave_id,int start_addr,int quantity,DeviceData* pData);
private slots:
void on_btn_read_register_clicked();
signals:
// 处理进度信号
void progress(int index);
// 完成处理信号
void finished();
signals:
void startProcessing(const QVector<uint16_t>& array, int slave_id, int start_addr, int quantity, DeviceData* pData);
};
#endif // MAINWINDOW_H