封装UA_Client_writeValueAttribute函数成接口的示例代码如下:
// 定义接口函数
UA_StatusCode writeValueAttribute(UA_Client *client, UA_NodeId nodeToWrite, const UA_Variant *value) {
UA_WriteValue writeValue;
UA_WriteRequest writeReq;
UA_WriteResponse writeResp;
// 设置写入请求参数
writeValue.nodeId = nodeToWrite;
writeValue.attributeId = UA_ATTRIBUTEID_VALUE;
writeValue.value.hasValue = true;
writeValue.value.value = *value;
writeReq.nodesToWrite = &writeValue;
writeReq.nodesToWriteSize = 1;
// 执行写入请求
UA_StatusCode status = UA_Client_Service_write(client, &writeReq, &writeResp);
if (status != UA_STATUSCODE_GOOD) {
printf("Failed to write value attribute. Error code: %s\n",
UA_StatusCode_name(status));
return status;
}
return status;
}
// 示例使用
UA_Variant newValue; // 要写入的新值
// 连接到OPC UA服务器等初始化操作...
// 写入节点属性值
UA_NodeId nodeId; // 要写入的节点标识符(NodeId)
UA_StatusCode result = writeValueAttribute(client, nodeId, &newValue);
if (result == UA_STATUSCODE_GOOD) {
printf("Successfully wrote value attribute.\n");
} else {
printf("Failed to write value attribute.\n");
}
// 断开与OPC UA服务器连接等清理操作...
以上代码将UA_Client_writeValueAttribute函数封装为名为writeValueAttribute的接口函数。该函数通过构建适当的写入请求参数,并使用UA_Client_Service_write函数执行写入操作。成功执行后返回UA_STATUSCODE_GOOD,否则返回相应的错误码。
请注意,以上代码仅为示例,具体实现可能需要根据使用的OPC UA库或框架进行调整和完善。
内容由零声教学AI助手提供,问题来源于学员提问




