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