奥特QT DDS 插件库
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

plugin_interface.hpp 2.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. #pragma once
  2. #include <QObject>
  3. #include <QString>
  4. #include <QVariant>
  5. #include <QList>
  6. #include <QStringList>
  7. /**
  8. * @brief 数据项结构
  9. * 用于数据传输的基本单元
  10. */
  11. struct DataItem {
  12. int ID;
  13. QVariant value;
  14. // 添加构造函数
  15. DataItem(int id = 0, const QVariant& val = QVariant())
  16. : ID(id), value(val) {}
  17. };
  18. /**
  19. * @brief 数据点信息结构
  20. * 描述数据点的详细信息
  21. */
  22. struct DataPointInfo {
  23. int ID; // 数据点编号
  24. QString name; // 数据点名称
  25. QString dataType; // 数据类型
  26. };
  27. /**
  28. * @brief DDS插件接口类
  29. */
  30. class AuseftDDSPluginInterface
  31. {
  32. public:
  33. // 定义支持的数据类型列表
  34. static const inline QStringList SupportedTypes = {
  35. "bool", // 布尔型
  36. "int8", // 8位整型
  37. "uint8", // 8位无符号整型
  38. "int16", // 16位整型
  39. "uint16", // 16位无符号整型
  40. "int32", // 32位整型
  41. "uint32", // 32位无符号整型
  42. "int64", // 64位整型
  43. "uint64", // 64位无符号整型
  44. "float", // 单精度浮点
  45. "double", // 双精度浮点
  46. "string" // 字符串
  47. };
  48. // 验证数据类型是否支持
  49. static bool isTypeSupported(const QString& type) {
  50. return SupportedTypes.contains(type.toLower());
  51. }
  52. virtual ~AuseftDDSPluginInterface() {}
  53. /**
  54. * @brief 初始化插件
  55. * @param domainId DDS域ID
  56. * @param domainName DDS域名称
  57. * @return 是否初始化成功
  58. */
  59. virtual Q_INVOKABLE bool init(uint32_t domainId, const QString& domainName) = 0;
  60. /**
  61. * @brief 获取所有支持的数据点信息
  62. * @return 数据点信息列表
  63. */
  64. virtual Q_INVOKABLE QList<DataPointInfo> getDataPoints() = 0;
  65. /**
  66. * @brief 发布数据
  67. * @param dataList 要发布的数据列表
  68. * @return 是否发布成功
  69. */
  70. virtual Q_INVOKABLE bool publishData(const QList<DataItem>& dataList) = 0;
  71. /**
  72. * @brief 配置PLC参数
  73. * @param
  74. * @return 是否配置是否成功
  75. */
  76. virtual Q_INVOKABLE bool config()=0;
  77. /**
  78. * @brief 数据更新回调
  79. * @param dataList 更新的数据列表
  80. */
  81. signals:
  82. //通知调用者数据已变化
  83. void onDataUpdated(const QList<DataItem>& dataList) ;
  84. //通知调用者参数配置完成
  85. void onCongifOver(const QList<DataItem>& dataList) ;
  86. };
  87. #define AuseftDDSPluginInterface_iid "Com.Auseft.AuseftDDSPluginInterface"
  88. Q_DECLARE_INTERFACE(AuseftDDSPluginInterface, AuseftDDSPluginInterface_iid)