|
- #pragma once
-
- #include <QObject>
- #include <QString>
- #include <QVariant>
- #include <QList>
- #include <QStringList>
-
- /**
- * @brief 数据项结构
- * 用于数据传输的基本单元
- */
- struct DataItem {
- int ID;
- QVariant value;
-
- // 添加构造函数
- DataItem(int id = 0, const QVariant& val = QVariant())
- : ID(id), value(val) {}
- };
-
-
- /**
- * @brief 数据点信息结构
- * 描述数据点的详细信息
- */
- struct DataPointInfo {
- int ID; // 数据点编号
- QString name; // 数据点名称
- QString dataType; // 数据类型
- };
-
- /**
- * @brief DDS插件接口类
- */
- class AuseftDDSPluginInterface
- {
- public:
- // 定义支持的数据类型列表
- static const inline QStringList SupportedTypes = {
- "bool", // 布尔型
- "int8", // 8位整型
- "uint8", // 8位无符号整型
- "int16", // 16位整型
- "uint16", // 16位无符号整型
- "int32", // 32位整型
- "uint32", // 32位无符号整型
- "int64", // 64位整型
- "uint64", // 64位无符号整型
- "float", // 单精度浮点
- "double", // 双精度浮点
- "string" // 字符串
- };
-
- // 验证数据类型是否支持
- static bool isTypeSupported(const QString& type) {
- return SupportedTypes.contains(type.toLower());
- }
-
- virtual ~AuseftDDSPluginInterface() {}
-
- /**
- * @brief 初始化插件
- * @param domainId DDS域ID
- * @param domainName DDS域名称
- * @return 是否初始化成功
- */
- virtual Q_INVOKABLE bool init(uint32_t domainId, const QString& domainName) = 0;
-
- /**
- * @brief 获取所有支持的数据点信息
- * @return 数据点信息列表
- */
- virtual Q_INVOKABLE QList<DataPointInfo> getDataPoints() = 0;
-
- /**
- * @brief 发布数据
- * @param dataList 要发布的数据列表
- * @return 是否发布成功
- */
- virtual Q_INVOKABLE bool publishData(const QList<DataItem>& dataList) = 0;
-
- /**
- * @brief 数据更新回调
- * @param dataList 更新的数据列表
- */
- signals:
- void onDataUpdated(const QList<DataItem>& dataList) ;
- };
-
- #define AuseftDDSPluginInterface_iid "Com.Auseft.AuseftDDSPluginInterface"
- Q_DECLARE_INTERFACE(AuseftDDSPluginInterface, AuseftDDSPluginInterface_iid)
|