Ejemplo n.º 1
0
        /// <summary>
        /// Unmarshals and deallocates an OPCHDA_ANNOTATION structure.
        /// </summary>
        internal static TsCHdaAnnotationValueCollection GetAnnotationValueCollection(OpcRcw.Hda.OPCHDA_ANNOTATION input, bool deallocate)
        {
            TsCHdaAnnotationValueCollection output = new TsCHdaAnnotationValueCollection();

            output.ClientHandle = input.hClient;

            DateTime[] timestamps    = Utilities.Interop.GetDateTimes(ref input.ftTimeStamps, input.dwNumValues, deallocate);
            string[]   annotations   = Utilities.Interop.GetUnicodeStrings(ref input.szAnnotation, input.dwNumValues, deallocate);
            DateTime[] creationTimes = Utilities.Interop.GetDateTimes(ref input.ftAnnotationTime, input.dwNumValues, deallocate);
            string[]   users         = Utilities.Interop.GetUnicodeStrings(ref input.szUser, input.dwNumValues, deallocate);

            for (int ii = 0; ii < input.dwNumValues; ii++)
            {
                TsCHdaAnnotationValue value = new TsCHdaAnnotationValue();

                value.Timestamp    = timestamps[ii];
                value.Annotation   = annotations[ii];
                value.CreationTime = creationTimes[ii];
                value.User         = users[ii];

                output.Add(value);
            }

            return(output);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Unmarshals and deallocates an array of OPCHDA_ANNOTATION structures.
        /// </summary>
        internal static TsCHdaAnnotationValueCollection[] GetAnnotationValueCollections(ref IntPtr pInput, int count, bool deallocate)
        {
            TsCHdaAnnotationValueCollection[] output = null;

            if (pInput != IntPtr.Zero && count > 0)
            {
                output = new TsCHdaAnnotationValueCollection[count];

                IntPtr pos = pInput;

                for (int ii = 0; ii < count; ii++)
                {
                    output[ii] = GetAnnotationValueCollection(pos, deallocate);
                    pos        = (IntPtr)(pos.ToInt64() + Marshal.SizeOf(typeof(OpcRcw.Hda.OPCHDA_ANNOTATION)));
                }

                if (deallocate)
                {
                    Marshal.FreeCoTaskMem(pInput);
                    pInput = IntPtr.Zero;
                }
            }

            return(output);
        }
        /// <summary>
        /// Returns the set of item values stored in the list control.
        /// </summary>
        public TsCHdaAnnotationValueCollection GetValues()
        {
            TsCHdaAnnotationValueCollection values = new TsCHdaAnnotationValueCollection();

            foreach (ListViewItem listItem in ValuesLV.Items)
            {
                if (typeof(TsCHdaAnnotationValue).IsInstanceOfType(listItem.Tag))
                {
                    values.Add(listItem.Tag);
                }
            }

            return(values);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Unmarshals and deallocates an OPCHDA_ANNOTATION structure.
        /// </summary>
        internal static TsCHdaAnnotationValueCollection GetAnnotationValueCollection(IntPtr pInput, bool deallocate)
        {
            TsCHdaAnnotationValueCollection output = null;

            if (pInput != IntPtr.Zero)
            {
                object item = Marshal.PtrToStructure(pInput, typeof(OpcRcw.Hda.OPCHDA_ANNOTATION));

                output = GetAnnotationValueCollection((OpcRcw.Hda.OPCHDA_ANNOTATION)item, deallocate);

                if (deallocate)
                {
                    Marshal.DestroyStructure(pInput, typeof(OpcRcw.Hda.OPCHDA_ANNOTATION));
                }
            }

            return(output);
        }
        /// <summary>
        /// Initializes the control with a set of items.
        /// </summary>
        public void Initialize(TsCHdaServer server, TsCHdaAnnotationValueCollection values)
        {
            m_server = server;
            m_item   = values;

            ValuesLV.Items.Clear();

            if (values != null)
            {
                // add item values to list.
                foreach (TsCHdaAnnotationValue value in values)
                {
                    AddListItem(value, -1);
                }

                // adjust the list view columns to fit the data.
                AdjustColumns();
            }
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Called when an asynchronous read annotations request completes.
        /// </summary>
        public void OnReadAnnotations(
            int dwTransactionID,
            int hrStatus,
            int dwNumItems,
            OPCHDA_ANNOTATION[] pAnnotationValues,
            int[]               phrErrors)
        {
            try
            {
                lock (this)
                {
                    // lookup request transaction.
                    Request request = (Request)m_requests[dwTransactionID];

                    if (request == null)
                    {
                        return;
                    }

                    // unmarshal results.
                    TsCHdaAnnotationValueCollection[] results = new TsCHdaAnnotationValueCollection[pAnnotationValues.Length];

                    for (int ii = 0; ii < pAnnotationValues.Length; ii++)
                    {
                        results[ii] = Interop.GetAnnotationValueCollection(pAnnotationValues[ii], false);

                        results[ii].ServerHandle = pAnnotationValues[ii].hClient;
                        results[ii].Result       = Technosoftware.DaAeHdaClient.Utilities.Interop.GetResultID(phrErrors[ii]);
                    }

                    // invoke callback - remove request if all results arrived.
                    if (request.InvokeCallback(results))
                    {
                        m_requests.Remove(request.RequestID);
                    }
                }
            }
            catch (Exception exception)
            {
                HandleException(dwTransactionID, exception);
            }
        }