#ifndef FREQUENCYTUNINGPROTOCOLBM_H #define FREQUENCYTUNINGPROTOCOLBM_H #include <QObject> #include <QList> #include "dto/FrequencyTuningStatusFreqDto.h" #include "dto/FrequencyTuningStatusPulseDto.h" static const QString FREQUENCY_TUNING_FREQ_FRAME_HEAD = "$GLF"; // 帧头 static const QString FREQUENCY_TUNING_PULSE_FRAME_HEAD = "$GLP"; // 帧头 static const QString FREQUENCY_TUNING_FRAME_TAIL = "\r\n"; // 帧尾 static const QString FREQUENCY_TUNING_FRAME_CONTENT_SEP = ","; // 帧内分隔符 static const QString FREQUENCY_TUNING_FRAME_SUM_SEP = "*"; // 异或和字段的分隔符 static const int FREQUENCY_TUNING_FRAME_SUM_LENGTH = 2; static const int FREQUENCY_TUNING_FREQ_FRAME_SUB_COUNT = 26; static const int FREQUENCY_TUNING_PULSE_FRAME_SUB_COUNT = 5; static const int FREQUENCY_TUNING_FRAME_SUB_MIN_SIZE = 2; static const int FREQUENCY_TUNING_FREQ_FRAME_MIN_LENGTH = FREQUENCY_TUNING_FREQ_FRAME_HEAD.length() + FREQUENCY_TUNING_FRAME_TAIL.length() + FREQUENCY_TUNING_FREQ_FRAME_SUB_COUNT * FREQUENCY_TUNING_FRAME_SUB_MIN_SIZE + 1 + FREQUENCY_TUNING_FRAME_SUM_LENGTH; static const int FREQUENCY_TUNING_PULSE_FRAME_MIN_LENGTH = FREQUENCY_TUNING_PULSE_FRAME_HEAD.length() + FREQUENCY_TUNING_FRAME_TAIL.length() + FREQUENCY_TUNING_PULSE_FRAME_SUB_COUNT * FREQUENCY_TUNING_FRAME_SUB_MIN_SIZE + 1 + FREQUENCY_TUNING_FRAME_SUM_LENGTH; class FrequencyTuningProtocolBM : public QObject { Q_OBJECT public: explicit FrequencyTuningProtocolBM(QObject *parent = nullptr); ~FrequencyTuningProtocolBM(); // 解析数据 static bool parseFrequencyTuningData(QByteArray rawData, FrequencyTuningStatusDto * ftFrameData, int frameType); static FrequencyTuningStatusDto * ftFrameFactory(int frameType); // static QList<QByteArray> extractFrameList(QByteArray rawData); // 检测帧格式,帧头帧尾 static int checkFrame(QByteArray rawData); enum FREQUENCY_TUNING_FRAME_TYPE { UNKNOW_FRAME = 0, FREQ_FRAME = 1, PULSE_FRAME = 2, NETWORK_FRAME = 3 }; }; #endif // FREQUENCYTUNINGPROTOCOLBM_H