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); }
// 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); }
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); }
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); }