/** * @file ModelInfoUpdateThread.h * @author jinchao * @brief 模型信息更新线程类 * @version 1.0 * @date 2025-03-10 * * @copyright Copyright (c) 2025 COMAC * */ #pragma once #include #include #include #include #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 m_ModelStatus; };