public OpcDaVQTE[] Read(IList<string> itemIds, IList<TimeSpan> maxAge) { if (maxAge == null) maxAge = new TimeSpan[itemIds.Count]; if (itemIds.Count != maxAge.Count) throw new ArgumentException("Invalid size of maxAge", "maxAge"); int[] intMaxAge = ArrayHelpers.CreateMaxAgeArray(maxAge, itemIds.Count); string[] pszItemIDs = itemIds.ToArray(); var ppvValues = new object[pszItemIDs.Length]; var ppwQualities = new short[pszItemIDs.Length]; var ppftTimeStamps = new FILETIME[pszItemIDs.Length]; var ppErrors = new HRESULT[pszItemIDs.Length]; DoComCall(ComObject, "IOPCItemIO::Read", () => ComObject.Read(pszItemIDs.Length, pszItemIDs, intMaxAge, out ppvValues, out ppwQualities, out ppftTimeStamps, out ppErrors), pszItemIDs.Length, pszItemIDs, maxAge); var result = new OpcDaVQTE[itemIds.Count]; for (int i = 0; i < ppvValues.Length; i++) { var vqte = new OpcDaVQTE { Value = ppvValues[i], Quality = ppwQualities[i], Timestamp = FileTimeConverter.FromFileTime(ppftTimeStamps[i]), Error = ppErrors[i] }; result[i] = vqte; } return result; }
public OpcDaVQTE[] Read(IList <string> itemIds, IList <TimeSpan> maxAge) { if (maxAge == null) { maxAge = new TimeSpan[itemIds.Count]; } if (itemIds.Count != maxAge.Count) { throw new ArgumentException("Invalid size of maxAge", "maxAge"); } int[] intMaxAge = ArrayHelpers.CreateMaxAgeArray(maxAge, itemIds.Count); string[] pszItemIDs = itemIds.ToArray(); var ppvValues = new object[pszItemIDs.Length]; var ppwQualities = new short[pszItemIDs.Length]; var ppftTimeStamps = new FILETIME[pszItemIDs.Length]; var ppErrors = new HRESULT[pszItemIDs.Length]; DoComCall(ComObject, "IOPCItemIO::Read", () => ComObject.Read(pszItemIDs.Length, pszItemIDs, intMaxAge, out ppvValues, out ppwQualities, out ppftTimeStamps, out ppErrors), pszItemIDs.Length, pszItemIDs, maxAge); var result = new OpcDaVQTE[itemIds.Count]; for (int i = 0; i < ppvValues.Length; i++) { var vqte = new OpcDaVQTE { Value = ppvValues[i], Quality = ppwQualities[i], Timestamp = FileTimeConverter.FromFileTime(ppftTimeStamps[i]), Error = ppErrors[i] }; result[i] = vqte; } return(result); }