Files
mbIoUniversal/Inc/mainwindow.h
2025-07-04 15:03:55 +07:00

76 lines
1.9 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 final : 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 final : 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 readRegisters();
void loadConfiguration();
void updateStatusBar() const; // Добавлен const
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
QVector<int> m_buttonBits; // Add this new member for button bits
QVector<QString> m_buttonLabels;
QModbusTcpClient* m_modbusClient;
QPushButton* m_connectButton{};
bool m_connected;
int m_responseTimeout{};
int m_connectTimeout{};
int m_pollInterval{};
QTimer* m_pollTimer{};
QLabel* m_statusLabel{};
int m_requestCounter;
int m_responseCounter;
bool m_disconnectRequested{false};
};
#endif // MAINWINDOW_H