|
- #ifndef MODBUSMANAGER_H
- #define MODBUSMANAGER_H
-
- #include <QObject>
- #include <QModbusRtuSerialMaster>
- #include <QSerialPort>
- #include <QTimer>
- #include <QMap>
- #include "registermanager.h"
-
- class ModbusManager : public QObject
- {
- Q_OBJECT
- public:
- explicit ModbusManager(RegisterManager* regManager, QObject *parent = nullptr);
- ~ModbusManager();
-
- // 串口连接管理
- bool connectToDevice(const QString& portName,
- QSerialPort::BaudRate baudRate = QSerialPort::Baud9600,
- QSerialPort::DataBits dataBits = QSerialPort::Data8,
- QSerialPort::Parity parity = QSerialPort::NoParity,
- QSerialPort::StopBits stopBits = QSerialPort::OneStop);
-
- void disconnectDevice();
-
- // 仿真控制
- void startSimulation(int interval = 500); // 毫秒
- void stopSimulation();
-
- // 寄存器读写
- void writeRegister(const QString& registerId, quint16 value);
-
- // 设置从站地址
- void setSlaveAddress(int address) { slaveAddress = address; }
-
- signals:
- void connectionStatusChanged(bool connected);
- void errorOccurred(const QString& error);
-
- private slots:
- void readRegisters();
- void processModbusReply();
-
- private:
- QModbusRtuSerialMaster *modbusDevice;
- RegisterManager* registerManager;
- QTimer* pollTimer;
- int slaveAddress = 1; // 默认从站地址
- QMap<QModbusReply*, QString> pendingRequests;
-
- void readRegisterGroup(QModbusDataUnit::RegisterType type, int startAddr, int count);
- };
-
- #endif // MODBUSMANAGER_H
|