|
- #ifndef MODBUSWORKER_H
- #define MODBUSWORKER_H
-
- #include <QObject>
- #include <QTimer>
- #include <QModbusRtuSerialMaster>
- #include <QSerialPort>
- #include "registermanager.h"
-
- class ModbusWorker : public QObject
- {
- Q_OBJECT
- public:
- explicit ModbusWorker(RegisterManager* regManager, QObject *parent = nullptr);
- ~ModbusWorker();
-
- public slots:
- // void startSimulation(int interval = 500);
- // void stopSimulation();
- void writeRegister(const QString& registerId, quint16 value);
- bool connectToDevice(const QString& portName,
- QSerialPort::BaudRate baudRate,
- QSerialPort::DataBits dataBits,
- QSerialPort::Parity parity,
- QSerialPort::StopBits stopBits);
- void disconnectDevice();
- void initModbusDevice();
-
- private slots:
- void readRegisters();
- void processModbusReply();
- void readRegisterGroup(QModbusDataUnit::RegisterType type, const QList<int> &addresses);
- void readAddressRange(QModbusDataUnit::RegisterType type, int startAddr, int count);
-
- signals:
- void connectionStatusChanged(bool connected);
- void errorOccurred(const QString& error);
- void registerValueUpdated(const QString& registerId, quint16 value);
-
- private:
- QModbusRtuSerialMaster *modbusDevice = nullptr;
- RegisterManager* registerManager;
- int slaveAddress = 1;
- QMap<QModbusReply*, QString> pendingRequests;
- };
-
- #endif // MODBUSWORKER_H
|