2025-03-04 11:27:16 +08:00
|
|
|
#ifndef MAINWINDOW_H
|
|
|
|
#define MAINWINDOW_H
|
|
|
|
|
|
|
|
#include <QMainWindow>
|
|
|
|
#include <QSettings>
|
2025-03-04 17:19:03 +08:00
|
|
|
#include <QVector>
|
|
|
|
#include <QLabel>
|
2025-03-07 16:16:57 +08:00
|
|
|
#include <QTimer>
|
2025-03-04 11:27:16 +08:00
|
|
|
|
|
|
|
#include "libmodbus/modbus.h"
|
|
|
|
#include "slave_define.h"
|
|
|
|
|
2025-03-07 16:16:57 +08:00
|
|
|
#include "openjson.h"
|
|
|
|
|
|
|
|
class CustomDisplayPanel;
|
|
|
|
|
2025-03-04 11:27:16 +08:00
|
|
|
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) {}
|
2025-03-04 17:19:03 +08:00
|
|
|
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;
|
|
|
|
}
|
2025-03-04 11:27:16 +08:00
|
|
|
|
|
|
|
private:
|
2025-03-04 17:19:03 +08:00
|
|
|
QVector<uint16_t> array;
|
|
|
|
int slave_id;
|
|
|
|
int start_addr;
|
|
|
|
int quantity;
|
2025-03-04 11:27:16 +08:00
|
|
|
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;
|
2025-03-07 16:16:57 +08:00
|
|
|
QTimer *m_pTimer;
|
2025-03-04 11:27:16 +08:00
|
|
|
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;
|
2025-03-07 16:16:57 +08:00
|
|
|
bool m_bInitializeModbus;
|
2025-03-04 11:27:16 +08:00
|
|
|
|
|
|
|
protected:
|
|
|
|
//异步处理数据
|
|
|
|
void startAsyncProcess(const QVector<uint16_t>& array,int slave_id,int start_addr,int quantity,DeviceData* pData);
|
|
|
|
|
|
|
|
private slots:
|
2025-03-04 17:19:03 +08:00
|
|
|
void ReadSerialPortData();
|
2025-03-05 13:37:23 +08:00
|
|
|
void SettingSerialPort();
|
2025-03-07 16:16:57 +08:00
|
|
|
void onTimeout();
|
|
|
|
|
|
|
|
private:
|
|
|
|
CustomDisplayPanel* m_pTemperaturePanel; //温湿度显示
|
|
|
|
CustomDisplayPanel* m_pBatteryPanel; //电池显示
|
|
|
|
CustomDisplayPanel* m_pPowerPanel; //电源显示
|
|
|
|
CustomDisplayPanel* m_pACPanel; //空调显示
|
|
|
|
CustomDisplayPanel* m_pHomePanel; //主柜子信息
|
|
|
|
CustomDisplayPanel* m_pAlarmPanel; //告警
|
|
|
|
CustomDisplayPanel* m_pInverterPanel; //逆变器
|
|
|
|
CustomDisplayPanel* m_pPVPanel; //太阳能
|
|
|
|
|
|
|
|
private:
|
|
|
|
bool CreateJson(DeviceData* pData,OpenJson& json);
|
2025-03-04 11:27:16 +08:00
|
|
|
|
|
|
|
signals:
|
|
|
|
// 处理进度信号
|
|
|
|
void progress(int index);
|
|
|
|
// 完成处理信号
|
|
|
|
void finished();
|
|
|
|
|
|
|
|
signals:
|
2025-03-04 17:19:03 +08:00
|
|
|
void startProcessing(const QVector<uint16_t>& array, int slave_id, int start_addr, int quantity, DeviceData* pData);
|
2025-03-04 11:27:16 +08:00
|
|
|
};
|
|
|
|
#endif // MAINWINDOW_H
|