81 lines
1.6 KiB
C++
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
|