以下是将以上代码封装成对 UA_Client_addVariableNode 接口的调用的示例:
// 定义新变量的节点标识符和属性
UA_NodeId newVariableIdRequest = UA_NODEID_NUMERIC(1, 1001);
UA_NodeId newVariableId = UA_NODEID_NULL;
UA_VariableAttributes newVariableAttributes = UA_VariableAttributes_default;
newVariableAttributes.accessLevel = UA_ACCESSLEVELMASK_READ;
newVariableAttributes.description = UA_LOCALIZEDTEXT_ALLOC("en-US", "NewVariable desc");
newVariableAttributes.displayName = UA_LOCALIZEDTEXT_ALLOC("en-US", "NewVariable");
newVariableAttributes.dataType = UA_TYPES[UA_TYPES_UINT32].typeId;
// 设置变量值
UA_UInt32 value = 50;
UA_Variant_setScalarCopy(&newVariableAttributes.value, &value, &UA_TYPES[UA_TYPES_UINT32]);
// 调用接口添加变量节点
UA_StatusCode retCode = UA_Client_addVariableNode(
client,
newVariableIdRequest,
UA_NODEID_NUMERIC(0, UA_NS0ID_OBJECTSFOLDER),
UA_NODEID_NUMERIC(0, UA_NS0ID_ORGANIZES),
UA_QUALIFIEDNAME(1, "newVariable"),
UA_NODEID_NUMERIC(0, UA_NS0ID_BASEDATAVARIABLETYPE),
newVariableAttributes,
&newVariableId);
if (retCode == UA_STATUSCODE_GOOD) {
// 添加成功,可以根据需要进行后续操作
} else {
// 添加失败,根据返回的错误码进行处理
}
上述示例中,我们首先定义了新变量的节点标识符和属性。然后设置了变量值,并最后通过调用 UA_Client_addVariableNode 接口将新变量添加到指定的对象目录下。根据返回的状态码,可以判断添加是否成功,并进行相应处理。
内容由零声教学AI助手提供,问题来源于学员提问




