|
- #ifndef MODBUSSIMULATOR_H
- #define MODBUSSIMULATOR_H
-
- #include <QObject>
- #include <QModbusRtuSerialMaster>
- #include <QTimer>
- #include <QSet>
- #include <QMutex> // 新增:互斥锁头文件
- class ModbusSimulator : public QObject
- {
- Q_OBJECT
-
- public:
- explicit ModbusSimulator(QObject *parent = nullptr);
- ~ModbusSimulator();
-
- void startSimulation();
- void stopSimulation();
- bool isRunning() const;
-
- void setCoilAddresses(const QSet<int> &addresses);
- void writeCoil(int address, bool state);
-
- signals:
- void coilStatusRead(int address, bool state);
- void errorOccurred(const QString &message);
-
- private slots:
- void readCoils();
-
- private:
- QModbusRtuSerialMaster *m_modbusClient;
- QTimer *m_readTimer;
- QSet<int> m_coilAddresses;
- bool m_running;
- QMutex m_mutex; // 新增:保护m_coilAddresses的互斥锁
- };
-
- #endif // MODBUSSIMULATOR_H
|