25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

51 lines
1.3 KiB

  1. #ifndef MODBUSMANAGER_H
  2. #define MODBUSMANAGER_H
  3. #include <QObject>
  4. #include "modbusworker.h"
  5. class RegisterManager;
  6. class QThread;
  7. class ModbusManager : public QObject
  8. {
  9. Q_OBJECT
  10. public:
  11. explicit ModbusManager(RegisterManager* regManager, QObject *parent = nullptr);
  12. ~ModbusManager();
  13. // 串口连接管理
  14. void connectToDevice(const QString& portName,
  15. QSerialPort::BaudRate baudRate = QSerialPort::Baud9600,
  16. QSerialPort::DataBits dataBits = QSerialPort::Data8,
  17. QSerialPort::Parity parity = QSerialPort::NoParity,
  18. QSerialPort::StopBits stopBits = QSerialPort::OneStop);
  19. void disconnectDevice();
  20. // 仿真控制
  21. void startSimulation(int interval = 500); // 毫秒
  22. void stopSimulation();
  23. // 寄存器读写
  24. void writeRegister(const QString& registerId, quint16 value);
  25. // 设置从站地址
  26. // void setSlaveAddress(int address) { worker->setSlaveAddress(address); }
  27. signals:
  28. void connectionStatusChanged(bool connected);
  29. void errorOccurred(const QString& error);
  30. void registerValueUpdated(const QString& registerId, quint16 value);
  31. public slots:
  32. void readRegisters();
  33. private:
  34. ModbusWorker* worker;
  35. QTimer* pollTimer;
  36. QThread* modbusThread;
  37. };
  38. #endif // MODBUSMANAGER_H