UnionComDLL/union_modbus.h

81 lines
1.6 KiB
C++

#ifndef UNION_MODBUS_H
#define UNION_MODBUS_H
#include "QTimer"
#include <QWidget>
#include <QtSerialBus/QModbusDataUnit>
#include "writeregistermodel.h"
#include <QtSerialBus/qtserialbusglobal.h>
#include <QDialog>
#if QT_CONFIG(modbus_serialport)
#include <QSerialPort>
#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