示例#1
0
        }                 //	end HandleReadRequests

        public override int HandleWriteRequests()
        {
            int       count   = Requests.Count;
            MySession pClient = (MySession)Session;

            for (int i = 0; i < count; i++)
            {
                DaRequest request = Requests[i] as DaRequest;
                if ((request != null) && (request.ProgressRequestState(EnumRequestState.CREATED, EnumRequestState.INPROGRESS) == true))
                {
                    MyDaAddressSpaceElement element = (MyDaAddressSpaceElement)request.AddressSpaceElement;
                    if (element != null)
                    {
                        if (pClient.Equals(MySession.s_controlingSession))
                        {
                            ValueQT valueQT = request.Value;
                            request.Result = (EnumResultCode)element.ValueChanged(valueQT);
                        }
                        else
                        {
                            request.Result = EnumResultCode.E_ACCESSDENIED;
                        } //	end if
                    }     //	end if
                }         //	end if
            }             //	end for
            return(CompleteRequests());
        }                 //	end HandleWriteRequests
        }           //	end constructor

        public override int HandleReadRequests()
        {
            int count = Requests.Count;

            for (int i = 0; i < count; i++)
            {
                DaRequest request = Requests[i] as DaRequest;
                if ((request != null) && (request.ProgressRequestState(EnumRequestState.CREATED, EnumRequestState.INPROGRESS) == true))
                {
                    if (request.PropertyId == 0)
                    {
                        // get address space element value
                        // take the toolkit cache value
                        ValueQT valueQT = null;
                        request.AddressSpaceElement.GetCacheValue(ref valueQT);
                        request.Value  = valueQT;
                        request.Result = EnumResultCode.S_OK;
                    }
                    else
                    {
                        // get property value
                        // get the value from the address space element
                        MyDaAddressSpaceElement element = request.AddressSpaceElement as MyDaAddressSpaceElement;
                        request.Value  = new ValueQT(element.ObjectType, EnumQuality.GOOD, DateTime.Now);
                        request.Result = EnumResultCode.S_OK;
                    }       //	end if ... else
                }           //	end if
            }               //	end for

            return(CompleteRequests());
        }           //	end HandleReadRequests
        }               //	enc ctr

        //-
        #endregion

        #region         //	Public Override Methods
        //---------------------------------

        public override int HandleReadRequests()
        {
            int count = Requests.Count;

            for (int i = 0; i < count; i++)
            {
                DaRequest request = Requests[i] as DaRequest;

                if ((request != null) && (request.ProgressRequestState(EnumRequestState.CREATED, EnumRequestState.INPROGRESS) == true))
                {
                    DaBaseElement element = request.AddressSpaceElement as DaBaseElement;

                    if (element != null)
                    {
                        element.HandleReadRequest(request);
                    }
                    else
                    {
                        request.Result = EnumResultCode.E_FAIL;
                        request.Value  = null;
                        request.Complete();
                    }   //	end if ... else
                }
            }
            return((int)EnumResultCode.S_OK);
        }               //	end HandleReadRequests
示例#4
0
 public override void HandleWriteRequest(DaRequest request)
 {
     if (request.PropertyId == 0)
     {
         ValueQT cacheValue = null;
         request.AddressSpaceElement.GetCacheValue(ref cacheValue);
         request.AddressSpaceElement.ValueChanged(cacheValue);
         request.Value  = cacheValue;
         request.Result = EnumResultCode.S_OK;
     }
     else if (request.PropertyId == 6020)
     {
         Function daElement = request.AddressSpaceElement as Function;
         if (daElement != null)
         {
             ValueQT writeValue = request.Value;
             daElement.SetValue(writeValue);
             request.Result = EnumResultCode.S_OK;
         }
         else
         {
             request.Result = EnumResultCode.S_FALSE;
         }
     }
     else
     {
         request.Result = EnumResultCode.S_FALSE;
     }
 }
        public override void HandleWriteRequest(DaRequest request)
        {
            DemoDaAddressSpaceElement daElement = request.AddressSpaceElement as DemoDaAddressSpaceElement;

            if (daElement != null)
            {
                if (m_timeType == TimeType.type_limitSecond)
                {
                    ValueQT writeValue = request.Value;
                    if ((Byte)writeValue.Data <= 59)
                    {
                        daElement.ValueChanged(writeValue);
                        request.Result = EnumResultCode.S_OK;
                    }
                    else
                    {
                        request.Result = EnumResultCode.S_FALSE;
                    }
                }
            }
            else
            {
                request.Result = EnumResultCode.S_FALSE;
            }
        }
示例#6
0
        public override void HandleWriteRequest(DaRequest request)
        {
            DemoDaAddressSpaceElement daElement = request.AddressSpaceElement as DemoDaAddressSpaceElement;

            if (daElement != null)
            {
                ValueQT value = request.Value;
                daElement.ValueChanged(value);
                request.Result = EnumResultCode.S_OK;

                //generate the event
                ArrayList attributeValues = new ArrayList(1);
                attributeValues.Add((Byte)value.Data);
                char    charPressed = (char)((Byte)value.Data);
                AeEvent keyEvent    = new AeEvent(EnumEventType.TRACKING, "keyboard.key", Console.CATEGORY_ID_KEY_HIT);
                keyEvent.Severity = 600;
                String message = "key hit : ";
                message                    += charPressed.ToString();
                keyEvent.Message            = message;
                keyEvent.AttributeValueList = attributeValues;
                keyEvent.Fire();
            }
            else
            {
                request.Result = EnumResultCode.S_FALSE;
            }
        }
        }           //	end constructor

        public override int HandleReadRequests()
        {
            int count = Requests.Count;

            for (int i = 0; i < count; i++)
            {
                DaRequest request = (DaRequest)Requests[i];
                if (request.PropertyId == 0)
                {
                    // get address space element value
                    // take the Toolkit cache value
                    ValueQT cacheValue = null;
                    request.AddressSpaceElement.GetCacheValue(ref cacheValue);
                    request.Value  = cacheValue;
                    request.Result = EnumResultCode.S_OK;
                }
                else
                {
                    // get property value
                    // get the value from the address space element
                    MyDaAddressSpaceElement element = request.AddressSpaceElement as MyDaAddressSpaceElement;
                    if (element != null)
                    {
                        element.GetPropertyValue(request);
                    }
                    else
                    {
                        request.Result = EnumResultCode.E_FAIL;
                    } //	end if ... else
                }     //	end if ... else
            }         //	end for
            return(CompleteRequests());
        }             //	end HandleReadRequests
        }         // end init

        public override void HandleReadRequest(DaRequest request)
        {
            ValueQT cacheValue = null;

            request.AddressSpaceElement.GetCacheValue(ref cacheValue);
            request.Value  = cacheValue;
            request.Result = EnumResultCode.S_OK;
        }
示例#9
0
        }           //	end QueryProperties

        /// <summary>
        /// Get elements property value data
        /// </summary>
        public void GetPropertyValue(DaRequest aRequest)
        {
            if (aRequest.PropertyId == 101)
            {
                aRequest.Value  = new ValueQT("item description", EnumQuality.GOOD, DateTime.Now);
                aRequest.Result = EnumResultCode.S_OK;
            } //	end if
        }     //	end GetPropertyValue
示例#10
0
        }           //	end ctr

        //-
        #endregion

        #region         //	Public Methods
        //------------------------

        /// <summary>
        /// HandleReadRequest
        /// </summary>
        public override void HandleReadRequest(DaRequest aRequest)
        {
            System.Diagnostics.Debug.Assert(aRequest.PropertyId == this.Id,
                                            "HandleRequest called with illegal request");
            Application.Instance.Trace(EnumTraceLevel.INF, EnumTraceGroup.OPCSERVER, "ComandProperty::HandleReadRequest", (string)this.CommandValue);
            aRequest.Result = EnumResultCode.S_OK;
            aRequest.Value  = new ValueQT(this.CommandValue, EnumQuality.GOOD, DateTime.Now);
            aRequest.Complete();
        }           //	end HandleReadRequest
示例#11
0
        }           //	end ExecuteCommand

        //-
        #endregion

        #region         //	Protected Methods
        //---------------------------

        /// <summary>
        /// HandleItemReadRequest
        /// </summary>
        protected virtual void HandleItemReadRequest(DaRequest aRequest)
        {
            ValueQT cacheValue = null;

            this.GetCacheValue(ref cacheValue);
            aRequest.Value  = cacheValue;
            aRequest.Result = EnumResultCode.S_OK;
            aRequest.Complete();
        }           //	end HandleItemReadRequest
示例#12
0
        }           //	end ctr

        //-
        #endregion

        #region         //	Public Methods
        //------------------------

        /// <summary>
        /// HandleRequest
        /// </summary>
        public override void HandleReadRequest(DaRequest aRequest)
        {
            System.Diagnostics.Debug.Assert(aRequest.PropertyId == this.Id,
                                            "HandleRequest called with illegal request");

            //	Meant to be obverriden, just return failed
            aRequest.Result = EnumResultCode.S_OK;
            aRequest.Value  = new ValueQT(this.m_dataPointTypeValue, EnumQuality.GOOD, DateTime.Now);
            aRequest.Complete();
        }           //	end HandleReadRequest
示例#13
0
        public override void HandleWriteRequest(DaRequest request)
        {
            AlarmSimulation daElement = request.AddressSpaceElement as AlarmSimulation;

            if (daElement != null)
            {
                ValueQT value = request.Value;
                daElement.ValueChanged(value);
                request.Result = EnumResultCode.S_OK;

                // generate the event
                ArrayList attributeValues = new ArrayList(1);
                attributeValues.Add((Boolean)value.Data);
                String  actorId = "alarm.simulation";
                String  message = "Boolean value: ";
                Boolean boolVal = (Boolean)value.Data;
                if (boolVal)
                {
                    message += "TRUE";
                }
                else
                {
                    message += "FALSE";
                }
                switch (daElement.m_alarmType)
                {
                case AlarmType.simple:
                    AeEvent fireSimpleEvent = new AeEvent(
                        EnumEventType.SIMPLE, "alarm simulation.fire simple event", Console.CATEGORY_ID_DA_WRITE_SIMPLE);
                    fireSimpleEvent.Severity           = 700;
                    fireSimpleEvent.ActorId            = actorId;
                    fireSimpleEvent.Message            = message;
                    fireSimpleEvent.AttributeValueList = attributeValues;
                    fireSimpleEvent.Fire();
                    break;

                case AlarmType.tracking:
                    AeEvent fireTrackingEvent = new AeEvent(
                        EnumEventType.SIMPLE, "alarm simulation.fire tracking event", Console.CATEGORY_ID_DA_WRITE_TRACKING);
                    fireTrackingEvent.Severity           = 750;
                    fireTrackingEvent.ActorId            = actorId;
                    fireTrackingEvent.Message            = message;
                    fireTrackingEvent.AttributeValueList = attributeValues;
                    fireTrackingEvent.Fire();
                    break;
                }
            }
            else
            {
                request.Result = EnumResultCode.S_FALSE;
            }
        }
示例#14
0
        }           //	Attribute Type

        //--
        #endregion

        #region Public Methods
        //---------------------

        /// <summary>
        /// Get elements property value data
        /// </summary>
        public void GetPropertyValue(DaRequest aRequest)
        {
            if (aRequest.PropertyId == 101)
            {
                aRequest.Value = new ValueQT(
                    "description",
                    EnumQuality.GOOD,
                    DateTime.Now);
                aRequest.Result = EnumResultCode.S_OK;
            }
            else if (aRequest.PropertyId == 6020)
            {
                Function functionEl = (Function)(this);
                aRequest.Value = new ValueQT(
                    functionEl.Angle,
                    EnumQuality.GOOD,
                    DateTime.Now);
                aRequest.Result = EnumResultCode.S_OK;
            }
            else if (aRequest.PropertyId == 102)
            {
                aRequest.Value = new ValueQT(
                    1.0,
                    EnumQuality.GOOD,
                    DateTime.Now);
                aRequest.Result = EnumResultCode.S_OK;
            }
            else if (aRequest.PropertyId == 103)
            {
                aRequest.Value = new ValueQT(
                    -1.0,
                    EnumQuality.GOOD,
                    DateTime.Now);
                aRequest.Result = EnumResultCode.S_OK;
            }
            else
            {
                if (m_properties.ContainsKey(aRequest.PropertyId))
                {
                    DaConstantProperty property = m_properties[aRequest.PropertyId] as DaConstantProperty;
                    if (property != null)
                    {
                        aRequest.Value  = property.Value;
                        aRequest.Result = EnumResultCode.S_OK;
                    } //	end if
                }     // end if
            }
        }             //	end GetPropertyValue
示例#15
0
        public override void HandleReadRequest(DaRequest request)
        {
            DemoDaAddressSpaceElement daElement = request.AddressSpaceElement as DemoDaAddressSpaceElement;

            if (daElement != null)
            {
                ValueQT cacheValue = null;
                request.AddressSpaceElement.GetCacheValue(ref cacheValue);
                request.Value  = cacheValue;
                request.Result = EnumResultCode.S_OK;
            }
            else
            {
                request.Result = EnumResultCode.S_FALSE;
            }
        }
        }           //	end SetIsChanging

        //--
        #endregion

        #region Public Methods
        //---------------------

        /// <summary>
        /// Get elements property value data
        /// </summary>
        public void GetPropertyValue(DaRequest aRequest)
        {
            if (aRequest.PropertyId == (int)EnumPropertyId.ITEM_DESCRIPTION)
            {
                aRequest.Value = new ValueQT(
                    "description",
                    EnumQuality.GOOD,
                    DateTime.Now);

                aRequest.Result = EnumResultCode.S_OK;
            }
            else
            {
                aRequest.Result = EnumResultCode.E_NOTFOUND;
            }       //	end if ... else
        }           //	end GetPropertyValue
示例#17
0
        public override void HandleWriteRequest(DaRequest request)
        {
            DemoDaAddressSpaceElement daElement = request.AddressSpaceElement as DemoDaAddressSpaceElement;

            if (daElement != null)
            {
                ValueQT writeValue = request.Value;
                daElement.ValueChanged(writeValue);
                request.Result = EnumResultCode.S_OK;
                // generate the interval period changing
                Console.DA_SLEEP_INTERVAL = (UInt32)(writeValue.Data);
            }
            else
            {
                request.Result = EnumResultCode.S_FALSE;
            }
        }
示例#18
0
        public override void HandleWriteRequest(DaRequest request)
        {
            DemoDaAddressSpaceElement daElement = request.AddressSpaceElement as DemoDaAddressSpaceElement;

            if (daElement != null)
            {
                ValueQT writeValue = request.Value;
                daElement.ValueChanged(writeValue);
                request.Result = EnumResultCode.S_OK;
                // ser the boolean flag for the DA simulation thread
                Boolean boolVal = (Boolean)writeValue.Data;
                Console.DO_SIMULATION = boolVal;
            }
            else
            {
                request.Result = EnumResultCode.S_FALSE;
            }
        }
示例#19
0
        }           //	enc ctr

        public override int HandleReadRequests()
        {
            lock (m_requestJanitor)
            {
                int count = Requests.Count;

                for (int i = 0; i < count; i++)
                {
                    DaRequest currentRequest = Requests[i] as DaRequest;

                    if ((currentRequest != null) && (currentRequest.ProgressRequestState(EnumRequestState.CREATED, EnumRequestState.INPROGRESS) == true))
                    {
                        MyDaAddressSpaceElement requestElement = currentRequest.AddressSpaceElement as MyDaAddressSpaceElement;

                        if (requestElement != null)
                        {
                            if (currentRequest.PropertyId == 0)
                            {
                                ValueQT cacheValue = null;
                                requestElement.GetCacheValue(ref cacheValue);
                                currentRequest.Value  = cacheValue;
                                currentRequest.Result = EnumResultCode.S_OK;
                            }
                            else
                            {
                                requestElement.GetPropertyValue(currentRequest);
                            }                               //	end if ... else
                        }
                        else
                        {
                            currentRequest.Result = EnumResultCode.E_FAIL;
                        }                           //	end if ... else
                    }
                    else
                    {
                        // this is not a request ???
                        Application.Instance.Trace(EnumTraceLevel.ERR, EnumTraceGroup.USER1,
                                                   "MyTransaction", "HandleReadRequests - received a non request element in the request's array List");
                    }               //	end if ... else
                }                   //	end for

                return(CompleteRequests());
            }
        }           //	end HandleReadRequests
        }             //	end HandleReadRequests

        public override int HandleWriteRequests()
        {
            int count = Requests.Count;

            for (int i = 0; i < count; i++)
            {
                DaRequest request = Requests[i] as DaRequest;
                if (request != null)
                {
                    MyDaAddressSpaceElement element = (MyDaAddressSpaceElement)request.AddressSpaceElement;
                    if (element != null)
                    {
                        ValueQT valueQT = request.Value;
                        request.Result = (EnumResultCode)element.ValueChanged(valueQT);
                    } //	end if
                }     //	end if
            }         //	end for
            return(CompleteRequests());
        }             //	end HandleWriteRequests
示例#21
0
        }           //	end HandleReadRequest

        /// <summary>
        /// Handles a write request
        /// </summary>
        public virtual void HandleWriteRequest(DaRequest aRequest)
        {
            if (aRequest.PropertyId != 0)
            {
                DaProperty daProperty = m_properties[aRequest.PropertyId] as DaProperty;
                if (daProperty != null)
                {
                    daProperty.HandleWriteRequest(aRequest);
                }
                else
                {
                    aRequest.Result = EnumResultCode.E_FAIL;
                    aRequest.Complete();
                }                   //	end if ... else
            }
            else
            {
                HandleItemWriteRequest(aRequest);
            }       //	end if ... else
        }           //	end HandleWriteRequest
示例#22
0
        }           //	end HandleReadRequests

        public override int HandleWriteRequests()
        {
            lock (m_requestJanitor)
            {
                int count = Requests.Count;
                for (int i = 0; i < count; i++)
                {
                    DaRequest currentRequest = Requests[i] as DaRequest;
                    if ((currentRequest != null) && (currentRequest.ProgressRequestState(EnumRequestState.CREATED, EnumRequestState.INPROGRESS) == true))
                    {
                        MyDaAddressSpaceElement requestElement = currentRequest.AddressSpaceElement as MyDaAddressSpaceElement;
                        if (requestElement != null)
                        {
                            currentRequest.Result = (EnumResultCode)requestElement.ValueChanged(currentRequest.Value);
                        }           //	end if
                    }               //	end if
                }                   //	end for

                return(CompleteRequests());
            }       //  end lock
        }           //	end HandleWriteRequests
示例#23
0
        }           //	end constructor

        public override int HandleReadRequests()
        {
            int count = Requests.Count;

            for (int i = 0; i < count; i++)
            {
                DaRequest request = (DaRequest)Requests[i];
                if ((request != null) && (request.ProgressRequestState(EnumRequestState.CREATED, EnumRequestState.INPROGRESS) == true))
                {
                    if (request.PropertyId == 0)
                    {
                        // get address space element value
                        // take the toolkit cache value
                        ValueQT cacheValue = null;
                        request.AddressSpaceElement.GetCacheValue(ref cacheValue);
                        if (cacheValue == null)
                        {
                            request.AddressSpaceElement.QueryCacheValue((MySession)Session, ref cacheValue);
                        }
                        request.Value  = cacheValue;
                        request.Result = EnumResultCode.S_OK;
                    }
                    else
                    {
                        // get property value
                        // get the value from the address space element
                        MyDaAddressSpaceElement element = request.AddressSpaceElement as MyDaAddressSpaceElement;
                        if (element != null)
                        {
                            element.GetPropertyValue(request);
                        }
                        else
                        {
                            request.Result = EnumResultCode.E_FAIL;
                        } //	end if ... else
                    }     //	end if ... else
                }         //  end if
            }             //	end for
            return(CompleteRequests());
        }                 //	end HandleReadRequests
示例#24
0
        }           //	end HandleReadRequests

        public override int HandleWriteRequests()
        {
            int count = Requests.Count;

            for (int i = 0; i < count; i++)
            {
                DaRequest request = Requests[i] as DaRequest;
                if ((request != null) && (request.ProgressRequestState(EnumRequestState.CREATED, EnumRequestState.INPROGRESS) == true))
                {
                    DemoDaAddressSpaceElement element = (DemoDaAddressSpaceElement)request.AddressSpaceElement;
                    if (element != null)
                    {
                        element.HandleWriteRequest(request);
                    }
                    else
                    {
                        request.Result = EnumResultCode.E_FAIL;
                    }
                }   //	end if
            }       //	end for
            return(CompleteRequests());
        }           //	end HandleWriteRequests
        }           //	Attribute Type

        //--
        #endregion

        #region Public Methods
        //---------------------

        /// <summary>
        /// Get elements property value data
        /// </summary>

        public void GetPropertyValue(DaRequest aRequest)
        {
            if (aRequest.PropertyId == 101)
            {
                if (Type == MyDaAddressSpaceElement.TYPE_RANDOM_100MS)
                {
                    aRequest.Value  = new ValueQT("Random value changing every 100 ms", EnumQuality.GOOD, DateTime.Now);
                    aRequest.Result = EnumResultCode.S_OK;
                }
                else if (Type == MyDaAddressSpaceElement.TYPE_RANDOM_1S)
                {
                    aRequest.Value  = new ValueQT("Random value changing every second", EnumQuality.GOOD, DateTime.Now);
                    aRequest.Result = EnumResultCode.S_OK;
                }
                else if (Type == MyDaAddressSpaceElement.TYPE_NODERANDOM)
                {
                    aRequest.Value  = new ValueQT("Random values", EnumQuality.GOOD, DateTime.Now);
                    aRequest.Result = EnumResultCode.S_OK;
                }                   //	end if ... else
            }
            else if (aRequest.PropertyId == 6020)
            {
                aRequest.Value  = new ValueQT(OpcServer.g_angle, EnumQuality.GOOD, DateTime.Now);
                aRequest.Result = EnumResultCode.S_OK;
            }
            else
            {
                if (m_properties.ContainsKey(aRequest.PropertyId))
                {
                    DaConstantProperty property = m_properties[aRequest.PropertyId] as DaConstantProperty;
                    if (property != null)
                    {
                        aRequest.Value  = property.Value;
                        aRequest.Result = EnumResultCode.S_OK;
                    } //	end if
                }     // end if
            }         //	end if ... else
        }             //	end GetPropertyValue
        }         //	end constructor

        //--
        #endregion


        #region Public Methods
        //---------------------

        /// <summary>
        /// Get elements property value data
        /// </summary>
        public void GetPropertyValue(DaRequest aRequest)
        {
            if (aRequest.PropertyId == (int)EnumPropertyId.ITEM_DESCRIPTION)
            {
                aRequest.Value = new ValueQT(
                    "Description",
                    EnumQuality.GOOD,
                    DateTime.Now);

                aRequest.Result = EnumResultCode.S_OK;
            }
            else if (aRequest.PropertyId == (int)EnumPropertyId.HIGH_EU)
            {
                // EU High property
                aRequest.Value = new ValueQT(
                    100.0,
                    EnumQuality.GOOD,
                    DateTime.Now);
                aRequest.Result = EnumResultCode.S_OK;
            }
            else if (aRequest.PropertyId == (int)EnumPropertyId.LOW_EU)
            {
                // EU Low property
                aRequest.Value = new ValueQT(
                    0.0,
                    EnumQuality.GOOD,
                    DateTime.Now);
                aRequest.Result = EnumResultCode.S_OK;
            }
            else if (aRequest.PropertyId == (int)EnumPropertyId.HIGH_INSTRUMENT_RANGE)
            {
                // InstrumentRange High property
                aRequest.Value = new ValueQT(
                    120.0,
                    EnumQuality.GOOD,
                    DateTime.Now);
                aRequest.Result = EnumResultCode.S_OK;
            }
            else if (aRequest.PropertyId == (int)EnumPropertyId.LOW_INSTRUMENT_RANGE)
            {
                // InstrumentRange Low property
                aRequest.Value = new ValueQT(
                    0.0,
                    EnumQuality.GOOD,
                    DateTime.Now);
                aRequest.Result = EnumResultCode.S_OK;
            }
            else if (aRequest.PropertyId == (int)EnumPropertyId.EU_UNITS)
            {
                // EngineeringUnits property
                aRequest.Value = new ValueQT(
                    0,
                    EnumQuality.GOOD,
                    DateTime.Now);
                aRequest.Result = EnumResultCode.S_OK;
            }
            else if (aRequest.PropertyId == 111)
            {
                // ValuePrecision property
                aRequest.Value = new ValueQT(
                    2.0,
                    EnumQuality.GOOD,
                    DateTime.Now);
                aRequest.Result = EnumResultCode.S_OK;
            }
            else if (m_properties.ContainsKey(aRequest.PropertyId))
            {
                DaConstantProperty property = m_properties[aRequest.PropertyId] as DaConstantProperty;
                if (property != null)
                {
                    aRequest.Value  = property.Value;
                    aRequest.Result = EnumResultCode.S_OK;
                }                       //	end if
            }
            else
            {
                aRequest.Result = EnumResultCode.E_NOTFOUND;
            }           //	end if ... else
        }               //	end GetPropertyValue
        public override void HandleReadRequest(DaRequest request)
        {
            DemoDaAddressSpaceElement daElement = request.AddressSpaceElement as DemoDaAddressSpaceElement;

            if (daElement != null)
            {
                ValueQT  value = new ValueQT();
                DateTime now   = DateTime.Now;
                if (m_timeType != TimeType.type_date)
                {
                    switch (m_timeZone)
                    {
                    case TimeZone.zone_local:
                        now = DateTime.Now;
                        break;

                    case TimeZone.zone_GMT:
                        now = DateTime.UtcNow;
                        break;
                    }
                    switch (m_timeType)
                    {
                    case TimeType.type_hour:
                        value.SetData((Byte)now.Hour, EnumQuality.GOOD, DateTime.Now);
                        break;

                    case TimeType.type_second:
                        value.SetData((Byte)now.Second, EnumQuality.GOOD, DateTime.Now);
                        break;

                    case TimeType.type_minute:
                        value.SetData((Byte)now.Minute, EnumQuality.GOOD, DateTime.Now);
                        break;

                    case TimeType.type_date:
                        value.SetData(now.Date, EnumQuality.GOOD, DateTime.Now);
                        break;

                    case TimeType.type_array:
                        Byte[] arrayByte = new Byte[3];
                        arrayByte[0] = (Byte)now.Hour;
                        arrayByte[1] = (Byte)now.Minute;
                        arrayByte[2] = (Byte)now.Second;
                        value.SetData(arrayByte, EnumQuality.GOOD, DateTime.Now);
                        break;

                    case TimeType.type_limitSecond:
                        ValueQT cacheValue = null;
                        request.AddressSpaceElement.GetCacheValue(ref cacheValue);
                        value.SetData(cacheValue.Data, EnumQuality.GOOD, DateTime.Now);
                        break;

                    case TimeType.type_string:
                        value.SetData(string.Format("{0:HH:mm:ss}", now), EnumQuality.GOOD, DateTime.Now);
                        break;
                    }
                }
                else
                {
                    value.SetData(now, EnumQuality.GOOD, DateTime.Now);
                }
                ValueChanged(value);
                request.Value  = value;
                request.Result = EnumResultCode.S_OK;
            }
            else
            {
                request.Result = EnumResultCode.S_FALSE;
            }
        }
 public override void HandleWriteRequest(DaRequest request)
 {
     request.Result = (EnumResultCode)request.AddressSpaceElement.ValueChanged(request.Value);
 }
示例#29
0
        }           //	end ctr

        //-
        #endregion

        #region         //	Protected Methods
        //---------------------------

        /// <summary>
        /// HandleItemWriteRequest
        /// </summary>
        protected override void HandleItemWriteRequest(DaRequest aRequest)
        {
            try
            {
                //	start parsing the received command
                aRequest.Result = EnumResultCode.E_FAIL;

                XmlDocument doc = new XmlDocument();
                doc.LoadXml((string)aRequest.Value.Data);
                Application.Instance.Trace(EnumTraceLevel.INF, EnumTraceGroup.OPCSERVER, "CommandElement::handleWrite", "Received xml text: " + (string)aRequest.Value.Data);

                bool xmlWithCommands = true;
                // xml text without commands node
                foreach (XmlNode command in doc.ChildNodes)
                {
                    //	locate the command
                    if (command.LocalName.ToLower() == "command")
                    {
                        xmlWithCommands = false;
                        string commandAddress     = command.Attributes["Adresse"].Value;
                        string commandName        = command.Attributes["Name"].Value;
                        string commandDescription = command.Attributes["Description"].Value;
                        aRequest.Result = (EnumResultCode)this.ExecuteCommands(commandAddress, commandName, commandDescription);
                        if (ResultCode.SUCCEEDED(aRequest.Result))
                        {
                            Application.Instance.Trace(EnumTraceLevel.INF, EnumTraceGroup.OPCSERVER, "CommandElement::handleWrite", "Command executed on: " + commandAddress + " description: " + commandDescription + " name and value: " + commandName);
                            aRequest.Result = (EnumResultCode)this.ValueChanged(aRequest.Value);
                        }
                        else
                        {
                            Application.Instance.Trace(EnumTraceLevel.WRN, EnumTraceGroup.OPCSERVER, "CommandElement::handleWrite", "Command could not be executed on: " + commandAddress + " description: " + commandDescription + " name and value: " + commandName);
                        }         // end if .. else
                    }             //	end if
                }                 // end foreach

                if (xmlWithCommands == true)
                {
                    foreach (XmlNode commands in doc.ChildNodes)
                    {
                        //	locate the command
                        if (commands.LocalName.ToLower() == "commands")
                        {
                            foreach (XmlNode command in commands.ChildNodes)
                            {
                                //	locate the command
                                if (command.LocalName.ToLower() == "command")
                                {
                                    string commandAddress     = command.Attributes["Address"].Value;
                                    string commandName        = command.Attributes["Name"].Value;
                                    string commandDescription = command.Attributes["Description"].Value;
                                    aRequest.Result = (EnumResultCode)this.ExecuteCommands(commandAddress, commandName, commandDescription);
                                    if (ResultCode.SUCCEEDED(aRequest.Result))
                                    {
                                        Application.Instance.Trace(EnumTraceLevel.INF, EnumTraceGroup.OPCSERVER, "CommandElement::handleWrite", "Command executed on: " + commandAddress + " description: " + commandDescription + " name and value: " + commandName);
                                        aRequest.Result = (EnumResultCode)this.ValueChanged(aRequest.Value);
                                    }
                                    else
                                    {
                                        Application.Instance.Trace(EnumTraceLevel.WRN, EnumTraceGroup.OPCSERVER, "CommandElement::handleWrite", "Command could not be executed on: " + commandAddress + " description: " + commandDescription + " name and value: " + commandName);
                                    } // end if .. else
                                }     //	end if
                            }         // end foreach
                        }             // end if
                    }                 // end foreach
                }                     // end if
            }
            catch
            {
                aRequest.Result = EnumResultCode.E_FAIL;
            }
            finally
            {
                aRequest.Complete();
            }       //	end try ... catch ... finally
        }           //	end HandleItemWriteRequest
示例#30
0
        }           //	end HandleItemReadRequest

        /// <summary>
        /// HandleItemWriteRequest
        /// </summary>
        protected virtual void HandleItemWriteRequest(DaRequest aRequest)
        {
            aRequest.Result = EnumResultCode.E_BADRIGHTS;
            aRequest.Complete();
        }           //	end HandleItemWriteRequest