使用TitaniumAS OPC DA客户端写入时报System.NullReferenceException异常
TitaniumAS OPC DA客户端写入操作抛出NullReferenceException异常的解决方法
问题描述
使用TitaniumAS OPC DA客户端时,读取标签功能正常,但执行写入操作时抛出System.NullReferenceException异常,报错行:HRESULT[] results = group.Write(items, values)。已确认TagID正确(读取该标签可正常运行)。
问题原因
刚创建的OpcDaGroup实例中,Items集合是空的,调用FirstOrDefault查找指定ItemId的元素时会返回null,将null传入group.Write方法就会触发空引用异常。
解决方案
先通过group.AddItem方法将需要写入的标签添加到Group中,再执行写入操作。
修正后的代码
using System; using TitaniumAS.Opc.Client.Common; using TitaniumAS.Opc.Client.Da; namespace OPCDA { class Program { static void Main(string[] args) { TitaniumAS.Opc.Client.Bootstrap.Initialize(); Uri url = UrlBuilder.Build("Kepware.KEPServerEX.V6"); using (var server = new OpcDaServer(url)) { server.Connect(); // 创建标签组 OpcDaGroup group = server.AddGroup("MyGroup"); group.IsActive = true; // 先将需要写入的标签添加到Group中 OpcDaItem int2 = group.AddItem("Channel1.Device1.Woord"); OpcDaItem[] items = { int2 }; object[] values = { 15601 }; HRESULT[] results = group.Write(items, values); } } } }
内容的提问来源于stack exchange,提问作者Seyl
相关产品推荐
相关产品推荐

