训练营Modbus项目代码仓库
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

44 line
663 B

  1. #pragma once
  2. #include <QObject>
  3. /**
  4. * 实现Modbus主站的所有方法
  5. */
  6. class Modbus_Master : public QObject
  7. {
  8. Q_OBJECT
  9. public:
  10. Modbus_Master(QObject *parent);
  11. ~Modbus_Master();
  12. // 构建Modbus RTU数据包
  13. QByteArray build_modbus_pkg(
  14. quint8 slave_addr,
  15. quint8 func_code,
  16. const QByteArray& work_data
  17. );
  18. // 解析Modbus RTU数据包
  19. bool parse_modbus_pkg(
  20. const QByteArray& pkg,
  21. quint8& slave_addr,
  22. quint8& func_code,
  23. QByteArray& work_data
  24. );
  25. private:
  26. // 私有方法
  27. // 计算Modbus CRC16
  28. quint16 calc_crc(const QByteArray& frame_data) const;
  29. // 私有变量
  30. const QByteArray frame;
  31. quint8 slave_addr;
  32. quint8 func_code;
  33. QByteArray work_data;
  34. };