Re: port-abfrage Kategorie: Programmierung (von Haddi - 8.06.2004 11:47) | ||
Als Antwort auf Re: port-abfrage von Martin Binder - 22.05.2004 22:57 | ||
| ||
Hallo Martin, da hab ich mich wohl etwas unglücklich ausgedrückt. Den Beitrag hatte ich schon vorher gelesen. Aber dein hinweis, dass ich den task mit den beiden wait-Anweisungen blockiere hat mich doch weiter gebracht. Vielen Dank für die Hilfe Gruss Haddi > Hallo Haddi, > > ich glaube Du hast keine Idee wovon ich rede. > Lies mal meinen früheren Eintrag vom 22. April nach unter: > http://www.cc2net.de/Foren/CC2Net_Forum/lesen.php?eintrag=7228 > ( auch zu finden mit "Suchen" und dem Wort "timer" ) > > Mit den beiden "wait"- Befehlen kommst du nicht weiter, weil dann der Task blockiert ist. > > mfG > Martin > > > Hallo vielen Dank für die schnelle Antwort, > > > > ok, wenn ich also bspw. programmiere > > > > thread stoe_abfr > > {wait ports.get (8); > > if timer >= 1000 {a=1;} > > wait not ports.get (8) > > a=0; } > > > > wie geht das Programm denn dann weiter, wenn der timer noch kleiner 1000 ist. Meiner Ansicht nach > > bleibt er beim nächsten wait stehen bis port 8 = 0 ist. > > Aber eigentlich sollte der Thread doch in meinem Fall von Vorne beginnen. > > > > Haddi > > > > > Hallo, > > > > > > am elegantesten ist glaube ich folgendes: > > > setze ein Flag, wenn der Fehler erstmal auftritt, und starte einen Timer. > > > Ein Programmbeispiel dazu hab ich schon früher ins Forum gepostet. > > > > > > Dann bei jedem Durchlauf prüfst Du, ob der Fehler noch anliegt. > > > Wenn ja, prüfst Du, ob der Timer schon 1 Sekunde hinter sich hat. > > > Nochmals ja, und der Wert "a" kann gesetzt werden. > > > > > > Wenn vorher der Fehler verschwindet, wird Flag gelöscht und der Timer gestoppt. > > > > > > Damit kann man den Task auch für andere Aufgaben benutzen. > > > > > > Einfacher wäre ein schlichtes Sleep 1000, und eine zweite Abfrage vor dem Setzen von "a". > > > Allerdings ist das eher die Holzhammermethode, denn der Task ist 1 Sekunde blockiert. > > > > > > Martin > > > > > > > Hallo, > > > > > > > > das ist bestimmt ein ganz simples Problem, aber > > > > ich steh grad auf dem Schlauch und komm nicht weiter. > > > > Ich frage mit der CC2-Station eine Maschinenstörung ab. > > > > Im folgenden habe ich das mal vereinfacht dargestellt. > > > > > > > > thread stoe_abfr > > > > {wait ports.get (8); > > > > a=1; > > > > wait not ports.get (8) > > > > a=0; } > > > > > > > > Ich möchte jetzt, dass die Störung (also port(8)) mindestens 1 sec anliegt bevor in dem Beispiel > > > > a=1 gesetzt wird. Liegt dÃe Störung nur kurz an, soll das ganze von vorne beginnen. > > > > > > > > Ich hoffe mir kann da mal einer von Euch auf die Sprünge helfen. Im Voraus herzlichen Dank. > > > > > > > > Grüsse > > > > Haddi | ||
Antwort schreiben Antworten: |