コード例 #1
0
        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;
        }
コード例 #2
0
        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);
        }