Example #1
0
 /// <summary>
 /// Initializes object with the specified ItemValueResult object.
 /// </summary>
 public ItemValueResult(ItemValueResult item)
     : base(item)
 {
     if (item != null)
     {
         ResultID       = item.ResultID;
         DiagnosticInfo = item.DiagnosticInfo;
     }
 }
Example #2
0
        /// <summary>
        /// Creates an array of item value result objects from the callback data.
        /// </summary>
        private ItemValueResult[] UnmarshalValues(
            int dwCount,
            int[]                phClientItems,
            object[]             pvValues,
            short[]              pwQualities,
            OpcRcw.Da.FILETIME[] pftTimeStamps,
            int[]                pErrors)
        {
            // contruct the item value results.
            ItemValueResult[] values = new ItemValueResult[dwCount];

            for (int ii = 0; ii < values.Length; ii++)
            {
                // lookup the external client handle.
                ItemIdentifier itemID = (ItemIdentifier)m_group.Items[phClientItems[ii]];

                values[ii] = new ItemValueResult(itemID);
                //values[ii].ClientHandle       = phClientItems[ii];
                values[ii].Value            = pvValues[ii];
                values[ii].Quality          = new Quality(pwQualities[ii]);
                values[ii].QualitySpecified = true;
                FILETIME output = new FILETIME();
                output.dwLowDateTime          = pftTimeStamps[ii].dwLowDateTime;
                output.dwHighDateTime         = pftTimeStamps[ii].dwHighDateTime;
                values[ii].Timestamp          = OpcDa.Client.Com.Interop.GetFILETIME(output);
                values[ii].TimestampSpecified = values[ii].Timestamp != DateTime.MinValue;
                values[ii].ResultID           = OpcDa.Client.Com.Interop.GetResultID(pErrors[ii]);
                values[ii].DiagnosticInfo     = null;

                // convert COM code to unified DA code.
                if (pErrors[ii] == ResultIDs.E_BADRIGHTS)
                {
                    values[ii].ResultID = new ResultID(ResultID.Da.E_WRITEONLY, ResultIDs.E_BADRIGHTS);
                }
            }

            // return results
            return(values);
        }