Autor Beitrag
smstyle
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Di 24.03.09 15:40 
Hallo,

Ausgangsbasis:
Während eines Maschineninitialisierungsprozesses kommuniziere ich per COM-Schnittstelle mit einer Maschine. Dabei sende ich Befehle und empfange Antworten in einer internen Antwortliste.

Problematik:
Ob die Maschinen bereit sind, sehe ich durch eine Überprüfung, die in einer Schleife erfolgt:
ausblenden C#-Quelltext
1:
 if (Antwortliste1.Ueberpruefen(kommando.maschinenzustand_1_ok) == true && Antwortliste2.Ueberpruefen(kommando.maschinenzustand_2_ok) == true)					


Nur wird die Schleife beim Ausführen ganz schnell durchlaufen, so dass noch keine Antwortdaten vorliegen und somit der Prozess scheitert (false). Füge ich ein Sleep ein, so hilft es kein bisschen. ABER: Es klappt wenn ich genau bei obiger Abfrage einen Haltepunkt einfüge und manuell per "F5" paar mal draufdrücke. Dabei erwische ich anscheinend jedes mal nen passenden Zeitpunkt und mein Initialisierungsprozess ist erfolgreich.

Lösungswunsch:
Per Haltepunkt und manuellem "F5" läuft das Programm. Ich möchte allerdings das ganze ohne Haltepunkt haben :)
Ideen?

Moderiert von user profile iconChristian S.: Code- durch C#-Tags ersetzt
Christoph1972
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 690
Erhaltene Danke: 16


VS2015 Pro / C# & VB.Net
BeitragVerfasst: Mi 25.03.09 23:47 
Hi,

läuft die Schleife nur um zu prüfen das die Maschinen ok sind? Kannst du nicht besser im DataReceived Event prüfen und dann ein Event feuern? So würde ich das machen.


Gruß
Christoph