public static OPCITEMVQT[] CreateOpcItemVQT(IList <OpcDaVQT> values)
        {
            var vqts = new OPCITEMVQT[values.Count];

            for (int i = 0; i < values.Count; i++)
            {
                OpcDaVQT value = values[i];
                vqts[i].bQualitySpecified = false;
                if (value.Quality != short.MinValue)
                {
                    vqts[i].bQualitySpecified = true;
                    vqts[i].wQuality          = value.Quality;
                }

                vqts[i].bTimeStampSpecified = false;
                if (value.Timestamp != DateTimeOffset.MinValue)
                {
                    vqts[i].bTimeStampSpecified = true;
                    vqts[i].ftTimeStamp         = FileTimeConverter.ToFileTime(value.Timestamp);
                }

                vqts[i].vDataValue = value.Value;
            }
            return(vqts);
        }
Exemple #2
0
        public HRESULT[] WriteVQT(IList <string> itemIds, IList <OpcDaVQT> values)
        {
            if (itemIds.Count != values.Count)
            {
                throw new ArgumentException("Invalid size of values", "values");
            }

            var vqts = new OPCITEMVQT[values.Count];

            for (int i = 0; i < values.Count; i++)
            {
                OpcDaVQT opcItemValue = values[i];
                vqts[i].bQualitySpecified = false;
                if (opcItemValue.Quality != short.MinValue)
                {
                    vqts[i].bQualitySpecified = true;
                    vqts[i].wQuality          = opcItemValue.Quality;
                }

                vqts[i].bTimeStampSpecified = false;
                if (opcItemValue.Timestamp != DateTimeOffset.MinValue)
                {
                    vqts[i].bTimeStampSpecified = true;
                    vqts[i].ftTimeStamp         = FileTimeConverter.ToFileTime(opcItemValue.Timestamp);
                }

                vqts[i].vDataValue = opcItemValue.Value;
            }

            string[] pszItemIDs = itemIds.ToArray();
            var      ppErrors   = new HRESULT[pszItemIDs.Length];

            DoComCall(ComObject, "IOPCItemIO::WriteVQT",
                      () => ComObject.WriteVQT(pszItemIDs.Length, pszItemIDs, vqts, out ppErrors), pszItemIDs.Length, pszItemIDs);
            return(ppErrors);
        }