XNSim/XNMonitor/DataMonitorWidget/DataMonitorThread.h

145 lines
3.6 KiB
C
Raw Permalink Normal View History

2025-04-28 12:25:20 +08:00
#pragma once
#include <QThread>
#include <QString>
#include <QMap>
#include <QMutex>
#include "../TopicMonitorFactory/TopicMonitor.h"
#include "../TopicManager/TopicManager.h"
#include "../TypeDefine.h"
class DataMonitorThread : public QThread
{
Q_OBJECT
public:
explicit DataMonitorThread(QObject *parent = nullptr);
~DataMonitorThread();
signals:
void updateMonitoringData(const QString &varName, const QString &value);
void sendDebugMessage(int type, const QString &message); // 发送调试信息的信号声明
public slots:
/**
* @brief 线
* @param newSleepTime ()
*/
void onChangeSleepTime(const unsigned int newSleepTime);
/**
* @brief 线
* @param isRunning true: false:
*/
void onThreadController(const bool &isRunning);
/**
* @brief
* @param modelDefinition
*/
void onSaveModelDefinition(const QSharedPointer<ModelDefinition> &modelDefinition);
/**
* @brief
* @param varName
*/
void onStartMonitoring(const QString &modelName, const QString &topicName,
const QString &varName);
/**
* @brief
* @param varName
*/
void onStopMonitoring(const QString &modelName, const QString &topicName,
const QString &varName);
/**
* @brief
* @param varName
*/
void onPauseMonitoring(const QString &modelName, const QString &topicName,
const QString &varName);
/**
* @brief
* @param varName
*/
void onResumeMonitoring(const QString &modelName, const QString &topicName,
const QString &varName);
/**
* @brief
* @param varName
* @param value
*/
void onInjectOnceData(const QString &modelName, const QString &topicName,
const QString &varName, const double &value);
/**
* @brief
* @param varName
* @param value
*/
void onInjectContinuousData(const QString &modelName, const QString &topicName,
const QString &varName, const double &value);
/**
* @brief
* @param varName
*/
void onStopInjectContinuousData(const QString &modelName, const QString &topicName,
const QString &varName);
/**
* @brief 退线
*/
void onThreadQuit() { m_Quit = true; }
protected:
/**
* @brief 线
*/
void run() override;
private:
/**
* @brief
* @param modelName
* @param topicName
* @return
*/
bool StartTopicMonitor(const QString &modelName, const QString &topicName);
private:
/**
* @brief
*/
QMap<QString, QSharedPointer<StructDefinition>> m_StructDefinitionList;
/**
* @brief
*/
QMap<QString, QMap<QString, unsigned int>> m_VarNameMap;
/**
* @brief
*/
QMap<QString, QMap<QString, double>> m_InjectValueMap;
/**
* @brief 线()
*/
unsigned int m_SleepTime = 1000;
/**
* @brief 线
*/
bool m_Active = false;
/**
* @brief 线退
*/
bool m_Quit = false;
/**
* @brief
*/
QMutex m_Mutex;
/**
* @brief
*/
QMap<QString, QSharedPointer<TopicMonitor>> m_TopicMonitorMap;
};