Example #1
0
        private void writeOpcServerConfig(string fileName)
        {
            /*OPCServerConfig opcServerConfig = new OPCServerConfig();
             * List<string> inputsList = new List<string>();
             * List<string> outputsList = new List<string>();
             *
             * if (inputVars != null)
             * {
             *  foreach (NuTraceVariable inputVar in inputVars)
             *  {
             *      inputsList.Add(inputVar.Variable);
             *  }
             * }
             * if (outputVars != null)
             * {
             *  foreach (NuTraceVariable outputVar in outputVars)
             *  {
             *      outputsList.Add(outputVar.Variable);
             *  }
             * }
             * opcServerConfig.InputVariables = inputsList;
             * opcServerConfig.OutputVariables = outputsList;
             * opcServerConfig.SocketHost = "localhost";
             * opcServerConfig.SocketPort = 11000;*/

            ConfigBuilder.DefinitionList serverInemsDeflist = new ConfigBuilder.DefinitionList();
            {
                serverInemsDeflist.BranchSeperatorChar = '.';
                ConfigBuilder.BranchElement root = new BranchElement();
                {
                    root.name = "CIROS Connector";
                    ConfigBuilder.ConfigDefs defaultBranchConfig = new ConfigDefs();
                    defaultBranchConfig.activeDef              = true;
                    defaultBranchConfig.accRightSpecified      = false;
                    defaultBranchConfig.dataTypeSpecified      = false;
                    defaultBranchConfig.qualitySpecified       = false;
                    defaultBranchConfig.signalTypeSpecified    = false;
                    defaultBranchConfig.scanRateSpecified      = false;
                    defaultBranchConfig.deviceIDSpecified      = false;
                    defaultBranchConfig.deviceAddrSpecified    = false;
                    defaultBranchConfig.deviceSubAddrSpecified = false;
                    defaultBranchConfig.user1Specified         = false;
                    defaultBranchConfig.user2Specified         = false;
                    root.branchDefs = defaultBranchConfig;

                    ItemElement dummyItem = new ItemElement();
                    {
                        dummyItem.name                       = "dummyItem";
                        dummyItem.handle                     = 0;
                        dummyItem.itemDefs                   = new ConfigDefs();
                        dummyItem.Value                      = Convert.ToInt32(0);
                        dummyItem.itemDefs.dataType          = drvtypes.Type.SHORT;
                        dummyItem.itemDefs.activeDef         = true;
                        dummyItem.itemDefs.accRightSpecified = false;

                        dummyItem.itemDefs.dataTypeSpecified      = true;
                        dummyItem.itemDefs.qualitySpecified       = false;
                        dummyItem.itemDefs.signalTypeSpecified    = false;
                        dummyItem.itemDefs.scanRateSpecified      = false;
                        dummyItem.itemDefs.deviceIDSpecified      = false;
                        dummyItem.itemDefs.deviceAddrSpecified    = false;
                        dummyItem.itemDefs.deviceSubAddrSpecified = false;
                        dummyItem.itemDefs.user1Specified         = false;
                        dummyItem.itemDefs.user2Specified         = false;
                    }
                    root.items    = new ItemElement[1];
                    root.items[0] = dummyItem;

                    if (inputVars != null)
                    {
                        root.subBranches         = new BranchElement[1]; //TODO: 2
                        root.subBranches[0]      = new BranchElement();
                        root.subBranches[0].name = "Inputs";
                        {
                            ConfigBuilder.ConfigDefs branchConfig = new ConfigDefs();
                            branchConfig.activeDef         = true;
                            branchConfig.accRightSpecified = true;
                            branchConfig.accRight          = OPCAccess.READWRITEABLE;
                            branchConfig.dataTypeSpecified = false;
                            branchConfig.qualitySpecified  = true;
                            branchConfig.quality           = OPCQuality.GOOD;

                            branchConfig.signalTypeSpecified = false;
                            //branchConfig.signalTypeSpecified = true;
                            //branchConfig.signalType = SignalType.INTERN;

                            branchConfig.scanRate               = 100;
                            branchConfig.scanRateSpecified      = true;
                            branchConfig.deviceIDSpecified      = false;
                            branchConfig.deviceAddrSpecified    = false;
                            branchConfig.deviceSubAddrSpecified = false;
                            branchConfig.user1Specified         = false;
                            branchConfig.user2Specified         = false;

                            root.subBranches[0].branchDefs = branchConfig;
                        }

                        root.subBranches[0].items = new ItemElement[inputVars.Count];
                        int i = 0;
                        foreach (NuTraceVariable inputVar in inputVars)
                        {
                            ItemElement element = new ItemElement();
                            {
                                element.name     = inputVar.Variable;
                                element.handle   = i + 1;
                                element.itemDefs = new ConfigDefs();
                                try
                                {
                                    element.Value             = Convert.ToInt32(inputVar.Value);
                                    element.itemDefs.dataType = drvtypes.Type.SHORT;
                                }
                                catch (FormatException e)
                                {
                                    element.Value             = Convert.ToBoolean(inputVar.Value);
                                    element.itemDefs.dataType = drvtypes.Type.BOOLEAN;
                                }
                                element.itemDefs.activeDef         = true;
                                element.itemDefs.accRightSpecified = true;
                                element.itemDefs.accRight          = OPCAccess.READWRITEABLE;

                                element.itemDefs.dataTypeSpecified = true;
                                element.itemDefs.qualitySpecified  = true;
                                element.itemDefs.quality           = OPCQuality.GOOD;

                                element.itemDefs.signalTypeSpecified    = false;
                                element.itemDefs.scanRateSpecified      = false;
                                element.itemDefs.deviceIDSpecified      = false;
                                element.itemDefs.deviceAddrSpecified    = false;
                                element.itemDefs.deviceSubAddrSpecified = false;
                                element.itemDefs.user1Specified         = false;
                                element.itemDefs.user2Specified         = false;

                                /*element.itemDefs.properties = new PropertyDef[1];
                                 * {
                                 *  element.itemDefs.properties[0] = new PropertyDef();
                                 *  element.itemDefs.properties[0].id = 101;
                                 *  element.itemDefs.properties[0].name = "Item Description";
                                 *  element.itemDefs.properties[0].dataType = drvtypes.Type.STRING;
                                 *  element.itemDefs.properties[0].val = "Property test";
                                 *
                                 * }*/
                            }
                            root.subBranches[0].items[i++] = element;
                        }
                    }
                }
                serverInemsDeflist.DefinitionsRoot = root;
            }

            XmlSerializer ser = new XmlSerializer(typeof(ConfigBuilder.DefinitionList));
            StringBuilder sb  = new StringBuilder();

            using (TextWriter writer = new StringWriter(sb))
            {
                ser.Serialize(writer, serverInemsDeflist);
            }

            sb.Replace("xsi:nil=\"true\" ", ""); // hack removing xsi:nil="true"

            StreamWriter sw = new StreamWriter(fileName);

            sw.Write(sb);
            //ser.Serialize(writer, serverInemsDeflist);
            sw.Close();
        }
Example #2
0
        public GhAlgorithm()
        {
            // In the constructor, we will build the input files
            RhinoModel.Initialize();

            // Gets the current GH file. Will throw if not available
            GrasshopperFullFileName       = RhinoModel.RM.GrasshopperFullFileName;
            WpfGrasshopperFileDescription = RhinoModel.RM.GrasshopperDescription;

            #region Gets the Grasshopper Input List
            GrasshopperAllEmasaInputDefsWrapper_AsRhino3dm inputDefs = RhinoModel.RM.Grasshopper_GetAllEmasaInputDefs();

            // Integers
            foreach (string integerInput in inputDefs.IntegerInputs)
            {
                Integer_GhConfig_ParamDef intParam = new Integer_GhConfig_ParamDef(inName: integerInput);
                ConfigDefs.Add(intParam);
            }

            // Doubles
            foreach (var doubleInput in inputDefs.DoubleInputs)
            {
                Double_Input_ParamDef bdlInputParam = new Double_Input_ParamDef(inName: doubleInput.Key, inRange: new DoubleValueRange(doubleInput.Value.Item2, doubleInput.Value.Item3));
                bdlInputParam.Start = doubleInput.Value.Item1;

                AddParameterToInputs(bdlInputParam);
            }

            // Points
            foreach (var pointInputs in inputDefs.PointInputs)
            {
                Point_Input_ParamDef pntParam = new Point_Input_ParamDef(inName: pointInputs.Key, inRange: new PointValueRange(pointInputs.Value.Item2, pointInputs.Value.Item3));
                pntParam.Start = pointInputs.Value.Item1;

                AddParameterToInputs(pntParam);
                break;
            }
            #endregion

            #region Gets the Grasshopper Output List
            GrasshopperAllEmasaOutputWrapper_AsRhino3dm outputDefs = RhinoModel.RM.Grasshopper_GetAllEmasaOutputs();

            // Line Lists
            foreach (var lineList in outputDefs.LineLists)
            {
                GeometryDefs.Add(new LineList_GhGeom_ParamDef(lineList.Key));
            }

            // Double Lists
            foreach (var doubleList in outputDefs.DoubleLists)
            {
                DoubleList_GhGeom_ParamDef dlParam = new DoubleList_GhGeom_ParamDef(doubleList.Key);
                GeometryDefs.Add(dlParam);
            }

            // Point Lists
            foreach (var pointList in outputDefs.PointLists)
            {
                GeometryDefs.Add(new PointList_GhGeom_ParamDef(pointList.Key));
            }
            #endregion

            #region Setting the WPF collection views

            InputDefs_View = CollectionViewSource.GetDefaultView(InputDefs);
            InputDefs_View.SortDescriptions.Add(new SortDescription("Name", ListSortDirection.Ascending));
            InputDefs_View.GroupDescriptions.Add(new PropertyGroupDescription("TypeName"));


            ConfigDefs_View = CollectionViewSource.GetDefaultView(ConfigDefs);
            ConfigDefs_View.SortDescriptions.Add(new SortDescription("Name", ListSortDirection.Ascending));


            CollectionViewSource configDefs_Integer_Cvs = new CollectionViewSource()
            {
                Source = ConfigDefs
            };
            ConfigDefs_Integer_View = configDefs_Integer_Cvs.View;
            ConfigDefs_Integer_View.SortDescriptions.Add(new SortDescription("Name", ListSortDirection.Ascending));
            ConfigDefs_Integer_View.Filter += inO => inO is Integer_GhConfig_ParamDef;
            HasConfigDefs_Integer           = ConfigDefs_Integer_View.IsEmpty ? Visibility.Collapsed : Visibility.Visible;


            CollectionViewSource geometryDefs_PointList_Cvs = new CollectionViewSource()
            {
                Source = GeometryDefs
            };
            GeometryDefs_PointList_View = geometryDefs_PointList_Cvs.View;
            GeometryDefs_PointList_View.SortDescriptions.Add(new SortDescription("Name", ListSortDirection.Ascending));
            //GeometryDefs_PointList_View.GroupDescriptions.Add(new PropertyGroupDescription("TypeName"));
            GeometryDefs_PointList_View.Filter += inO => inO is PointList_GhGeom_ParamDef;
            HasGeometryDef_PointList            = GeometryDefs_PointList_View.IsEmpty ? Visibility.Collapsed : Visibility.Visible;


            GeometryDefs_LineList_View = (new CollectionViewSource()
            {
                Source = GeometryDefs
            }).View;
            GeometryDefs_LineList_View.SortDescriptions.Add(new SortDescription("Name", ListSortDirection.Ascending));
            //GeometryDefs_LineList_View.GroupDescriptions.Add(new PropertyGroupDescription("TypeName"));
            GeometryDefs_LineList_View.Filter += inO => inO is LineList_GhGeom_ParamDef;
            HasGeometryDef_LineList            = GeometryDefs_LineList_View.IsEmpty ? Visibility.Collapsed : Visibility.Visible;


            GeometryDefs_DoubleList_View = (new CollectionViewSource()
            {
                Source = GeometryDefs
            }).View;
            GeometryDefs_DoubleList_View.SortDescriptions.Add(new SortDescription("Name", ListSortDirection.Ascending));
            //GeometryDefs_DoubleList_View.GroupDescriptions.Add(new PropertyGroupDescription("TypeName"));
            GeometryDefs_DoubleList_View.Filter += inO => inO is DoubleList_GhGeom_ParamDef;
            HasGeometryDef_DoubleList            = GeometryDefs_DoubleList_View.IsEmpty ? Visibility.Collapsed : Visibility.Visible;


            GeometryDefs_PointLineListBundle_View = (new CollectionViewSource()
            {
                Source = GeometryDefs
            }).View;
            GeometryDefs_PointLineListBundle_View.SortDescriptions.Add(new SortDescription("TypeName", ListSortDirection.Ascending));
            GeometryDefs_PointLineListBundle_View.SortDescriptions.Add(new SortDescription("Name", ListSortDirection.Ascending));
            GeometryDefs_PointLineListBundle_View.Filter += inO => inO is LineList_GhGeom_ParamDef || inO is PointList_GhGeom_ParamDef;
            #endregion
        }