Exemplo 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");
        }
Exemplo n.º 2
0
        private static bool FunktionDigAusgaenge(IReadOnlyList <DigAusgaengeTesten> listeDa, Stopwatch aktuelleZeit)
        {
            var schritt = DigAusgaengeTesten.GetAktuellerSchritt();

            if (schritt >= listeDa.Count)
            {
                return(true);
            }
            var aufgabe = listeDa[schritt];

            var digBitmaske  = aufgabe.GetBitMaske().GetDec();
            var digBitmuster = aufgabe.GetBitMuster().GetDec();
            var digOutputIst = GetDigitalOutputWord();

            switch (aufgabe.GetAktuellerStatus())
            {
            case DigAusgaengeTesten.StatusDigAusgaenge.Init:
                aufgabe.SetStartzeit(aktuelleZeit.ElapsedMilliseconds);
                aufgabe.SetAktuellerStatus(DigAusgaengeTesten.StatusDigAusgaenge.AufBitmusterWarten);
                AutoTesterWindow.DataGridId++;
                DataGridAnzeigeUpdaten(AutoTester.TestErgebnis.Aktiv, (uint)digBitmuster, "DA[" + schritt + "]: " + aufgabe.GetKommentar());
                return(false);

            case DigAusgaengeTesten.StatusDigAusgaenge.AufBitmusterWarten:
                DataGridAnzeigeUpdaten(AutoTester.TestErgebnis.AufBitmusterWarten, (uint)digBitmuster, "DA[" + schritt + "]: " + aufgabe.GetKommentar());
                if ((digOutputIst & digBitmaske) == digBitmuster)
                {
                    aufgabe.SetAktuellerStatus(DigAusgaengeTesten.StatusDigAusgaenge.BitmusterLiegtAn);
                }
                if (aktuelleZeit.ElapsedMilliseconds > aufgabe.GetTimeoutMs())
                {
                    DataGridAnzeigeUpdaten(AutoTester.TestErgebnis.Timeout, (uint)digBitmuster, "DA[" + schritt + "]: " + aufgabe.GetKommentar());
                    aufgabe.SetAktuellerStatus(DigAusgaengeTesten.StatusDigAusgaenge.Timeout);
                    DigAusgaengeTesten.SetNaechsterSchritt();
                    return(false);
                }
                break;

            case DigAusgaengeTesten.StatusDigAusgaenge.BitmusterLiegtAn:
                if ((digOutputIst & digBitmaske) != digBitmuster)
                {
                    if (aktuelleZeit.ElapsedMilliseconds < aufgabe.GetZeitdauerMin())
                    {
                        aufgabe.SetAktuellerStatus(DigAusgaengeTesten.StatusDigAusgaenge.SchrittAbgeschlossen);
                        DataGridAnzeigeUpdaten(AutoTester.TestErgebnis.ImpulsWarZuKurz, (uint)digBitmuster, "DA[" + schritt + "]: " + aufgabe.GetKommentar());
                        DigAusgaengeTesten.SetNaechsterSchritt();
                    }

                    if (aktuelleZeit.ElapsedMilliseconds < aufgabe.GetZeitdauerMax())
                    {
                        aufgabe.SetAktuellerStatus(DigAusgaengeTesten.StatusDigAusgaenge.SchrittAbgeschlossen);
                        DataGridAnzeigeUpdaten(AutoTester.TestErgebnis.Erfolgreich, (uint)digBitmuster, "DA[" + schritt + "]: " + aufgabe.GetKommentar());
                        DigAusgaengeTesten.SetNaechsterSchritt();
                    }
                }

                if (aktuelleZeit.ElapsedMilliseconds <= aufgabe.GetZeitdauerMax())
                {
                    return(false);
                }

                aufgabe.SetAktuellerStatus(DigAusgaengeTesten.StatusDigAusgaenge.SchrittAbgeschlossen);
                DataGridAnzeigeUpdaten(AutoTester.TestErgebnis.ImpulsWarZuLang, (uint)digBitmuster, "DA[" + schritt + "]: " + aufgabe.GetKommentar());
                DigAusgaengeTesten.SetNaechsterSchritt();
                return(false);

            case DigAusgaengeTesten.StatusDigAusgaenge.SchrittAbgeschlossen:
            case DigAusgaengeTesten.StatusDigAusgaenge.Timeout:
                DataGridAnzeigeUpdaten(AutoTester.TestErgebnis.Fehler, (uint)digBitmuster, "DA[" + schritt + "]: " + "Status:" + aufgabe.GetAktuellerStatus());
                return(false);

            default: throw new ArgumentOutOfRangeException(aufgabe.GetAktuellerStatus().ToString());
            }
            return(false);
        }