コード例 #1
0
        /// <summary>
        /// Exports a DataTypeDefinition
        /// </summary>
        private Opc.Ua.Export.DataTypeDefinition Export(Opc.Ua.DataTypeDefinition2 source, NamespaceTable namespaceUris)
        {
            if (source == null)
            {
                return(null);
            }

            DataTypeDefinition definition = new DataTypeDefinition();

            definition.Name         = Export(source.Name, namespaceUris);
            definition.SymbolicName = source.SymbolicName;
            definition.BaseType     = Export(source.BaseType, namespaceUris);

            if (source.Fields != null)
            {
                List <Opc.Ua.Export.DataTypeField> fields = new List <DataTypeField>();

                foreach (DataTypeDefinitionField field in source.Fields)
                {
                    Opc.Ua.Export.DataTypeField output = new Opc.Ua.Export.DataTypeField();

                    output.Name         = field.Name;
                    output.SymbolicName = field.SymbolicName;
                    output.Description  = Export(new Opc.Ua.LocalizedText[] { field.Description });

                    if (NodeId.IsNull(field.DataType))
                    {
                        output.DataType = Export(DataTypeIds.BaseDataType, namespaceUris);
                    }
                    else
                    {
                        output.DataType = Export(field.DataType, namespaceUris);
                    }

                    output.ValueRank  = field.ValueRank;
                    output.Value      = field.Value;
                    output.Definition = Export(field.Definition, namespaceUris);

                    fields.Add(output);
                }

                definition.Field = fields.ToArray();
            }

            return(definition);
        }
コード例 #2
0
        /// <summary>
        /// Exports a DataTypeDefinition
        /// </summary>
        private Opc.Ua.Export.DataTypeDefinition Export(
            DataTypeState dataType,
            ExtensionObject source,
            NamespaceTable namespaceUris,
            bool outputRedundantNames)
        {
            if (source == null || source.Body == null)
            {
                return(null);
            }

            DataTypeDefinition definition = new DataTypeDefinition();

            if (outputRedundantNames || dataType.BrowseName != null)
            {
                definition.Name = Export(dataType.BrowseName, namespaceUris);
            }

            if (dataType.BrowseName.Name != dataType.SymbolicName)
            {
                definition.SymbolicName = dataType.SymbolicName;
            }

            switch (dataType.DataTypeModifier)
            {
            case DataTypeModifier.Union: { definition.IsUnion = true; break; }

            case DataTypeModifier.OptionSet: { definition.IsOptionSet = true; break; }
            }

            StructureDefinition structureDefinition = source.Body as StructureDefinition;

            if (structureDefinition != null)
            {
                if (structureDefinition.StructureType == StructureType.Union)
                {
                    definition.IsUnion = true;
                }

                if (structureDefinition.Fields != null)
                {
                    List <Opc.Ua.Export.DataTypeField> fields = new List <DataTypeField>();

                    foreach (StructureField field in structureDefinition.Fields)
                    {
                        Opc.Ua.Export.DataTypeField output = new Opc.Ua.Export.DataTypeField();

                        output.Name        = field.Name;
                        output.Description = Export(new Opc.Ua.LocalizedText[] { field.Description });
                        output.IsOptional  = field.IsOptional;

                        if (NodeId.IsNull(field.DataType))
                        {
                            output.DataType = Export(DataTypeIds.BaseDataType, namespaceUris);
                        }
                        else
                        {
                            output.DataType = Export(field.DataType, namespaceUris);
                        }

                        output.ValueRank = field.ValueRank;

                        fields.Add(output);
                    }

                    definition.Field = fields.ToArray();
                }
            }

            EnumDefinition enumDefinition = source.Body as EnumDefinition;

            if (enumDefinition != null)
            {
                if (enumDefinition.Fields != null)
                {
                    List <Opc.Ua.Export.DataTypeField> fields = new List <DataTypeField>();

                    foreach (EnumField field in enumDefinition.Fields)
                    {
                        Opc.Ua.Export.DataTypeField output = new Opc.Ua.Export.DataTypeField();

                        output.Name        = field.Name;
                        output.DisplayName = Export(new Opc.Ua.LocalizedText[] { field.Name });
                        output.Description = Export(new Opc.Ua.LocalizedText[] { field.Description });
                        output.ValueRank   = ValueRanks.Scalar;
                        output.Value       = (int)field.Value;

                        fields.Add(output);
                    }

                    definition.Field = fields.ToArray();
                }
            }

            return(definition);
        }
コード例 #3
0
        /// <summary>
        /// Exports a DataTypeDefinition
        /// </summary>
        private Opc.Ua.Export.DataTypeDefinition Export(Opc.Ua.DataTypeDefinition source, NamespaceTable namespaceUris)
        {
            if (source == null)
            {
                return null;
            }

            DataTypeDefinition definition = new DataTypeDefinition();

            definition.Name = Export(source.Name, namespaceUris);
            definition.SymbolicName = source.SymbolicName;
            definition.BaseType = Export(source.BaseType, namespaceUris);

            if (source.Fields != null)
            {
                List<Opc.Ua.Export.DataTypeField> fields = new List<DataTypeField>();

                foreach (DataTypeDefinitionField field in source.Fields)
                {
                    Opc.Ua.Export.DataTypeField output = new Opc.Ua.Export.DataTypeField();

                    output.Name = field.Name;
                    output.SymbolicName = field.SymbolicName;
                    output.Description = Export(new Opc.Ua.LocalizedText[] { field.Description });

                    if (NodeId.IsNull(field.DataType))
                    {
                        output.DataType = Export(DataTypeIds.BaseDataType, namespaceUris);
                    }
                    else
                    {
                        output.DataType = Export(field.DataType, namespaceUris);
                    }

                    output.ValueRank = field.ValueRank;
                    output.Value = field.Value;
                    output.Definition = Export(field.Definition, namespaceUris);

                    fields.Add(output);
                }

                definition.Field = fields.ToArray();
            }

            return definition;
        }
コード例 #4
0
        /// <summary>
        /// Exports a DataTypeDefinition
        /// </summary>
        private Opc.Ua.Export.DataTypeDefinition Export(
            DataTypeState dataType,
            ExtensionObject source,
            NamespaceTable namespaceUris,
            bool outputRedundantNames)
        {
            if (source == null || source.Body == null)
            {
                return(null);
            }

            DataTypeDefinition definition = new DataTypeDefinition();

            if (outputRedundantNames || dataType.BrowseName != null)
            {
                definition.Name = Export(dataType.BrowseName, namespaceUris);
            }

            if (dataType.BrowseName.Name != dataType.SymbolicName)
            {
                definition.SymbolicName = dataType.SymbolicName;
            }

            StructureDefinition sd = source.Body as StructureDefinition;

            if (sd != null)
            {
                if (sd.StructureType == StructureType.Union || sd.StructureType == (StructureType)4) // StructureType.UnionWithSubtypedValues)
                {
                    definition.IsUnion = true;
                }

                if (sd.Fields != null)
                {
                    List <Opc.Ua.Export.DataTypeField> fields = new List <DataTypeField>();

                    for (int ii = sd.FirstExplicitFieldIndex; ii < sd.Fields.Count; ii++)
                    {
                        StructureField field = sd.Fields[ii];

                        Opc.Ua.Export.DataTypeField output = new Opc.Ua.Export.DataTypeField();

                        output.Name        = field.Name;
                        output.Description = Export(new Opc.Ua.LocalizedText[] { field.Description });

                        if (sd.StructureType == StructureType.StructureWithOptionalFields)
                        {
                            output.IsOptional    = field.IsOptional;
                            output.AllowSubTypes = false;
                        }
                        else if (sd.StructureType == (StructureType)3 || // StructureType.StructureWithSubtypedValues ||
                                 sd.StructureType == (StructureType)4)   // StructureType.UnionWithSubtypedValues)
                        {
                            output.IsOptional    = false;
                            output.AllowSubTypes = field.IsOptional;
                        }
                        else
                        {
                            output.IsOptional    = false;
                            output.AllowSubTypes = false;
                        }

                        if (NodeId.IsNull(field.DataType))
                        {
                            output.DataType = Export(DataTypeIds.BaseDataType, namespaceUris);
                        }
                        else
                        {
                            output.DataType = Export(field.DataType, namespaceUris);
                        }

                        output.ValueRank = field.ValueRank;

                        fields.Add(output);
                    }

                    definition.Field = fields.ToArray();
                }
            }

            EnumDefinition ed = source.Body as EnumDefinition;

            if (ed != null)
            {
                definition.IsOptionSet = ed.IsOptionSet;

                if (ed.Fields != null)
                {
                    List <Opc.Ua.Export.DataTypeField> fields = new List <DataTypeField>();

                    foreach (EnumField field in ed.Fields)
                    {
                        Opc.Ua.Export.DataTypeField output = new Opc.Ua.Export.DataTypeField();

                        output.Name = field.Name;

                        if (field.DisplayName != null && output.Name != field.DisplayName.Text)
                        {
                            output.DisplayName = Export(new Opc.Ua.LocalizedText[] { field.DisplayName });
                        }
                        else
                        {
                            output.DisplayName = Array.Empty <LocalizedText>();
                        }

                        output.Description = Export(new Opc.Ua.LocalizedText[] { field.Description });
                        output.ValueRank   = ValueRanks.Scalar;
                        output.Value       = (int)field.Value;

                        fields.Add(output);
                    }

                    definition.Field = fields.ToArray();
                }
            }

            return(definition);
        }
コード例 #5
0
        /// <summary>
        /// Exports a DataTypeDefinition
        /// </summary>
        private Opc.Ua.Export.DataTypeDefinition Export(
            DataTypeState dataType,
            Opc.Ua.DataTypeDefinition2 source,
            NamespaceTable namespaceUris,
            bool outputRedundantNames)
        {
            if (source == null)
            {
                return(null);
            }

            DataTypeDefinition definition = new DataTypeDefinition();

            if (outputRedundantNames || dataType.BrowseName != source.Name)
            {
                definition.Name = Export(source.Name, namespaceUris);
            }

            if (source.Name.Name != source.SymbolicName)
            {
                definition.SymbolicName = source.SymbolicName;
            }

            switch (source.DataTypeModifier)
            {
            case DataTypeModifier.Union: { definition.IsUnion = true; break; }

            case DataTypeModifier.OptionSet: { definition.IsOptionSet = true; break; }
            }

            if (source.Fields != null)
            {
                List <Opc.Ua.Export.DataTypeField> fields = new List <DataTypeField>();

                foreach (DataTypeDefinitionField field in source.Fields)
                {
                    Opc.Ua.Export.DataTypeField output = new Opc.Ua.Export.DataTypeField();

                    output.Name         = field.Name;
                    output.SymbolicName = field.SymbolicName;
                    output.Description  = Export(new Opc.Ua.LocalizedText[] { field.Description });

                    if (NodeId.IsNull(field.DataType))
                    {
                        output.DataType = Export(DataTypeIds.BaseDataType, namespaceUris);
                    }
                    else
                    {
                        output.DataType = Export(field.DataType, namespaceUris);
                    }

                    output.ValueRank = field.ValueRank;
                    output.Value     = field.Value;

                    fields.Add(output);
                }

                definition.Field = fields.ToArray();
            }

            return(definition);
        }