Типы данных UA OPC Server
На протяжении всей жизни я не могу найти ответ на то, что, как я думал, было бы простым вопросом - как найти тип данных узла OPC.
Я пишу библиотеку UA OPC, которая включает в себя создание подписки и мониторинг / обновление тегов в этой подписке.
Запрос на запись в тег поступает из внешнего приложения и состоит из подписки и идентификатора тега вместе со значением объекта. Проблема заключается в том, что этот объект всегда является строкой (не спрашивайте), которую необходимо преобразовать в соответствующий тип данных для тега. Итак, мне нужно выяснить, какой тип данных связан с тегом. На данный момент запись завершается с ошибкой несоответствия типов.
Вот мой код обновления:
//
// Extension methods
public bool Write<T>(long groupID, long tagID, T item)
{
var sub = FindSubscription(groupID);
try
{
if (sub != null)
{
var node = sub.MonitoredItems.FirstOrDefault(m => (long)m.Handle == tagID);
if (node != null)
{
bool result = false;
var nodesToWrite = BuildWriteValueCollection(node.DisplayName, Attributes.Value, item);
StatusCodeCollection results;
DiagnosticInfoCollection diag;
try
{
_session.Write(
requestHeader: null,
nodesToWrite: nodesToWrite,
results: out results,
diagnosticInfos: out diag);
result = CheckReturnValue(results[0]);
}
catch (Exception ex)
{
}
}
}
}
catch (Exception ex)
{
LogMessage(String.Format("Write GroupID {0}, Tag {1}, Value {2}", groupID, tagID, item.ToString()), ex);
}
return false;
}
Я искал целую вечность, чтобы выяснить, как определить тип данных узла, но безуспешно. Итак, для MonitoredItem, как можно найти тип данных, чтобы я мог преобразовать строку в совместимый тип?
Спасибо
Стив