63 lines
1.7 KiB
C
63 lines
1.7 KiB
C
|
|
#ifndef DATACENTER_H
|
|||
|
|
#define DATACENTER_H
|
|||
|
|
|
|||
|
|
#include <QObject>
|
|||
|
|
#include <QVariant>
|
|||
|
|
#include <QTimer>
|
|||
|
|
#include <QMap>
|
|||
|
|
#include <QStringList>
|
|||
|
|
#include "OpcUaManager.h"
|
|||
|
|
#include <GlobalDefinitions/Variable.h>
|
|||
|
|
|
|||
|
|
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<QString, QString> 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
|