2014-12-17 2 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. Это должно дать вам все узлы под корнем. Затем вызовите функцию Обзор рекурсивно для ветвей (только ветвей, а не элементов), которые вы получаете, используя идентификатор элемента каждой ветви в качестве отправной точки для нового просмотра.

+0

Спасибо! Есть ли у вас пример поиска следующего листа после того, как я искал корень? –

Смежные вопросы