Untitled
raw download clone
CSHARP
views 12
,
size 6032 b
namespace Beleg2020
{
    class Fertigungsabteilung
    {
        static private bool firstLine = true;
        static private Transportroboter Transportroboter;
        static private List<Produktionseinrichtung> RegistrierteProduktionseinrichtungen;
        static private Eingangslager Eingangslager;
        static private Ausgangslager Ausgangslager;


        #region Funktionen per UML
        /// <summary>
        /// Diese Funktion list die Anlagenkonfiguration aus der Config.csv.
        /// Sie können das hier gezeigte Vorgehen im Eingangslager adaptieren, 
        /// um dort die Teile zu erzeugen.
        /// 
        /// Beachten Sie bitte, das die .csv-Datein im Hauptverzeichniss des Projektes liegen!
        /// Da VisualStudio, je nach Ihrer Konfiguration, das ausführbare Projekt im debug- oder 
        /// release Unterordner erzeugt müssen die den Pfad von dort aus zu den .csv-Datein angeben.
        /// z.B. "..\\..\\..\\Config.csv", was hier genaugenommen bedeutet, gehe drei Verzeichnissebenen
        /// nach oben, dort sind die entsprechenden Datein zu finden.
        /// </summary>
        /// <param name="path">der relative Pfad zu .csv Datei</param>
        /// <returns></returns>
        private static bool LiesKonfig(string path, string pathTeil)
        {
            List<Tuple<Verarbeitungsschritt, int>> ListeFähigkeitenMitDauer;
            RegistrierteProduktionseinrichtungen = new List<Produktionseinrichtung>();

            Console.WriteLine("Einlesen gestartet!");
            var lines = File.ReadLines(path);
            foreach (var line in lines)
            {
                if (firstLine) { firstLine = false; continue; } // einfach nur die Kopfzeile überspringen

                var strings = line.Split(';');
                var name = strings[0];
                ListeFähigkeitenMitDauer = new List<Tuple<Verarbeitungsschritt, int>>();
                for (int i = 1; i < strings.Length; i++)
                {

                    var s = strings[i].Split(':');
                    ListeFähigkeitenMitDauer.Add(
                        new Tuple<Verarbeitungsschritt, int>(
                            (Verarbeitungsschritt)Enum.Parse(typeof(Verarbeitungsschritt), s[0]),
                            Int32.Parse(s.Length > 1 ? s[1] : "0") 
                            )
                        );
                }

                /**
                 * Hier werden die eigentlichen Objekte erzeugt. 
                 **/
                #region 


                if (ListeFähigkeitenMitDauer.Any(x => x.Item1 == Verarbeitungsschritt.INITIALISIEREN))
                {
                    //Eingangslager
                    Eingangslager = new Eingangslager();
                    for (int i = 0; i < LiesKonfigTeile(pathTeil).Count; i++)
                        Eingangslager.initialisiereTeil(LiesKonfigTeile(pathTeil)[i]);
                   
                    continue;
                }
                else if (ListeFähigkeitenMitDauer.Any(x => x.Item1 == Verarbeitungsschritt.EINLAGERN))
                {
                    //Ausgangslager
                    Ausgangslager = new Ausgangslager();
                    continue;
                } 
                else
                {
                    RegistrierteProduktionseinrichtungen.Add(new Fertigungsinsel(name, ListeFähigkeitenMitDauer));
                }

                #endregion
            }

            Transportroboter = new Transportroboter("Transportroboter");

            return true;
        }


        private static List<Teil> LiesKonfigTeile(string path)
        {
            List<Teil> Teile = new List<Teil>();

            Console.WriteLine("Einlesen gestartet!");
            var lines = File.ReadLines(path);
            foreach (var line in lines)
            {
                if (firstLine) { firstLine = false; continue; } // einfach nur die Kopfzeile überspringen

                var strings = line.Split(';');
                var Seriennummer = strings[0];
                List<Verarbeitungsschritt> Rezept = new List<Verarbeitungsschritt>();
                for (int i = 1; i < strings.Length; i++)
                {
                    var s = strings[i].Split(':');
                    Rezept.Add((Verarbeitungsschritt)Enum.Parse(typeof(Verarbeitungsschritt), s[0]));
                }

                Teile.Add(new Teil(Rezept ,Seriennummer));

            }

            return Teile;

        }

        private static bool RegistriereProduktionseinrichtungenAmRoboter()
        {
            Transportroboter.RegistrierteProduktionseinrichtungen(RegistrierteProduktionseinrichtungen, Eingangslager, Ausgangslager);
            return true;
        }

        private static bool InitProduktionseinrichtungen() 
        {
            
            Console.WriteLine("Initialisieren der Produktionseinrichtungen gestartet!");
            Console.WriteLine("Konfigurationsdatei wird zum Einlesen vorbereitet!");
            
            return LiesKonfig("..\\..\\..\\Config.csv", "..\\..\\..\\Teile.csv");
            
        }
        #endregion

        public static void Main()
        {

            Console.WriteLine("Simulation gestartet!");
            // Die folgende Zeile sollten sie nicht verändern, sie kann Ihnen helfen
            if (!_internal.Check()) return;

            if (InitProduktionseinrichtungen())
            {
                Console.WriteLine("Initialisierung der Produktionseinrichtungen gestartet");
                if (RegistriereProduktionseinrichtungenAmRoboter()) 
                {
                    Console.WriteLine("Module der Produktionseinrichtung erfolgreich am " +
                        "Roboter angemeldet! Roboter wird gestartet");

                    Transportroboter.start();

                }
            }
        }       
    }
}
close fullscreen
Login or Register to edit or fork this paste. It's free.