跳到主要内容

Nodes 节点 (C)

C SDK 没有 C# 的 NodeCollection / OpcUaNode Lazy Load 包装类, 所有节点访问都是直接对 NodeId 字符串调 API.

子页跳转

三种访问节点的方式

/* 方式 1: 直接 NodeId 字符串 (最直白, 最省 RPC) */
DarraUa_Status st = 0;
DarraUa_DataValue* dv = DarraUa_Session_ReadNode(
h, "ns=2;s=Temperature", DARRA_UA_ATTR_VALUE, &st);

/* 方式 2: 浏览拿子 NodeId 后再读 (探索式) */
DarraUa_BrowseResult* br = NULL;
DarraUa_Session_BrowseNode(h, "i=85", DARRA_UA_NODE_CLASS_UNSPECIFIED, &br);
/* 找到 BrowseName 匹配的子, 取其 NodeId 字符串再 Read */

/* 方式 3: 路径解析 (一次 RPC 翻多段) */
char buf[128];
DarraUa_Session_ResolveBrowsePath(
h, "i=85", "/Server/ServerStatus/CurrentTime", buf, sizeof(buf));
/* buf 现在是 "i=2258", 用它 Read */

三种方式底层都走相同 RPC, 选你觉得最自然的就行.

选择指南

场景推荐
已知精确 NodeId (生产代码)方式 1 字符串
标准 ns=0 节点方式 1 + WellKnownNodes
浏览树 / 一次性脚本方式 2 BrowseNode
100+ 路径批量初始化TranslateBrowsePaths
长期运行高频访问RegisterNodes 加速

下一步