Exemplo n.º 1
0
        private List <BaseVariableState> CreateChild(WeatherMapVariableState variable)
        {
            List <BaseVariableState> child = new List <BaseVariableState>();

            AnalogData info = new AnalogData();



            info = variable.Value.Temperature;

            AnalogVariableState childTemperatura = (AnalogVariableState)CreateVariableChild(null, "Temperature", "Temperature", new NodeId(VariableTypeIds.WeatherMapVariableType.Identifier, VariableTypeIds.WeatherMapVariableType.NamespaceIndex), new NodeId(DataTypeIds.AnalogData.Identifier, DataTypeIds.AnalogData.NamespaceIndex), ValueRanks.Scalar, info, null);

            variable.AddChild(childTemperatura);
            child.Add(childTemperatura);

            //info = null;

            info = variable.Value.Pressure;

            AnalogVariableState childPressure = (AnalogVariableState)CreateVariableChild(null, "Pressure", "Pressure", new NodeId(VariableTypeIds.WeatherMapVariableType.Identifier, VariableTypeIds.WeatherMapVariableType.NamespaceIndex), new NodeId(DataTypeIds.AnalogData.Identifier, DataTypeIds.AnalogData.NamespaceIndex), ValueRanks.Scalar, info, null);

            variable.AddChild(childPressure);
            child.Add(childPressure);

            // info = null;

            info = variable.Value.MaxTemperature;

            AnalogVariableState childMaxTemp = (AnalogVariableState)CreateVariableChild(null, "MaxTemperature", "MaxTemperature", new NodeId(VariableTypeIds.WeatherMapVariableType.Identifier, VariableTypeIds.WeatherMapVariableType.NamespaceIndex), new NodeId(DataTypeIds.AnalogData.Identifier, DataTypeIds.AnalogData.NamespaceIndex), ValueRanks.Scalar, info, null);

            variable.AddChild(childMaxTemp);
            child.Add(childMaxTemp);

            info = variable.Value.MinTemperature;

            AnalogVariableState childMinTemp = (AnalogVariableState)CreateVariableChild(null, "MinTemperature", "MinTemperature", new NodeId(VariableTypeIds.WeatherMapVariableType.Identifier, VariableTypeIds.WeatherMapVariableType.NamespaceIndex), new NodeId(DataTypeIds.AnalogData.Identifier, DataTypeIds.AnalogData.NamespaceIndex), ValueRanks.Scalar, info, null);

            variable.AddChild(childMinTemp);
            child.Add(childMinTemp);

            BaseVariableState childCity = CreateVariableChild(null, "City", "City", Opc.Ua.VariableTypeIds.BaseVariableType, Opc.Ua.DataTypeIds.String, ValueRanks.Scalar, null, new String(variable.Value.CityName));

            variable.AddChild(childCity);
            child.Add(childCity);
            return(child);
        }
Exemplo n.º 2
0
        /// Creates a new variable.
        /// </summary>


        /// <summary>
        /// Creates a new variable.
        /// </summary>
        ///
        private BaseVariableState CreateVariableChild(NodeState parent, string path, string name, NodeId typeDefinitionId, NodeId dataType, int valueRank, AnalogData valueAnalog, String cityName)
        {
            if (cityName == null)
            {
                AnalogVariableState variable = new AnalogVariableState(parent);


                variable.SymbolicName     = name;
                variable.ReferenceTypeId  = ReferenceTypes.Organizes;
                variable.TypeDefinitionId = typeDefinitionId;
                variable.NodeId           = new NodeId(path, NamespaceIndex);
                variable.BrowseName       = new QualifiedName(path, NamespaceIndex);
                variable.DisplayName      = new LocalizedText("en", name);
                variable.WriteMask        = AttributeWriteMask.DisplayName | AttributeWriteMask.Description;
                variable.UserWriteMask    = AttributeWriteMask.DisplayName | AttributeWriteMask.Description;
                variable.Description      = new String("Information about weather for" + variable.SymbolicName.ToString());

                variable.DataType        = dataType;
                variable.ValueRank       = valueRank;
                variable.AccessLevel     = AccessLevels.CurrentReadOrWrite;
                variable.UserAccessLevel = AccessLevels.CurrentRead;
                variable.Historizing     = true;

                variable.Value = valueAnalog;


                if (variable.Value != null)
                {
                    variable.StatusCode = StatusCodes.Good;
                }
                else
                {
                    variable.StatusCode = StatusCodes.Bad;
                }
                variable.Timestamp = DateTime.UtcNow;

                if (valueRank == ValueRanks.OneDimension)
                {
                    variable.ArrayDimensions = new ReadOnlyList <uint>(new List <uint> {
                        0
                    });
                }
                else if (valueRank == ValueRanks.TwoDimensions)
                {
                    variable.ArrayDimensions = new ReadOnlyList <uint>(new List <uint> {
                        0, 0
                    });
                }

                if (parent != null)
                {
                    parent.AddChild(variable);
                }


                return(variable);
            }
            else
            {
                BaseVariableState variable = new BaseDataVariableState <String>(parent);

                variable.SymbolicName     = name;
                variable.ReferenceTypeId  = ReferenceTypes.Organizes;
                variable.TypeDefinitionId = Opc.Ua.VariableTypeIds.BaseVariableType;;
                variable.NodeId           = new NodeId(path, NamespaceIndex);
                variable.BrowseName       = new QualifiedName(path, NamespaceIndex);
                variable.DisplayName      = new LocalizedText("en", name);
                variable.WriteMask        = AttributeWriteMask.DisplayName | AttributeWriteMask.Description;
                variable.UserWriteMask    = AttributeWriteMask.DisplayName | AttributeWriteMask.Description;
                variable.Description      = new String("Information about weather for" + variable.SymbolicName.ToString());

                variable.DataType        = dataType;
                variable.ValueRank       = valueRank;
                variable.AccessLevel     = AccessLevels.CurrentReadOrWrite;
                variable.UserAccessLevel = AccessLevels.CurrentRead;
                variable.Historizing     = true;
                Console.WriteLine(cityName);
                variable.Value = cityName.ToString();


                if (variable.Value != null)
                {
                    variable.StatusCode = StatusCodes.Good;
                }
                else
                {
                    variable.StatusCode = StatusCodes.Bad;
                }
                variable.Timestamp = DateTime.UtcNow;

                if (valueRank == ValueRanks.OneDimension)
                {
                    variable.ArrayDimensions = new ReadOnlyList <uint>(new List <uint> {
                        0
                    });
                }
                else if (valueRank == ValueRanks.TwoDimensions)
                {
                    variable.ArrayDimensions = new ReadOnlyList <uint>(new List <uint> {
                        0, 0
                    });
                }

                if (parent != null)
                {
                    parent.AddChild(variable);
                }


                return(variable);
            }
        }