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);
        }
Example #2
0
        // Token: 0x06000007 RID: 7 RVA: 0x000022DC File Offset: 0x000004DC
        public bool Write(string[] sItemIDArray, object[] oValArray, out int[] nErrorArray)
        {
            int num = sItemIDArray.Count <string>();

            nErrorArray = new int[num];
            bool result;

            try
            {
                IOPCItemIO   iopcitemIO = (IOPCItemIO)this.m_OPCServer;
                OPCITEMVQT[] array      = new OPCITEMVQT[num];
                for (int i = 0; i < oValArray.Count <object>(); i++)
                {
                    array[i] = new OPCITEMVQT
                    {
                        vDataValue = oValArray[i]
                    };
                }
                IntPtr intPtr;
                iopcitemIO.WriteVQT(num, sItemIDArray, array, out intPtr);
                Marshal.Copy(intPtr, nErrorArray, 0, num);
                Marshal.FreeCoTaskMem(intPtr);
                result = true;
            }
            catch (Exception ex)
            {
#if DEBUG
                Debug.WriteLine(ex);
#endif
                result = false;
            }
            return(result);
        }
Example #3
0
 internal static OPCITEMVQT[] GetOPCITEMVQTs(ItemValue[] input)
 {
     OPCITEMVQT[] opcitemvqtArray = null;
     if (input != null)
     {
         opcitemvqtArray = new OPCITEMVQT[input.Length];
         for (int i = 0; i < input.Length; i++)
         {
             opcitemvqtArray[i] = new OPCITEMVQT();
             DateTime datetime = input[i].TimestampSpecified ? input[i].Timestamp : DateTime.MinValue;
             opcitemvqtArray[i].vDataValue          = OpcCom.Interop.GetVARIANT(input[i].Value);
             opcitemvqtArray[i].bQualitySpecified   = input[i].QualitySpecified ? 1 : 0;
             opcitemvqtArray[i].wQuality            = input[i].QualitySpecified ? input[i].Quality.GetCode() : ((short)0);
             opcitemvqtArray[i].bTimeStampSpecified = input[i].TimestampSpecified ? 1 : 0;
             opcitemvqtArray[i].ftTimeStamp         = Convert(OpcCom.Interop.GetFILETIME(datetime));
         }
     }
     return(opcitemvqtArray);
 }
Example #4
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);
        }