/// <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);
        }
Example #2
0
        /// <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());
            }
        }
Example #3
0
        /// <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);
        }
Example #7
0
        /// <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);
        }