Newer
Older
ZXSSCJ / DevStatusAcq / protocol / SignalGeneratorProtocolBM.h
TAN YUE on 10 Nov 2021 2 KB 20211110 设备设置指令
#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