99 lines
1.8 KiB
C
99 lines
1.8 KiB
C
|
/**
|
||
|
* @file ModelInfoUpdateThread.h
|
||
|
* @author jinchao
|
||
|
* @brief 模型信息更新线程类
|
||
|
* @version 1.0
|
||
|
* @date 2025-03-10
|
||
|
*
|
||
|
* @copyright Copyright (c) 2025 COMAC
|
||
|
*
|
||
|
*/
|
||
|
#pragma once
|
||
|
|
||
|
#include <QThread>
|
||
|
#include <QMutex>
|
||
|
#include <QMap>
|
||
|
#include <memory>
|
||
|
#include "../TypeDefine.h"
|
||
|
#include "../../XNCore/XNIDL/XNSimStatusPubSubTypes.hpp"
|
||
|
|
||
|
/**
|
||
|
* @brief 模型信息更新线程类
|
||
|
*/
|
||
|
class ModelInfoUpdateThread : public QThread
|
||
|
{
|
||
|
Q_OBJECT
|
||
|
public:
|
||
|
/**
|
||
|
* @brief 构造函数
|
||
|
* @param parent 父对象
|
||
|
*/
|
||
|
explicit ModelInfoUpdateThread(QObject *parent = nullptr) : QThread(parent) {}
|
||
|
/**
|
||
|
* @brief 析构函数
|
||
|
*/
|
||
|
virtual ~ModelInfoUpdateThread();
|
||
|
signals:
|
||
|
/**
|
||
|
* @brief 更新模型信息信号
|
||
|
* @param threadData 线程数据
|
||
|
*/
|
||
|
void updateModelInfo(const XNRuntimeData threadData);
|
||
|
public slots:
|
||
|
/**
|
||
|
* @brief 改变睡眠时间槽函数
|
||
|
* @param newSleepTime 新的睡眠时间
|
||
|
*/
|
||
|
void onChangeSleepTime(const unsigned int newSleepTime);
|
||
|
/**
|
||
|
* @brief 线程控制槽函数
|
||
|
* @param isRunning 是否运行
|
||
|
*/
|
||
|
void onThreadController(const bool &isRunning);
|
||
|
/**
|
||
|
* @brief 线程退出槽函数
|
||
|
*/
|
||
|
void onThreadQuit() { m_Quit = true; }
|
||
|
|
||
|
public:
|
||
|
/**
|
||
|
* @brief 初始化
|
||
|
*/
|
||
|
void Initialize();
|
||
|
|
||
|
protected:
|
||
|
/**
|
||
|
* @brief 运行
|
||
|
*/
|
||
|
void run() override;
|
||
|
|
||
|
private:
|
||
|
/**
|
||
|
* @brief 模型状态监听
|
||
|
* @param status 模型状态
|
||
|
*/
|
||
|
void ModelStatusListener(const XNSim::XNSimStatus::XNModelStatus &status);
|
||
|
|
||
|
private:
|
||
|
/**
|
||
|
* @brief 睡眠时间
|
||
|
*/
|
||
|
unsigned int m_SleepTime = 1000;
|
||
|
/**
|
||
|
* @brief 是否活跃
|
||
|
*/
|
||
|
bool m_Active = false;
|
||
|
/**
|
||
|
* @brief 是否退出
|
||
|
*/
|
||
|
bool m_Quit = false;
|
||
|
/**
|
||
|
* @brief 互斥锁
|
||
|
*/
|
||
|
QMutex m_Mutex;
|
||
|
/**
|
||
|
* @brief 模型状态
|
||
|
*/
|
||
|
QMap<quint32, XNSim::XNSimStatus::XNModelStatus> m_ModelStatus;
|
||
|
};
|