c++ open62541 查询某一节点下所有变量节点,非变量节点不储存
时间: 2024-02-06 10:03:52 浏览: 28
您好!可以使用open62541提供的UA_Client_forEachChildNode方法遍历某一节点下的所有子节点,然后对每个子节点进行判断,如果是Variable节点则储存,否则不储存。以下是示例代码:
```c++
void browseChildren(UA_Client *client, UA_NodeId nodeId, std::vector<UA_NodeId>& variableNodes) {
UA_BrowseRequest request;
UA_BrowseRequest_init(&request);
request.requestedMaxReferencesPerNode = 0;
request.nodesToBrowse = UA_BrowseDescription_new();
request.nodesToBrowseSize = 1;
request.nodesToBrowse[0].nodeId = nodeId;
request.nodesToBrowse[0].browseDirection = UA_BROWSEDIRECTION_FORWARD;
request.nodesToBrowse[0].referenceTypeId = UA_NODEID_NUMERIC(0, UA_NS0ID_HASCHILDNODE);
request.nodesToBrowse[0].includeSubtypes = true;
request.nodesToBrowse[0].nodeClassMask = UA_NODECLASS_VARIABLE;
UA_BrowseResponse response = UA_Client_Service_browse(client, request);
if (response.responseHeader.serviceResult == UA_STATUSCODE_GOOD && response.resultsSize > 0) {
for (size_t i = 0; i < response.results[0].referencesSize; ++i) {
UA_ReferenceDescription *rd = &(response.results[0].references[i]);
if (!UA_NodeId_equal(&rd->nodeId.nodeId, &UA_NODEID_NUMERIC(0, UA_NS0ID_HASCOMPONENT))) {
variableNodes.push_back(rd->nodeId.nodeId);
}
}
}
UA_BrowseRequest_deleteMembers(&request);
UA_BrowseResponse_deleteMembers(&response);
}
```
其中,client是UA_Client对象,nodeId是要查询的节点的NodeId对象,variableNodes是存储Variable节点NodeId的vector。
相关推荐
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)