Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

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
Ich nutze:
C-Control II Station
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: