public bool InitialisiereTeile(string pfadZuCSV) { Console.WriteLine("Einganglager: Einlesen gestartet!"); var lines = File.ReadLines(pfadZuCSV); bool firstLine = true; foreach (var line in lines) { if (firstLine) { firstLine = false; continue; } // einfach nur die Kopfzeile überspringen var worte = line.Split(';'); // teile zeile in worte //erstelle teil infos var seriennummer = worte[0]; List <Verarbeitungsschritt> rezept = new List <Verarbeitungsschritt>(); for (int i = 1; i <= 4; i++) { if (worte[i] != "") { rezept.Add((Verarbeitungsschritt)Enum.Parse(typeof(Verarbeitungsschritt), worte[i])); } } // erstelle objekt "Teil" Teil teil = new Teil(rezept, seriennummer); // für teil teile liste hinzu _BestandZubearbeiten.Add(teil); } Console.WriteLine("Einganglager: " + _BestandZubearbeiten.Count + " Teile eingelesen."); return(true); }
private void GibHistorieAus(Teil t) { string serienNummer = t.GetSeriennummer(); Console.Write("LagerAus: " + serienNummer + " "); foreach (Tuple <Verarbeitungsschritt, string> historienEintrag in t.LiefereHistorie()) { Console.Write("( " + historienEintrag.Item1 + " - " + historienEintrag.Item2 + " );"); } Console.Write("\n"); }
public Teil TeilAusgeben() { if (_BestandZubearbeiten.Count > 0) { Teil tempTeil = _BestandZubearbeiten[0]; _BestandZubearbeiten.RemoveAt(0); return(tempTeil); } Console.WriteLine("!!! Einganslager: leer."); return(null); }
public void Start() { // TODO: schaue ob alle Verarbeitungsschritte in FIs behandelt werden können DateTime nächsterSchritt = DateTime.Now; while (!IstFertig()) { if (DateTime.Now >= nächsterSchritt.AddSeconds(1 / 4.0)) { nächsterSchritt = DateTime.Now; Produktionseinrichtung prodEinr = GetAbholbereiteProduktionseinrichtung(); // wenn es eine abholbereite produktionseinrichtung gibt if (prodEinr != null) { // hole teil if (prodEinr is EingangsLager) { _AktuellesTeil = ((EingangsLager)prodEinr).TeilAusgeben(); } else if (prodEinr is Fertigungsinsel) { _AktuellesTeil = ((Fertigungsinsel)prodEinr).TeilZurueckgeben(); // _aktue } Console.WriteLine(_AktuellesTeil.GetSeriennummer() + " < " + prodEinr.GetName()); if (_AktuellesTeil.SelbstTestTeil()) { Console.WriteLine(_AktuellesTeil.GetSeriennummer() + " > LagerAus"); FindeAusgangsLager().TeilFuerDenVersandEmpfangen(_AktuellesTeil); } else { Fertigungsinsel insel = GetSchnellsteFertigungsinsel(); // wenn es keine FI gibt die das teil verarbeiten kann if (insel == null) { Console.WriteLine(_AktuellesTeil.GetSeriennummer() + " > LagerEin"); findeEingangsLager().TeilZwischenlagern(_AktuellesTeil); } else { Console.WriteLine(_AktuellesTeil.GetSeriennummer() + " > " + insel.GetName()); insel.TeilEntgegennehmen(_AktuellesTeil); } } } } } Console.WriteLine("Robbie ist fertig. " + FindeAusgangsLager().GetBestand().Count + " Teile im Ausgangslager"); }
public void TeilEntgegennehmen(Teil t) { // if (BerechneStatus() == Status.EMPFANGSBEREIT) { _aktuellesTeil = t; // setze belegt bis Verarbeitungsschritt naechsterSchritt = _aktuellesTeil.TransferiereSchrittInHistorie(this); int dauer = GetBearbeitungsdauerFuerSchritt(naechsterSchritt); _BelegtBis = DateTime.Now.AddSeconds(dauer / 4.0); // } else { // Console.WriteLine("!! " + _Name + " belegt. Teil kann nicht angenommen werden."); // } }
public Teil TeilZurueckgeben() { // if (BerechneStatus() == Status.ABHOLBEREIT) { Teil tempTeil = _aktuellesTeil; _aktuellesTeil = null; // Console.WriteLine(_Name + ": Teil zurueck gegeben. Seriennummer: " + tempTeil.GetSeriennummer()); return(tempTeil); // } else { // Console.WriteLine("!!!" + _Name + ": Teil nicht abholbereit. Teil kann nicht zurueck gegeben werden."); // return null; //} }
public void TeilFuerDenVersandEmpfangen(Teil t) { _Bestand.Add(t); GibHistorieAus(t); }
public void TeilZwischenlagern(Teil t) { _BestandZubearbeiten.Add(t); // Console.WriteLine("Einganglager: " + t.GetSeriennummer() + " zwischengelagert."); }