/// <summary> /// Unmarshals and deallocates an array of OPCHDA_ATTRIBUTE structures. /// </summary> internal static Technosoftware.DaAeHdaClient.Hda.TsCHdaAttributeValueCollection[] GetAttributeValueCollections(ref IntPtr pInput, int count, bool deallocate) { Technosoftware.DaAeHdaClient.Hda.TsCHdaAttributeValueCollection[] output = null; if (pInput != IntPtr.Zero && count > 0) { output = new Technosoftware.DaAeHdaClient.Hda.TsCHdaAttributeValueCollection[count]; IntPtr pos = pInput; for (int ii = 0; ii < count; ii++) { output[ii] = GetAttributeValueCollection(pos, deallocate); pos = (IntPtr)(pos.ToInt64() + Marshal.SizeOf(typeof(OpcRcw.Hda.OPCHDA_ATTRIBUTE))); } if (deallocate) { Marshal.FreeCoTaskMem(pInput); pInput = IntPtr.Zero; } } return(output); }
/// <summary> /// Initializes object with the specified AttributeValueCollection object. /// </summary> public TsCHdaAttributeValueCollection(TsCHdaAttributeValueCollection collection) { attributeValues_ = new ArrayList(collection.attributeValues_.Count); foreach (TsCHdaAttributeValue value in collection.attributeValues_) { attributeValues_.Add(value.Clone()); } }
/// <summary> /// Displays the values in an attribute collection. /// </summary> public void ShowDialog(TsCHdaServer server, Technosoftware.DaAeHdaClient.Hda.TsCHdaAttributeValueCollection values) { if (server == null) { throw new ArgumentNullException("server"); } attributesCtrl_.Initialize(server, values); ShowDialog(); }
/// <summary> /// Displays the values of an attribute. /// </summary> public void Initialize(TsCHdaServer server, Technosoftware.DaAeHdaClient.Hda.TsCHdaAttributeValueCollection values) { mServer_ = server; attributesLv_.Items.Clear(); if (values != null) { foreach (Technosoftware.DaAeHdaClient.Hda.TsCHdaAttributeValue value in values) { AddListItem(value); } AdjustColumns(); } }
/// <summary> /// Unmarshals and deallocates an OPCHDA_ATTRIBUTE structure. /// </summary> internal static Technosoftware.DaAeHdaClient.Hda.TsCHdaAttributeValueCollection GetAttributeValueCollection(IntPtr pInput, bool deallocate) { Technosoftware.DaAeHdaClient.Hda.TsCHdaAttributeValueCollection output = null; if (pInput != IntPtr.Zero) { object item = Marshal.PtrToStructure(pInput, typeof(OpcRcw.Hda.OPCHDA_ATTRIBUTE)); output = GetAttributeValueCollection((OpcRcw.Hda.OPCHDA_ATTRIBUTE)item, deallocate); if (deallocate) { Marshal.DestroyStructure(pInput, typeof(OpcRcw.Hda.OPCHDA_ATTRIBUTE)); } } return(output); }
/// <summary> /// Unmarshals and deallocates an OPCHDA_ATTRIBUTE structure. /// </summary> internal static Technosoftware.DaAeHdaClient.Hda.TsCHdaAttributeValueCollection GetAttributeValueCollection(OpcRcw.Hda.OPCHDA_ATTRIBUTE input, bool deallocate) { Technosoftware.DaAeHdaClient.Hda.TsCHdaAttributeValueCollection output = new Technosoftware.DaAeHdaClient.Hda.TsCHdaAttributeValueCollection(); output.AttributeID = input.dwAttributeID; object[] values = Com.Interop.GetVARIANTs(ref input.vAttributeValues, input.dwNumValues, deallocate); DateTime[] timestamps = Technosoftware.DaAeHdaClient.Utilities.Interop.GetDateTimes(ref input.ftTimeStamps, input.dwNumValues, deallocate); for (int ii = 0; ii < input.dwNumValues; ii++) { Technosoftware.DaAeHdaClient.Hda.TsCHdaAttributeValue value = new Technosoftware.DaAeHdaClient.Hda.TsCHdaAttributeValue(); value.Value = values[ii]; value.Timestamp = timestamps[ii]; output.Add(value); } return(output); }
/// <summary> /// Called when an asynchronous read attributes request completes. /// </summary> public void OnReadAttributeComplete( int dwTransactionID, int hrStatus, int hClient, int dwNumItems, OPCHDA_ATTRIBUTE[] pAttributeValues, int[] phrErrors) { try { lock (this) { // lookup request transaction. Request request = (Request)m_requests[dwTransactionID]; if (request == null) { return; } // create item object to collect results. TsCHdaItemAttributeCollection item = new TsCHdaItemAttributeCollection(); item.ServerHandle = hClient; // unmarshal results. Technosoftware.DaAeHdaClient.Hda.TsCHdaAttributeValueCollection[] results = new Technosoftware.DaAeHdaClient.Hda.TsCHdaAttributeValueCollection[pAttributeValues.Length]; for (int ii = 0; ii < pAttributeValues.Length; ii++) { results[ii] = Interop.GetAttributeValueCollection(pAttributeValues[ii], false); results[ii].Result = Technosoftware.DaAeHdaClient.Utilities.Interop.GetResultID(phrErrors[ii]); item.Add(results[ii]); } // invoke callback - remove request if all results arrived. if (request.InvokeCallback(item)) { m_requests.Remove(request.RequestID); } } } catch (Exception exception) { HandleException(dwTransactionID, exception); } }
/// <summary> /// Returns the value of the specified field. /// </summary> private object GetFieldValue(object attribute, int fieldId) { // display result code. if (typeof(IOpcResult).IsInstanceOfType(attribute)) { switch (fieldId) { case NumberResult: { return(((Technosoftware.DaAeHdaClient.Hda.TsCHdaAttributeValueCollection)attribute).Result); } } } // displaying attribute descriptions. if (typeof(Technosoftware.DaAeHdaClient.Hda.TsCHdaAttribute).IsInstanceOfType(attribute)) { if (attributesLv_.CheckBoxes) { switch (fieldId) { case NumberName: { return(((Technosoftware.DaAeHdaClient.Hda.TsCHdaAttribute)attribute).Name); } } } else { switch (fieldId) { case NumberName: { return(((Technosoftware.DaAeHdaClient.Hda.TsCHdaAttribute)attribute).Name); } case NumberDataType: { return(((Technosoftware.DaAeHdaClient.Hda.TsCHdaAttribute)attribute).DataType); } case NumberDescription: { return(((Technosoftware.DaAeHdaClient.Hda.TsCHdaAttribute)attribute).Description); } } } } // displaying attribute results. if (typeof(Technosoftware.DaAeHdaClient.Hda.TsCHdaAttributeValueCollection).IsInstanceOfType(attribute)) { Technosoftware.DaAeHdaClient.Hda.TsCHdaAttributeValueCollection collection = (Technosoftware.DaAeHdaClient.Hda.TsCHdaAttributeValueCollection)attribute; switch (fieldId) { case NumberName: { Technosoftware.DaAeHdaClient.Hda.TsCHdaAttribute description = mServer_.Attributes.Find(collection.AttributeID); if (description != null) { return(description.Name); } return(null); } case NumberNumValues: { if (collection.Count > 1) { return(collection.Count); } return(null); } case NumberValue: { if (collection.Count == 1) { return(collection[0].Value); } return(null); } } } // displaying attribute values. if (typeof(Technosoftware.DaAeHdaClient.Hda.TsCHdaAttributeValue).IsInstanceOfType(attribute)) { switch (fieldId) { case NumberTimestamp: { return(((Technosoftware.DaAeHdaClient.Hda.TsCHdaAttributeValue)attribute).Timestamp); } case NumberValue: { return(((Technosoftware.DaAeHdaClient.Hda.TsCHdaAttributeValue)attribute).Value); } } } return(null); }