Ejemplo n.º 1
0
        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");
        }
Ejemplo n.º 2
0
        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);
        }