Open62541 服务器标签点存在性检查代码示例
以下是使用 open62541 库中的 C 代码示例,用于检查服务器中是否已经创建了指定的标签点:
// 连接到服务器
UA_Client *client = UA_Client_new();
UA_ClientConfig_setDefault(UA_Client_getConfig(client));
// 认证
UA_UserNamePasswordLoginRequest loginReq =
UA_UserNamePasswordLoginRequest_default('admin', 'admin');
UA_StatusCode status = UA_Client_loginUsername(client, 'opc.tcp://localhost:4840', loginReq);
if(status != UA_STATUSCODE_GOOD) {
UA_Client_delete(client);
return status;
}
// 读取指定的标签点
UA_NodeId nodeId = UA_NODEID_STRING(1, 'MyTag');
UA_Variant value;
UA_Variant_init(&value);
status = UA_Client_readValueAttribute(client, nodeId, &value);
if(status == UA_STATUSCODE_GOOD) {
printf('The value of MyTag is: %d\n', *(UA_Int32*)value.data);
} else if(status == UA_STATUSCODE_BADNODEIDUNKNOWN) {
printf('MyTag does not exist on the server.\n');
}
// 断开连接
UA_Variant_deleteMembers(&value);
UA_Client_delete(client);
这段代码首先连接到服务器,然后使用用户名和密码进行认证。接下来,它尝试读取指定的标签点,并根据返回的状态码判断该标签点是否存在。如果状态码为'UA_STATUSCODE_GOOD',则表示该标签点存在,并打印出其值;如果状态码为'UA_STATUSCODE_BADNODEIDUNKNOWN',则表示该标签点不存在。最后,它断开与服务器的连接。
原文地址: https://www.cveoy.top/t/topic/oKJE 著作权归作者所有。请勿转载和采集!