C# 从HDA服务器读取数据返回E_INVALIDHANDLE

C# 从HDA服务器读取数据返回E_INVALIDHANDLE,c#,dcom,opc,C#,Dcom,Opc,我正在使用OpcNetApi程序集从Matrikon OPC HDA服务器连接和读取数据。连接正在进行,但是我在尝试从服务器提取一些测试数据时收到一个E_INVALIDHANDLE错误,即ResultID。这就是我所取得的成绩: Opc.URL url = new Opc.URL("opchda://localhost/Matrikon.OPC.Simulation.1"); OpcCom.Factory fact = new OpcCom.Factory(); hdaServer = new

我正在使用OpcNetApi程序集从Matrikon OPC HDA服务器连接和读取数据。连接正在进行,但是我在尝试从服务器提取一些测试数据时收到一个
E_INVALIDHANDLE
错误,即
ResultID
。这就是我所取得的成绩:

Opc.URL url = new Opc.URL("opchda://localhost/Matrikon.OPC.Simulation.1");
OpcCom.Factory fact = new OpcCom.Factory();
hdaServer = new Opc.Hda.Server(fact, url);
hdaServer.Connect();

// Read data from historian
DateTime[] times = new DateTime[1];
times[0] = DateTime.Now;

Opc.ItemIdentifier[] items = new Opc.ItemIdentifier[1];
items[0] = new Opc.ItemIdentifier();
items[0].ItemName = "Random.ArrayOfString";
items[0].ClientHandle = null; // which handle should I use?
ItemValueCollection[] itemsColl = hdaServer.ReadAtTime(times, items);
不会引发任何错误,但在
itemsColl
中找不到任何结果

Random.ArrayOfString
是一个现有的OPC项目,具有可用的历史值

更新


我找到了一个正在研究的解决方案:

我认为您在ReadTime方法中使用的日期是错误的。此方法在特定时间读取数据。尝试使用ReadRaw或ReadProcessed方法,从中可以读取日期范围内的数据