#ifndef SIGNALGENERATORPROTOCOLBM_H #define SIGNALGENERATORPROTOCOLBM_H #include <QObject> #include <QList> #include "protocol/DeviceStatusProtocolBase.h" #include "dto/SignalGeneratorInterfaceDto.h" #include "dto/SignalGeneratorStatusDto.h" #include "dto/SignalGeneratorMJDTimeDto.h" #include "dto/SignalGeneratorZDATimeDto.h" class SignalGeneratorProtocolBM : public DeviceStatusProtocolBase { public: explicit SignalGeneratorProtocolBM(QObject *parent = nullptr); ~SignalGeneratorProtocolBM(); // 解析数据 bool parseDeviceFrameData(QByteArray rawData, DeviceFrameBaseDto * sgFrameData, int frameType); DeviceFrameBaseDto * frameFactory(int frameType); // 生成闰秒设置指令 QByteArray generateLeapSecondSetCommand(qint8 leapSecondSet); // 生成单次同步设置指令 QByteArray generateSingleSynchSetCommand(qint8 singleSynchSet); // 生成年月日设置指令 QByteArray generateDateSetCommand(QString dateSet); // 生成秒脉宽设置指令 QByteArray generateSecondWidthSetCommand(qlonglong secondWidthSet); // 生成AC码调制比设置指令 QByteArray generateBacRatioSetCommand(qint8 bacRatioSet); // 生成AC码幅度设置指令 QByteArray generateBacRangeSetCommand(float bacRangeSet); // 生成1PPS相位移相设置指令 QByteArray generateOppsPhaseShiftSetCommand(qlonglong oppsPhaseShiftSet); // 生成闰秒时刻设置指令 QByteArray generateLeapTimestampSetSetCommand(QString leapTimestampSet); // 生成儒略日设置指令 QByteArray generateMJDDateSetSetCommand(QString mjdDateSet); // 生成时分秒设置指令 QByteArray generateTimeSetSetCommand(QString timeSet); // QList<QByteArray> extractFrameList(QByteArray rawData); // 检测帧格式,帧头帧尾 int checkFrame(QByteArray rawData); enum SIGNAL_GENERATOR_FRAME_TYPE { UNKNOW_FRAME = 0, INTERFACE_FRAME = 1, STATUS_FRAME = 2, ZDA_FRAME = 3, MJD_FRAME = 4, NETWORK_FRAME = 5 }; }; #endif // SIGNALGENERATORPROTOCOLBM_H