以下是使用 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',则表示该标签点不存在。最后,它断开与服务器的连接。

Open62541 服务器标签点存在性检查代码示例

原文地址: https://www.cveoy.top/t/topic/oKJE 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录