Files
mbIoUniversal/Inc/mainwindow.h
2025-07-04 02:09:52 +07:00

70 lines
1.6 KiB
C++

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QWidget>
#include <QComboBox>
#include <QDoubleSpinBox>
#include <QPushButton>
#include <QLabel>
#include <QMutex>
#include <QTableWidget>
#include <QSettings>
#include <QVector>
#include <QModbusTcpClient>
#include <QModbusDataUnit>
#include <QTimer>
class ColoredSquare : public QWidget {
Q_OBJECT
public:
explicit ColoredSquare(QWidget *parent = nullptr);
void setColor(const QColor& color);
protected:
void paintEvent(QPaintEvent *event) override;
private:
QColor m_color;
};
class Mainwindows : public QWidget {
Q_OBJECT
public:
explicit Mainwindows(QWidget *parent = nullptr);
~Mainwindows() override;
private slots:
void onStateChanged(QModbusDevice::State state);
void onConnectButtonClicked();
void onReadReady();
void onPollTimer();
private:
void createUIElements();
void initModbusConnection();
void writeRegister(int index);
void readRegisters();
void loadConfiguration();
QTableWidget* m_table;
QString m_ipAddress;
int m_port;
QVector<int> m_buttonRegisters;
QVector<int> m_indicatorRegisters;
int m_buttonCount;
int m_indicatorCount;
QVector<QPushButton*> m_buttons;
QVector<ColoredSquare*> m_squares;
QVector<int> m_colorIndices;
QVector<int> m_buttonValues; // Add this new member to store button states
QModbusTcpClient* m_modbusClient;
QPushButton* m_connectButton;
bool m_connected;
int m_responseTimeout;
int m_connectTimeout;
int m_pollInterval;
QTimer* m_pollTimer;
};
#endif // MAINWINDOW_H