可以将以上代码封装成一个新的函数,将 UA_Client_addVariableNode
的所有参数作为该函数的入口参数。以下是示例代码:
UA_StatusCode addNewVariable(UA_Client *client, UA_NodeId newVariableIdRequest, UA_NodeId parentNodeId,
UA_NodeId referenceTypeId, UA_QualifiedName browseName, UA_NodeId dataType,
const char *descriptionText, const char *displayNameText,
UA_UInt32 initialValue) {
// 创建变量属性对象并设置相关属性
UA_VariableAttributes newVariableAttributes = UA_VariableAttributes_default;
newVariableAttributes.accessLevel = UA_ACCESSLEVELMASK_READ;
newVariableAttributes.description = UA_LOCALIZEDTEXT_ALLOC("en-US", descriptionText);
newVariableAttributes.displayName = UA_LOCALIZEDTEXT_ALLOC("en-US", displayNameText);
newVariableAttributes.dataType = dataType;
// 设置变量值
UA_Variant value;
UA_Variant_init(&value);
UA_Variant_setScalarCopy(&value, &initialValue, &UA_TYPES[UA_TYPES_UINT32]);
newVariableAttributes.value = value;
// 调用接口添加变量节点
return UA_Client_addVariableNode(
client,
newVariableIdRequest,
parentNodeId,
referenceTypeId,
browseName,
dataType,
newVariableAttributes,
NULL);
}
上述代码定义了一个名为 addNewVariable
的函数,它接受 UA_Client
对象以及需要的参数作为输入。在函数内部,我们创建了新的变量属性对象,并设置相关属性。然后使用传入的初始化值创建变量值,并将其赋给新变量属性。最后调用 UA_Client_addVariableNode
接口添加变量节点,并返回相应的状态码。
使用这个封装好的函数,你可以在其他地方直接调用 addNewVariable
来添加新的变量节点。
内容由零声教学AI助手提供,问题来源于学员提问