2014-12-17 4 views
0

웹 검색을 해봤지만 OPC 서버에서 항목의 트리보기를 얻는 방법을 알 수 없습니다. 다음 코드를 사용했습니다 :OPC Foundation 트리 구조

using Opc.Da; 
using Server=Opc.Da.Server; 
using Factory=OpcCom.Factory; 

string urlstring = string.Format("opcda://{0}/{1}/{{{2}}}", _hostName, _serverName, serverid); 
Server s = new Server(new Factory(), new URL(urlstring)); 
ItemIdentifier itemId = null; 
BrowsePosition position; 
BrowseFilters filters = new BrowseFilters() {BrowseFilter = browseFilter.item}; 
BrowseElement[] elements = s.Browse(itemId, filters, out position); 

답변

0

정확히 작동하지 않는 것은 진술하지 않았습니다. 그러나, 주요 문제점은 아마도 BrowseFilter = browseFilter.item을 사용하고 있다는 것입니다. 트리의 노드는 잎 (항목이라고도 함) 또는 분기 중 하나입니다. 귀하의 코드는 나무의 뿌리 밑에 잎을 묻습니다. 어떤 뿌리 밑에도 항목이 없을 수 있으며, 또한 가지를 얻을 필요가 있고, 그 다음에 더 깊은 지점으로 재귀 적으로 들어가야합니다.

먼저 BrowseFilter = browseFilter.all을 사용하도록 코드를 변경하십시오. 루트 아래에 모든 노드가 있어야합니다. 그런 다음, 각 브랜치의 항목 ID를 새 탐색의 시작점으로 사용하여 분기 (분기가 아닌 항목 만)에 대해 재귀 적으로 호출을 호출하십시오.

+0

감사합니다. 루트를 검색 한 후 다음 리프를 검색하는 방법에 대한 예제가 있습니까? –