#pragma once #include #include #include #include #include /** * 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 build_modbus_pkg( quint8 slave_addr, quint8 func_code, const QVector& work_data ); // 解析Modbus RTU数据包 bool parse_modbus_pkg( const QVector &pkg, quint8 &slave_addr, quint8 &func_code, QVector &work_data ); private: // 计算Modbus CRC16 quint16 calc_crc(const QVector& pkg_data) const; };