|
- #pragma once
- #include <QObject>
- #include <QVector>
- #include <QByteArray>
- #include <QtEndian>
- #include <QDebug>
-
-
- /**
- * Modbus RTU数据包格式合成和解析
- * 创建传输或发送数据包的统一格式
- * 计算以及解析CRC16校验码
- */
- class Modbus_RTU_Pkg : public QObject
- {
- Q_OBJECT
-
- public:
- explicit Modbus_RTU_Pkg(QObject *parent = nullptr);
- ~Modbus_RTU_Pkg();
-
- // 构建Modbus RTU数据包
- QVector<quint8> build_modbus_pkg(
- quint8 slave_addr,
- quint8 func_code,
- const QVector<quint8>& work_data
- );
-
- // 解析Modbus RTU数据包
- bool parse_modbus_pkg(
- const QVector<quint8> &pkg,
- quint8 &slave_addr,
- quint8 &func_code,
- QVector<quint8> &work_data
- );
-
-
-
- private:
- // 计算Modbus CRC16
- quint16 calc_crc(const QVector<quint8>& pkg_data) const;
- };
|