解析十六进制雷达数据格式:解析雷达数据类型。

以Cat62格式雷达数据为例,十六进制雷达数据部分代码:

3e0120bf7da4ffee0085

 雷达数据使用2个字符(1个字节)标识,在这里是“3e”,转换为十进制数为62。

雷达数据类型父类:

base_header_processor.h

//
// Created by qiaowei on 2024-02-02.
//

#ifndef RADARDATACONTROLLER_BASE_HEADER_PROCESSOR_H
#define RADARDATACONTROLLER_BASE_HEADER_PROCESSOR_H


#include <QString>


namespace processor {

    /**
     * @copyright 2003-2024
     * @date      10:54
     * @author    qiao wei
     * @version   1.0
     * @brief     解析雷达数据中雷达类型的接口。返回雷达类型标识类型标识为int类型。
     * @history
     */
    class BaseHeaderProcessor {

    public:
        /**
         * @author  qiao wei
         * @brief   返回雷达数据的类型标识。
         * @param   track_data 需要解析的雷达数据。
         * @param   position_index 雷达类型标识最后一个字符在字符串track_data的索引。
         * @return  雷达数据类型。
         * @history
         */
        virtual int processor(const QString& track_data,
                              int begin_position,
                              int& readed_data_end_position) = 0;
    };

} // processor

#endif //RADARDATACONTROLLER_BASE_HEADER_PROCESSOR_H

cat_62_header_processor.h

//
// Created by qiaowei on 2024-02-02.
//

#ifndef RADARDATACONTROLLER_CAT_62_HEADER_PROCESSOR_H
#define RADARDATACONTROLLER_CAT_62_HEADER_PROCESSOR_H


#include <QObject>
#include <QString>

#include "../baseprocess/base_header_processor.h"


namespace processor {

    class Cat62HeaderProcessor : public QObject, public BaseHeaderProcessor {

    public:
        explicit Cat62HeaderProcessor(QObject* parent = nullptr);

        virtual ~Cat62HeaderProcessor() override;

        /**
         * @author  qiao wei
         * @brief   读取track_data字符串中雷达数据类型并将类型返回,是Cat62还是Cat21。
         * @param   track_data 十六进制雷达数据。
         * @param   readed_data_end_position 雷达数据中数据头最后一个字符的索引。
         * @return  雷达数据类型。
         * @history
         */
        virtual int processor(const QString& track_data,
                              int begin_position,
                              int& readed_data_end_position) override;
    };

} // processor

#endif //RADARDATACONTROLLER_CAT_62_HEADER_PROCESSOR_H

cat_62_header_processor.cpp

//
// Created by qiaowei on 2024-02-02.
//


#include "cat_62_header_processor.h"


namespace processor {

    Cat62HeaderProcessor::Cat62HeaderProcessor(QObject* parent) : QObject(parent) {}

    Cat62HeaderProcessor::~Cat62HeaderProcessor() {}

    int Cat62HeaderProcessor::processor(const QString& track_data,
                                        int begin_position,
                                        int& readed_data_end_position) {
        // 雷达数据中数据类型项最后一个字符的索引。
        readed_data_end_position = 1;

        return track_data.mid(begin_position, 2).toInt(nullptr, 16);
    }

} // processor

main.cpp

#include <string>

#include <QApplication>
#include <QVector>
#include <QtDebug>
#include <QString>

#include "./form/main_window.h"
#include "./cat62process/cat62_fspec_processor.h"
#include "./cat62process/cat_62_length_processor.h"
#include "./cat62process/cat_62_header_processor.h"


using std::string;

using form::MainWindow;
using processor::Cat62FspecProcessor;
using processor::Cat62HeaderProcessor;
using processor::Cat62LengthProcessor;


int main(int argc,
         char *argv[]) {
    QApplication a(argc, argv);

//    MainWindow* main_window{new MainWindow{nullptr}};
//    main_window->show();

    QString content = "3e0120bf7da4ffee00859";

    int end_position{0};
    Cat62HeaderProcessor* header_processor{new Cat62HeaderProcessor{}};
    qDebug()<< header_processor->processor(content, 0, end_position);

    return QApplication::exec();
}

测试结果:

 

 

  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值