#pragma once #include #include #include #include #include /** * @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 getDataPoints() = 0; /** * @brief 发布数据 * @param dataList 要发布的数据列表 * @return 是否发布成功 */ virtual Q_INVOKABLE bool publishData(const QList& dataList) = 0; /** * @brief 配置PLC参数 * @param * @return 是否配置是否成功 */ virtual Q_INVOKABLE bool config()=0; /** * @brief 数据更新回调 * @param dataList 更新的数据列表 */ signals: //通知调用者数据已变化 void onDataUpdated(const QList& dataList) ; //通知调用者参数配置完成 void onCongifOver(const QList& dataList) ; }; #define AuseftDDSPluginInterface_iid "Com.Auseft.AuseftDDSPluginInterface" Q_DECLARE_INTERFACE(AuseftDDSPluginInterface, AuseftDDSPluginInterface_iid)