private static void TestAblauf(FunctionEventArgs e) { var listeDigEingaenge = new List <DigEingaengeSetzen>(); var listeDigAusgaenge = new List <DigAusgaengeTesten>(); for (var i = 0; i < e.Parameters[0].ListCount; i++) { listeDigEingaenge.Add(new DigEingaengeSetzen( (ulong)e.Parameters[0][i][0].ToInteger(), // BitMuster e.Parameters[0][i][1].ToString(), // ZeitDauer e.Parameters[0][i][2].ToString())); // Kommentar } DigEingaengeSetzen.SetAktuellerSchritt(0); for (var i = 0; i < e.Parameters[1].ListCount; i++) { listeDigAusgaenge.Add(new DigAusgaengeTesten( (ulong)e.Parameters[1][i][0].ToInteger(), // Bitmuster (ulong)e.Parameters[1][i][1].ToInteger(), // Bitmaske e.Parameters[1][i][2].ToString(), // Dauer e.Parameters[1][i][3].ToFloat(), // Toleranz e.Parameters[1][i][4].ToString(), // TimeOut e.Parameters[1][i][5].ToString())); // Kommentar } DigAusgaengeTesten.SetAktuellerSchritt(0); var gesamteTimeOutZeit = listeDigAusgaenge.Sum(test => test.GetTimeoutMs()); var stopwatch = new Stopwatch(); stopwatch.Start(); while (stopwatch.ElapsedMilliseconds < gesamteTimeOutZeit) { Thread.Sleep(10); var testAblaufDigEingaengeFertig = FunktionDigEingaenge(listeDigEingaenge, stopwatch); var testAblaufDigAusgaengeFertig = FunktionDigAusgaenge(listeDigAusgaenge, stopwatch); if (testAblaufDigEingaengeFertig && testAblaufDigAusgaengeFertig) { return; } } DataGridAnzeigeUpdaten(AutoTester.TestErgebnis.Timeout, 0, "uups"); }
private static bool FunktionDigEingaenge(IReadOnlyList <DigEingaengeSetzen> listeDi, Stopwatch aktuelleZeit) { var schritt = DigEingaengeSetzen.GetAktuellerSchritt(); var aufgabe = listeDi[schritt]; switch (aufgabe.GetAktuellerStatus()) { case DigEingaengeSetzen.StatusDigEingaenge.Init: if (aufgabe.GetDauer().DauerMs == 0) { aufgabe.SetAktuellerStatus(DigEingaengeSetzen.StatusDigEingaenge.SchrittAbgeschlossen); return(true); } DataGridAnzeigeUpdaten(AutoTester.TestErgebnis.Erfolgreich, 0, "DI[" + schritt + "]: " + aufgabe.GetKommentar()); aufgabe.SetStartzeit(aktuelleZeit.ElapsedMilliseconds); aufgabe.SetAktuellerStatus(DigEingaengeSetzen.StatusDigEingaenge.SchrittAktiv); SetDigitaleEingaengeWord(aufgabe.GetBitmuster()); return(false); case DigEingaengeSetzen.StatusDigEingaenge.SchrittAktiv: SetDigitaleEingaengeWord(aufgabe.GetBitmuster()); if (aktuelleZeit.ElapsedMilliseconds <= aufgabe.GetEndZeit()) { return(false); } aufgabe.SetAktuellerStatus(DigEingaengeSetzen.StatusDigEingaenge.SchrittAbgeschlossen); DigEingaengeSetzen.SetNaechsterSchritt(); return(false); case DigEingaengeSetzen.StatusDigEingaenge.SchrittAbgeschlossen: SetDigitaleEingaengeWord(aufgabe.GetBitmuster()); break; default: throw new ArgumentOutOfRangeException(aufgabe.GetAktuellerStatus().ToString()); } return(false); }