#ifndef DATACENTER_H #define DATACENTER_H #include #include #include #include #include #include "OpcUaManager.h" #include class DataCenter : public QObject { Q_OBJECT public: explicit DataCenter(OpcUaManager *opcManager, QObject *parent = nullptr); // 添加需要监控的节点 void addMonitoredNode(const QString &nodeId, const QString &nodeName,const QString &varName,const QString &TableName,const QString &FieldName); // 开始/停止循环读取 void startCyclicRead(int intervalMs); void stopCyclicRead(); // 获取最新的节点值 QVariant getNodeValue(const QString &nodeId) const; QVariant getNodeValueByName(const QString &nodeName) const; // 获取所有节点信息 QMap getAllNodeNames() const { return gOPC_NodeName; } void InitData(); signals: // 节点值更新信号(供UI层订阅) void nodeValueUpdated(const QString &nodeId, const QString &nodeName,const QString &varName, const QVariant &value); // 错误信号 void errorOccurred(const QString &errorString); private slots: // 定时器触发,执行循环读取 void onTimerTimeout(); // 处理OPC读取结果 void handleReadCompleted(const QVariant &value, const QString &nodeId); void refreshAllNodes(); private: /** @brief OPC操作实例(不负责所有权) */ OpcUaManager *m_opcManager; /** @brief 循环读取定时器 */ QTimer *m_cyclicTimer; /** @brief 当前读取索引 */ int m_currentReadIndex; //GlobalType DC_SetST; // 数据中心,给变量赋值 }; #endif // DATACENTER_H