#ifndef UNION_MODBUS_H #define UNION_MODBUS_H #include "QTimer" #include #include #include "writeregistermodel.h" #include #include #if QT_CONFIG(modbus_serialport) #include #endif class QModbusClient; class QModbusReply; namespace Ui { class union_modbus; } class union_modbus : public QWidget { Q_OBJECT public: explicit union_modbus(QWidget *parent = nullptr); ~union_modbus(); struct Settings { #if QT_CONFIG(modbus_serialport) int parity = QSerialPort::NoParity; int baud = QSerialPort::Baud115200; int dataBits = QSerialPort::Data8; int stopBits = QSerialPort::OneStop; #endif int responseTime = 1000; int numberOfRetries = 3; }; public slots: void onReadButtonClicked(); void readModbus(); private slots: void onConnectButtonClicked(); void onModbusStateChanged(int state); void onReadReady(); void onWriteButtonClicked(); void onReadWriteButtonClicked(); void onConnectTypeChanged(int); void onWriteTableChanged(int); void on_checkPeriodRequest_stateChanged(int arg1); private: bool CurrentReadButtonPosition = true; void initActions(); void statusBarClear(); void ApplySettings(); QTimer RequestPeriodTimer; QTimer statusBarTimeOut; Settings m_settings; QModbusDataUnit readRequest() const; QModbusDataUnit writeRequest() const; WriteRegisterModel *writeModel = nullptr; QModbusReply *lastRequest = nullptr; QModbusClient *modbusDevice = nullptr; Ui::union_modbus *ui; }; #endif // UNION_MODBUS_H