/// <summary>
 /// Handles the open a close of the door in the refrigerator.
 /// </summary>
 /// <param name="context">Server Context</param>
 /// <param name="method">The method called.</param>
 /// <param name="inputarguments">The input arguments for the method that was called.</param>
 /// <param name="outputarguments">The output arguments for the method that was created.</param>
 /// <returns></returns>
 private ServiceResult OnOpenDoorCall(ISystemContext context, MethodState method, IList <object> inputarguments, IList <object> outputarguments)
 {
     if (inputarguments.Count != 1)
     {
         return(StatusCodes.BadArgumentsMissing);
     }
     if (Refrigerator.SetChildValue(context, DoorState.BrowseName, (bool)inputarguments[0], false))
     {
         return(ServiceResult.Good);
     }
     return(StatusCodes.Bad);
 }
        /// <summary>
        /// Creates a new refrigerator.
        /// </summary>
        /// <returns>Returns a reference for the new refrigerator created.</returns>
        private void CreateRefrigerator()
        {
            Refrigerator        = m_nodeFactory.CreateObject(m_parentNode, m_refrigeratorName, m_refrigeratorName, m_namespaceindex);
            ActualTemperature   = m_nodeFactory.CreateVariable(Refrigerator, "ActualTemperature", "ActualTemperature", BuiltInType.Double, ValueRanks.Scalar, m_namespaceindex);
            MotorTemperature    = m_nodeFactory.CreateVariable(Refrigerator, "MotorTemperature", "MotorTemperature", BuiltInType.Double, ValueRanks.Scalar, m_namespaceindex);
            CoolingMotorRunning = m_nodeFactory.CreateVariable(Refrigerator, "CoolingMotorRunning", "CoolingMotorRunning", BuiltInType.Boolean, ValueRanks.Scalar, m_namespaceindex);
            DoorState           = m_nodeFactory.CreateVariable(Refrigerator, "DoorState", "DoorState", BuiltInType.Boolean, ValueRanks.Scalar, m_namespaceindex);
            SetPointTemperature = m_nodeFactory.CreateVariable(Refrigerator, "SetPointTemperature", "SetPointTemperature", BuiltInType.Boolean, ValueRanks.Scalar, m_namespaceindex);
            LightStatus         = m_nodeFactory.CreateVariable(Refrigerator, "LightStatus", "LightStatus", BuiltInType.Boolean, ValueRanks.Scalar, m_namespaceindex);
            State      = m_nodeFactory.CreateVariable(Refrigerator, "State", "State", BuiltInType.Boolean, ValueRanks.Scalar, m_namespaceindex);
            _openClose = m_nodeFactory.CreateMethod(Refrigerator, "OpenCloseDoor", "OpenCloseDoor", m_namespaceindex);
            SetOpenCloseArguments();

            // Set the Refrigerator into a Running State.
            Refrigerator.SetChildValue(m_systemContext, State.BrowseName, true, false);
            //return Refrigerator;
        }
示例#3
0
        private ServiceResult OnWriteValueDiscrete(
            ISystemContext context,
            NodeState node,
            NumericRange indexRange,
            QualifiedName dataEncoding,
            ref object value,
            ref StatusCode statusCode,
            ref DateTime timestamp)
        {
            MultiStateValueDiscreteState variable = node as MultiStateValueDiscreteState;

            TypeInfo typeInfo = TypeInfo.Construct(value);

            if (variable == null ||
                typeInfo == null ||
                typeInfo == Opc.Ua.TypeInfo.Unknown ||
                !TypeInfo.IsNumericType(typeInfo.BuiltInType))
            {
                return(StatusCodes.BadTypeMismatch);
            }

            if (indexRange != NumericRange.Empty)
            {
                return(StatusCodes.BadIndexRangeInvalid);
            }

            Int32 number = Convert.ToInt32(value);

            if (number >= variable.EnumValues.Value.Length || number < 0)
            {
                return(StatusCodes.BadOutOfRange);
            }

            if (!node.SetChildValue(context, BrowseNames.ValueAsText, variable.EnumValues.Value[number].DisplayName,
                                    true))
            {
                return(StatusCodes.BadOutOfRange);
            }

            node.ClearChangeMasks(context, true);

            return(ServiceResult.Good);
        }