예제 #1
0
 /// <summary>
 /// Speichert die Daten: Bit, PortType, InName, OutName im DataSafe
 /// </summary>
 /// <param name="pos">Positionsindex, an dem die Werte gespeichert werden sollen.</param>
 /// <param name="ds">DataSafe zum Speichern</param>
 public virtual void Save(int pos, Data.DataSafe ds)
 {
     ds.Ints["Bit-" + pos]        = this.Bit;
     ds.Ints["PortType-" + pos]   = (int)this.PortType;
     ds.Strings["InName-" + pos]  = this.InName;
     ds.Strings["OutName-" + pos] = this.OutName;
 }
예제 #2
0
        public virtual void Save()
        {
            Data.DataSafe ds = new Data.DataSafe(Data.Paths.SettingsConfigurationPath, "HardwareController");

            ds.Ints["AxisCount"] = AllAxes.Count;
            ds.Ints["IOCount"]   = AllIOs.Count;
            ds.Ints["ToolCount"] = AllTools.Count - 1;

            for (int i = 0; i < AllAxes.Count; ++i)
            {
                ds.Strings["Axis-" + i] = AllAxes[i].ControlIdent;
                AllAxes[i].Save();
            }

            for (int i = 0; i < AllIOs.Count; ++i)
            {
                ds.Strings["IO-" + i] = AllIOs[i].ControlIdent;
                AllIOs[i].Save();
            }

            int index = 0;

            for (int i = 0; i < AllTools.Count; ++i)
            {
                if (AllTools[i] != NoTool)
                {
                    ds.Strings["Tool-" + index] = AllTools[i].ControlIdent;
                    AllTools[i].Save();
                    ++index;
                }
            }

            //Camera
            ds.Strings["CameraURL"] = CurrentCamera.Path;

            //Properties
            ds.Ints["TableOrigin-X"] = this.TableOrigin[0];
            ds.Ints["TableOrigin-Y"] = this.TableOrigin[1];

            ds.Ints["TableCenter-X"] = this.TableCenter[0];
            ds.Ints["TableCenter-Y"] = this.TableCenter[1];

            ds.Ints["LoadPosition-X"] = this.LoadPosition[0];
            ds.Ints["LoadPosition-Y"] = this.LoadPosition[1];
            ds.Ints["LoadPosition-Z"] = this.LoadPosition[2];

            ds.Bools["IntelligentScribe"] = this.IntelligentScribe;

            ds.Bools["HomeWhileScribing"]      = this.HomeWhileScribing;
            ds.Ints["HomeWhileScribingNumber"] = this.HomeWhileScribingNumber;

            ds.Ints["HomeWhileScribingAxesCount"] = this.HomeWhileScribingAxes.Count;
            for (int i = 0; i < this.HomeWhileScribingAxes.Count; ++i)
            {
                ds.Strings["HWSAxis-" + i] = this.HomeWhileScribingAxes[i];
            }
        }
예제 #3
0
        public virtual void Load()
        {
            Data.DataSafe ds = new Data.DataSafe(Data.Paths.SettingsConfigurationPath, ControlIdent + "-Tool.xml");
            Name = ds.Strings["Name", ""];

            Fokus = ds.Ints["Fokus", 0];

            CameraOffset[0] = ds.Ints["CameraOffset-X", 0];
            CameraOffset[1] = ds.Ints["CameraOffset-Y", 0];

            MyToolType = (ToolType)ds.Ints["ToolType", 0];
        }
예제 #4
0
        public virtual void Save()
        {
            Data.DataSafe ds = new Data.DataSafe(Data.Paths.SettingsConfigurationPath, ControlIdent + "-Tool.xml");

            ds.Strings["ControlIdent"] = ControlIdent;
            ds.Strings["Name"]         = Name;

            ds.Ints["Fokus"]          = Fokus;
            ds.Ints["CameraOffset-X"] = CameraOffset[0];
            ds.Ints["CameraOffset-Y"] = CameraOffset[1];

            ds.Ints["ToolType"] = (int)MyToolType;
        }
예제 #5
0
        /// <summary>
        /// Speichert alle Konfigurationen für alle Ports für diesen IOController in die Konfigurationsdatei
        /// </summary>
        public virtual void Save()
        {
            Data.DataSafe ds = new Data.DataSafe(Data.Paths.SettingsConfigurationPath, ControlIdent + "-IO.xml");
            ds.Strings["ControlIdent"] = ControlIdent;
            ds.Strings["Name"]         = Name;

            ds.Ints["Count"] = AllIOPorts.Count;

            for (int i = 0; i < AllIOPorts.Count; ++i)
            {
                AllIOPorts[i].Save(i, ds);
            }
        }
예제 #6
0
        /// <summary>
        /// Lädt einen IOPort mit Bit aus einem DataSafe
        /// </summary>
        /// <param name="bit">Positionsindex, aus dem die Werte geladen werden sollen.</param>
        /// <param name="ds">DataSafe aus dem geladen werden soll.</param>
        /// <returns></returns>
        public static IOPort Load(int pos, Data.DataSafe ds)
        {
            int b = ds.Ints["Bit-" + pos, -1];

            if (b >= 0)
            {
                IOPort p = new IOPort(b, (IOPortType)ds.Ints["PortType-" + pos, 3]);
                p.InName  = ds.Strings["InName-" + pos, ""];
                p.OutName = ds.Strings["OutName-" + pos, ""];
                return(p);
            }
            return(null);
        }
예제 #7
0
        public static void Save()
        {
            DataSafe ds = new Data.DataSafe(Data.Paths.SettingsPath, "Functions");

            ds.Ints["Categories"] = AllCategories.Count - 1;
            for (int i = 1; i < AllCategories.Count; ++i)
            {
                FunctionCategory category = AllCategories[i];
                ds.Strings["Category-" + (i - 1)] = category.Title.ToUpper();
                DataSafe catSafe = new DataSafe(Data.Paths.SettingsScriptFunctionsPath, "Category-" + category.Title);
                catSafe.Ints["Functions"] = category.Functions.Count;
                for (int f = 0; f < category.Functions.Count; ++f)
                {
                    catSafe.Strings["Function-" + f] = category.Functions[f].ToUpper();
                    GetFunction(category.Functions[f]).Save();
                }
            }
        }
예제 #8
0
        /// <summary>
        /// Speichert alle Parameter dieser Achse
        /// </summary>
        public virtual void Save()
        {
            Data.DataSafe ds = new Data.DataSafe(Data.Paths.SettingsConfigurationPath, ControlIdent + "-Axis.xml");

            ds.Strings["ControlIdent"] = this.ControlIdent;
            ds.Strings["Name"]         = this.Name;

            ds.Ints["Min"] = this.Min;
            ds.Ints["Max"] = this.Max;

            ds.Ints["MinVelocity"] = this.MinVelocity;
            ds.Ints["MaxVelocity"] = this.MaxVelocity;

            ds.Ints["PositionSpeed"]          = this.PositionSpeed;
            ds.Ints["RampRate"]               = this.RampRate;
            ds.Ints["RampDistancePercent"]    = this.RampDistancePercent;
            ds.Ints["MinAccelRampTimeMS"]     = this.MinAccelRampTimeMS;
            ds.Ints["StaticRampDistance"]     = this.StaticRampDistance;
            ds.Bools["UseStaticRampDistance"] = this.UseStaticRampDistance;
        }
예제 #9
0
        /// <summary>
        /// Lädt alle Ports für diesen IOController aus der Konfigurationsdatei
        /// </summary>
        public virtual void Load()
        {
            Data.DataSafe ds = new Data.DataSafe(Data.Paths.SettingsConfigurationPath, ControlIdent + "-IO.xml");
            if (!ds.containsKey("ControlIdent"))
            {
                throw new Exception("Incorect save file for an IO Controller!");
            }

            this.Name = ds.Strings["Name", ""];
            int count = ds.Ints["Count", 0];

            this.AllIOPorts.Clear();

            for (int i = 0; i < count; ++i)
            {
                IOPort p = IOPort.Load(i, ds);
                AllIOPorts.Add(p);
            }
            SortIOPorts();
        }
예제 #10
0
        /// <summary>
        /// Lädt eine Achse aus einer XML Datei
        /// </summary>
        public virtual void Load()
        {
            Data.DataSafe ds = new Data.DataSafe(Data.Paths.SettingsConfigurationPath, ControlIdent + "-Axis.xml");

            /* if(!ds.containsKey("Name") || !ds.containsKey("ControlIdent"))
             * {
             *   throw new Exception("Incorect save file for an Axis!");
             * }*/

            this.Name = ds.Strings["Name", "Axis"];
            this.Min  = ds.Ints["Min", 0];
            this.Max  = ds.Ints["Max", 0];

            this.MinVelocity = ds.Ints["MinVelocity", 0];
            this.MaxVelocity = ds.Ints["MaxVelocity", 0];

            this.PositionSpeed         = ds.Ints["PositionSpeed", 0];
            this.RampRate              = ds.Ints["RampRate", 0];
            this.RampDistancePercent   = ds.Ints["RampDistancePercent", 0];
            this.MinAccelRampTimeMS    = ds.Ints["MinAccelRampTimeMS", 0];
            this.StaticRampDistance    = ds.Ints["StaticRampDistance", 0];
            this.UseStaticRampDistance = ds.Bools["UseStaticRampDistance", false];
        }
예제 #11
0
        /// <summary>
        /// Speichert alle Parameter dieser Achse
        /// </summary>
        public virtual void Save()
        {
            Data.DataSafe ds = new Data.DataSafe(Data.Paths.SettingsConfigurationPath, ControlIdent + "-Axis.xml");

            ds.Strings["ControlIdent"] = this.ControlIdent;
            ds.Strings["Name"] = this.Name;

            ds.Ints["Min"] = this.Min;
            ds.Ints["Max"] = this.Max;

            ds.Ints["MinVelocity"] = this.MinVelocity;
            ds.Ints["MaxVelocity"] = this.MaxVelocity;

            ds.Ints["PositionSpeed"] = this.PositionSpeed;
            ds.Ints["RampRate"] = this.RampRate;
            ds.Ints["RampDistancePercent"] = this.RampDistancePercent;
            ds.Ints["MinAccelRampTimeMS"] = this.MinAccelRampTimeMS;
            ds.Ints["StaticRampDistance"] = this.StaticRampDistance;
            ds.Bools["UseStaticRampDistance"] = this.UseStaticRampDistance;
        }
예제 #12
0
        public virtual void Save()
        {
            Data.DataSafe ds = new Data.DataSafe(Data.Paths.SettingsConfigurationPath, ControlIdent + "-Tool.xml");

            ds.Strings["ControlIdent"] = ControlIdent;
            ds.Strings["Name"] = Name;

            ds.Ints["Fokus"] = Fokus;
            ds.Ints["CameraOffset-X"] = CameraOffset[0];
            ds.Ints["CameraOffset-Y"] = CameraOffset[1];

            ds.Ints["ToolType"] = (int)MyToolType;
        }
예제 #13
0
 public HardwareSelector(Data.DataSafe mwDataSafe)
 {
     InitializeComponent();
     MWDS = mwDataSafe;
 }
예제 #14
0
        /// <summary>
        /// Lädt eine Achse aus einer XML Datei
        /// </summary>
        public virtual void Load()
        {
            Data.DataSafe ds = new Data.DataSafe(Data.Paths.SettingsConfigurationPath, ControlIdent + "-Axis.xml");
            /* if(!ds.containsKey("Name") || !ds.containsKey("ControlIdent"))
             {
                 throw new Exception("Incorect save file for an Axis!");
             }*/

            this.Name = ds.Strings["Name", "Axis"];
            this.Min = ds.Ints["Min", 0];
            this.Max = ds.Ints["Max", 0];

            this.MinVelocity = ds.Ints["MinVelocity", 0];
            this.MaxVelocity = ds.Ints["MaxVelocity", 0];

            this.PositionSpeed = ds.Ints["PositionSpeed", 0];
            this.RampRate = ds.Ints["RampRate", 0];
            this.RampDistancePercent = ds.Ints["RampDistancePercent", 0];
            this.MinAccelRampTimeMS = ds.Ints["MinAccelRampTimeMS", 0];
            this.StaticRampDistance = ds.Ints["StaticRampDistance", 0];
            this.UseStaticRampDistance = ds.Bools["UseStaticRampDistance", false];
        }
예제 #15
0
        public virtual void Load()
        {
            Data.DataSafe ds = new Data.DataSafe(Data.Paths.SettingsConfigurationPath, ControlIdent + "-Tool.xml");
            Name = ds.Strings["Name", ""];

            Fokus = ds.Ints["Fokus", 0];

            CameraOffset[0] = ds.Ints["CameraOffset-X", 0];
            CameraOffset[1] = ds.Ints["CameraOffset-Y", 0];

            MyToolType = (ToolType)ds.Ints["ToolType", 0];
        }
예제 #16
0
        public static void Load()
        {
            if (!Loaded)
            {
                AllCategories.Clear();
                AllFunctions.Clear();

                FunctionCategory AllCat = new FunctionCategory("All Functions");
                //AllCategories.Add(AllCat);

                //1) Lade alle Kategorien!
                DataSafe ds = new Data.DataSafe(Data.Paths.SettingsPath, "Functions");
                int catCount = ds.Ints["Categories", 0];
                for (int i = 0; i < catCount; ++i)
                {
                    string name = ds.Strings["Category-" + i, ""];
                    /*if (string.IsNullOrEmpty(name) || string.IsNullOrWhiteSpace(name))
                    {
                        throw new Exception("Error in Function Categories -> Functions.xml");
                    }*/

                    FunctionCategory category = new FunctionCategory(name );

                    DataSafe catSafe = new DataSafe(Data.Paths.SettingsScriptFunctionsPath, "Category-" + name);
                    int funCount = catSafe.Ints["Functions", 0];
                    for (int f = 0; f < funCount; ++f)
                    {
                        string funName = catSafe.Strings["Function-" + f, ""];
                        AllCat.Functions.Add(funName);
                        category.Functions.Add(funName);

                        //Lade eine Funktion
                        AllFunctions.Add( Function.Load(funName) );

                    }

                    category.Sort();
                    AllCategories.Add(category);
                }

                //AllFunctions.Sort();
                AllCat.Sort();

                AllCategories.Sort();
                AllCategories.Insert(0,AllCat);

                /*
                string code = "$RETURN = 1;if( $i > 1 ){ $RETURN = FAK($i - 1) * $i; }";
                Function fak = new Function("FAK", code, typeof(int));
                fak.AddParameterInt("I");
                AllFunctions.Add(fak);
                */
                Loaded = true;
            }
            else
            {
                Console.WriteLine("All Functions have been loaded before!");
            }
        }
예제 #17
0
        /// <summary>
        /// Lädt die Konfiguration des HardwareControllers, wenn dieser erstellt wird, aus der entsprechenden XML Datei
        /// </summary>
        protected virtual void InternalLoad()
        {
            Data.DataSafe ds = new Data.DataSafe(Data.Paths.SettingsConfigurationPath, "HardwareController");
            int           ac = ds.Ints["AxisCount", 0];

            for (int i = 0; i < ac; ++i)
            {
                string a = ds.Strings["Axis-" + i, ""].ToUpper();
                NewAxis(a);
            }

            int ic = ds.Ints["IOCount", 0];

            for (int i = 0; i < ic; ++i)
            {
                string a = ds.Strings["IO-" + i, ""].ToUpper();
                NewIOController(a);
            }
            this.AllIOs.Sort(delegate(IOController i1, IOController i2)
            {
                if (i1 == null || i2 == null)
                {
                    return(0);
                }
                return(string.Compare(i1.ControlIdent, i2.ControlIdent));
            });

            int tc = ds.Ints["ToolCount", 0];

            for (int i = 0; i < tc; ++i)
            {
                string a = ds.Strings["Tool-" + i, ""].ToUpper();
                if (a != "" && a != "NO-TOOL")
                {
                    NewTool(a);
                }
            }

            //Camera
            CurrentCamera = NewCamera(ds.Strings["CameraURL", "http://localhost:8080/CameraService"]);
            LaserControl.ScriptV2.GlobalObjects.Camera = CurrentCamera;

            //Properties
            this.TableOrigin[0] = ds.Ints["TableOrigin-X", 0];
            this.TableOrigin[1] = ds.Ints["TableOrigin-Y", 0];

            this.TableCenter[0] = ds.Ints["TableCenter-X", 0];
            this.TableCenter[1] = ds.Ints["TableCenter-Y", 0];

            this.LoadPosition[0] = ds.Ints["LoadPosition-X", 0];
            this.LoadPosition[1] = ds.Ints["LoadPosition-Y", 0];
            this.LoadPosition[2] = ds.Ints["LoadPosition-Z", 0];

            this.IntelligentScribe = ds.Bools["IntelligentScribe", false];

            this.HomeWhileScribing       = ds.Bools["HomeWhileScribing", false];
            this.HomeWhileScribingNumber = ds.Ints["HomeWhileScribingNumber", 0];
            int hwsac = ds.Ints["HomeWhileScribingAxesCount", 0];

            this.HomeWhileScribingAxes.Clear();
            for (int i = 0; i < hwsac; ++i)
            {
                this.HomeWhileScribingAxes.Add(ds.Strings["HWSAxis-" + i, ""]);
            }
        }
예제 #18
0
        public virtual void Save()
        {
            Data.DataSafe ds = new Data.DataSafe(Data.Paths.SettingsConfigurationPath, "HardwareController");

            ds.Ints["AxisCount"] = AllAxes.Count;
            ds.Ints["IOCount"] = AllIOs.Count;
            ds.Ints["ToolCount"] = AllTools.Count-1;

            for (int i = 0; i < AllAxes.Count; ++i)
            {
                ds.Strings["Axis-"+i] = AllAxes[i].ControlIdent;
                AllAxes[i].Save();
            }

            for (int i = 0; i < AllIOs.Count; ++i)
            {
                ds.Strings["IO-"+i] = AllIOs[i].ControlIdent;
                AllIOs[i].Save();
            }

            int index = 0;
            for (int i = 0; i < AllTools.Count; ++i)
            {
                if (AllTools[i] != NoTool)
                {
                    ds.Strings["Tool-" + index] = AllTools[i].ControlIdent;
                    AllTools[i].Save();
                    ++index;
                }
            }

            //Camera
            ds.Strings["CameraURL"] = CurrentCamera.Path;

            //Properties
            ds.Ints["TableOrigin-X"] = this.TableOrigin[0];
            ds.Ints["TableOrigin-Y"] = this.TableOrigin[1];

            ds.Ints["TableCenter-X"] = this.TableCenter[0];
            ds.Ints["TableCenter-Y"] = this.TableCenter[1];

            ds.Ints["LoadPosition-X"] = this.LoadPosition[0];
            ds.Ints["LoadPosition-Y"] = this.LoadPosition[1];
            ds.Ints["LoadPosition-Z"] = this.LoadPosition[2];

            ds.Bools["IntelligentScribe"] = this.IntelligentScribe;

            ds.Bools["HomeWhileScribing"] = this.HomeWhileScribing;
            ds.Ints["HomeWhileScribingNumber"] = this.HomeWhileScribingNumber;

            ds.Ints["HomeWhileScribingAxesCount"] = this.HomeWhileScribingAxes.Count;
            for (int i = 0; i < this.HomeWhileScribingAxes.Count; ++i)
            {
                ds.Strings["HWSAxis-" + i] = this.HomeWhileScribingAxes[i];
            }
        }
예제 #19
0
        public static void Load()
        {
            if (!Loaded)
            {
                AllCategories.Clear();
                AllFunctions.Clear();

                FunctionCategory AllCat = new FunctionCategory("All Functions");
                //AllCategories.Add(AllCat);

                //1) Lade alle Kategorien!
                DataSafe ds       = new Data.DataSafe(Data.Paths.SettingsPath, "Functions");
                int      catCount = ds.Ints["Categories", 0];
                for (int i = 0; i < catCount; ++i)
                {
                    string name = ds.Strings["Category-" + i, ""];

                    /*if (string.IsNullOrEmpty(name) || string.IsNullOrWhiteSpace(name))
                     * {
                     *  throw new Exception("Error in Function Categories -> Functions.xml");
                     * }*/

                    FunctionCategory category = new FunctionCategory(name);


                    DataSafe catSafe  = new DataSafe(Data.Paths.SettingsScriptFunctionsPath, "Category-" + name);
                    int      funCount = catSafe.Ints["Functions", 0];
                    for (int f = 0; f < funCount; ++f)
                    {
                        string funName = catSafe.Strings["Function-" + f, ""];
                        AllCat.Functions.Add(funName);
                        category.Functions.Add(funName);

                        //Lade eine Funktion
                        AllFunctions.Add(Function.Load(funName));
                    }

                    category.Sort();
                    AllCategories.Add(category);
                }

                //AllFunctions.Sort();
                AllCat.Sort();

                AllCategories.Sort();
                AllCategories.Insert(0, AllCat);



                /*
                 * string code = "$RETURN = 1;if( $i > 1 ){ $RETURN = FAK($i - 1) * $i; }";
                 * Function fak = new Function("FAK", code, typeof(int));
                 * fak.AddParameterInt("I");
                 * AllFunctions.Add(fak);
                 */
                Loaded = true;
            }
            else
            {
                Console.WriteLine("All Functions have been loaded before!");
            }
        }
예제 #20
0
 public static void Save()
 {
     DataSafe ds = new Data.DataSafe(Data.Paths.SettingsPath, "Functions");
     ds.Ints["Categories"] = AllCategories.Count-1;
     for (int i = 1; i < AllCategories.Count; ++i)
     {
         FunctionCategory category = AllCategories[i];
         ds.Strings["Category-" + (i-1)] = category.Title.ToUpper();
         DataSafe catSafe = new DataSafe(Data.Paths.SettingsScriptFunctionsPath, "Category-" + category.Title);
         catSafe.Ints["Functions"] = category.Functions.Count;
         for (int f = 0; f < category.Functions.Count; ++f)
         {
             catSafe.Strings["Function-" + f] = category.Functions[f].ToUpper();
             GetFunction(category.Functions[f]).Save();
         }
     }
 }
예제 #21
0
        /// <summary>
        /// Lädt die Konfiguration des HardwareControllers, wenn dieser erstellt wird, aus der entsprechenden XML Datei
        /// </summary>
        protected virtual void InternalLoad()
        {
            Data.DataSafe ds = new Data.DataSafe(Data.Paths.SettingsConfigurationPath, "HardwareController");
            int ac = ds.Ints["AxisCount",0];
            for (int i = 0; i < ac; ++i)
            {
                string a = ds.Strings["Axis-" + i, ""].ToUpper();
                NewAxis(a);
            }

            int ic = ds.Ints["IOCount", 0];
            for (int i = 0; i < ic; ++i)
            {
                string a = ds.Strings["IO-" + i, ""].ToUpper();
                NewIOController(a);
            }
            this.AllIOs.Sort(delegate(IOController i1, IOController i2)
            {
                if (i1 == null || i2 == null) return 0;
                return string.Compare(i1.ControlIdent, i2.ControlIdent);
            });

            int tc = ds.Ints["ToolCount", 0];
            for (int i = 0; i < tc; ++i)
            {
                string a = ds.Strings["Tool-" + i, ""].ToUpper();
                if(a != "" && a != "NO-TOOL"){
                    NewTool(a);
                }

            }

            //Camera
            CurrentCamera = NewCamera(ds.Strings["CameraURL", "http://localhost:8080/CameraService"]);
            LaserControl.ScriptV2.GlobalObjects.Camera = CurrentCamera;

            //Properties
            this.TableOrigin[0] = ds.Ints["TableOrigin-X",0];
            this.TableOrigin[1] = ds.Ints["TableOrigin-Y", 0];

            this.TableCenter[0] = ds.Ints["TableCenter-X", 0];
            this.TableCenter[1] = ds.Ints["TableCenter-Y", 0];

            this.LoadPosition[0] = ds.Ints["LoadPosition-X", 0];
            this.LoadPosition[1] = ds.Ints["LoadPosition-Y", 0];
            this.LoadPosition[2] = ds.Ints["LoadPosition-Z", 0];

            this.IntelligentScribe = ds.Bools["IntelligentScribe", false];

            this.HomeWhileScribing = ds.Bools["HomeWhileScribing", false];
            this.HomeWhileScribingNumber = ds.Ints["HomeWhileScribingNumber",0];
            int hwsac = ds.Ints["HomeWhileScribingAxesCount", 0];
            this.HomeWhileScribingAxes.Clear();
            for (int i = 0; i < hwsac; ++i)
            {
                this.HomeWhileScribingAxes.Add(ds.Strings["HWSAxis-"+i, ""]);
            }
        }
예제 #22
0
 public HardwareSelector(Data.DataSafe mwDataSafe)
 {
     InitializeComponent();
     MWDS = mwDataSafe;
 }
예제 #23
0
        /// <summary>
        /// Speichert alle Konfigurationen für alle Ports für diesen IOController in die Konfigurationsdatei
        /// </summary>
        public virtual void Save()
        {
            Data.DataSafe ds = new Data.DataSafe(Data.Paths.SettingsConfigurationPath, ControlIdent + "-IO.xml");
            ds.Strings["ControlIdent"] = ControlIdent;
            ds.Strings["Name"] = Name;

            ds.Ints["Count"] = AllIOPorts.Count;

            for (int i = 0; i < AllIOPorts.Count; ++i)
            {
                AllIOPorts[i].Save(i, ds);
            }
        }
예제 #24
0
        /// <summary>
        /// Lädt alle Ports für diesen IOController aus der Konfigurationsdatei
        /// </summary>
        public virtual void Load()
        {
            Data.DataSafe ds = new Data.DataSafe(Data.Paths.SettingsConfigurationPath, ControlIdent + "-IO.xml");
            if (!ds.containsKey("ControlIdent"))
            {
                throw new Exception("Incorect save file for an IO Controller!");
            }

            this.Name = ds.Strings["Name", ""];
            int count = ds.Ints["Count", 0];

            this.AllIOPorts.Clear();

            for (int i = 0; i < count; ++i)
            {
                IOPort p = IOPort.Load(i, ds);
                AllIOPorts.Add(p);
            }
            SortIOPorts();
        }