#ifndef MAINWINDOW_H #define MAINWINDOW_H #include #include #include #include #include #include "libmodbus/modbus.h" #include "slave_define.h" #include "openjson.h" class CustomDisplayPanel; QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACE typedef enum _tagModbusMode : int { modeRtu = 0, modeTcp = 1, } ModbusMode; //处理主界面 class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = nullptr); ~MainWindow(); protected: void getConfiguration(QString iniFilePath); void ReadConfiguration(QString jsonFilePath); bool InitializeUI(); bool InitializeModbus(); bool InitializeRtu(); bool InitializeTcp(); bool readRegister(); private: Ui::MainWindow *ui; protected: modbus_t *m_pModbus; SlaveData m_SlaveData; QTimer *m_pTimer; 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; bool m_bInitializeModbus; int m_timer_interval; SlaveItems m_total_slave_items; protected: private slots: void ReadSerialPortData(); void SettingSerialPort(); 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; //太阳能 std::map m_Panels; private: bool CreateJson2(DeviceData* pData,OpenJson& json); void DecodeSync(const QVector& array,const slaveAddress& sa,DeviceData* pData); //同步解码 signals: // 处理进度信号 void progress(int index); // 完成处理信号 void finished(); signals: void startProcessing(const QVector& array, int slave_id, int start_addr, int quantity, DeviceData* pData); void startProcessing2(const QVector& array,const slaveAddress& sa,DeviceData* pData); }; #endif // MAINWINDOW_H