对于我的一生,我无法找到我认为是一个简单问题的答案 - 如何找到 OPC 节点的数据类型。
我正在编写一个 UA OPC 库,其中涉及创建订阅和监视/更新此订阅中的标签。
写入标签的请求来自外部应用程序,由订阅和标签 ID 以及对象值组成。问题是这个对象总是一个字符串(不要问),需要将其转换为标签的适当数据类型。所以,我需要找出与标签关联的数据类型。目前,写入失败并出现类型不匹配异常。
这是我的更新代码:
//
// 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,如何找到数据类型以便我可以将字符串转换为兼容类型?
谢谢
史蒂夫