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

Re: sleep für 150 sec? Kategorie: Programmierung (von André H. - 28.11.2003 0:06)
Als Antwort auf sleep für 150 sec? von Günter - 18.11.2003 23:49

Hallo Günter,

Der grö�te Wert für sleep beträgt, wie Du schon bemerkt hast, 65536.
Jedoch ist es nicht elegant, solche Verzögerungen mit einem sleep zu realisieren.
Besser wäre es hier, mit dem Timer zu arbeiten:

long timer;
...
timer=system.timer();
wait system.timer()-timer>Wartezeit
...


Wenn ein Thread mehrer verschiedene Dinge machen soll, ist es u.U. noch besser,
wenn man garnicht wartet, sondern mit if verzweigt, wenn die Wartezeit um ist.

Ã?brigens machst Du bei der Berechnung Deiner Wartezeit einen gern gemachten Fehler.
Mehr dazu siehe in den FAQs zum Thema Berechnungen.

MfG André H.

PS: einkleiner Tip: Arbeite mit den alternativen Station-Treibern.
Dann macht das Programmieren mehr SpaÃ?. :-)


> Hallo!
>
> Ich will mit meiner C-C II Station Stellantriebe für 3-Wegeventile ansteuern. Nachdem eine Stellbewegung
> bis zu 150 sec dauern kann, ist mir folgendes Problem aufgefallen:
>
> Ich kann die Relais nicht über einen sleep-Befehl 150s lang ansteuern, da laut Handbuch nur Int-Werte zulässig
> sind. Daher sind 150.000 Millisec. nicht möglich.
> Was soll ich tun?
>
> Danke,
> Günter
>
>
>
> Beiliegend die vielleicht noch ganz glückliche Funktion:
>
> int ventilstellpos2;   // in Prozent des Durchflusses
>
> function vent_oeff (byte ventil, int durchfluss)
>
>   {
>    long durchfluss2;
>    durchfluss2 = durchfluss*1500 - ventilstellpos2*1500;
>    ventilstellpos2 = durchfluss;
>    
>    if durchfluss2 > 0
>      {
>      station_io.RELon(1); // Relais1 schlieÃ?en
>      sleep durchfluss2;
>      station_io.RELoff(1); //Relais1 nach Laufzeit wieder öffnen
>      }
>
>    if durchfluss2 < 0
>      {
>      durchfluss2 = 0 - durchfluss2; //aus negativem Wert positiven machen
>      station_io.RELon(2); // Relais2 schlieÃ?en
>      sleep durchfluss2;
>      station_io.RELoff(2); //Relais2 nach Laufzeit wieder öffnen   }
>      }
>   }


Antworten bitte nur ins Forum!
Fragen per EMail auf Forum-Postings werden nicht beantwortet!

Das macht meine Heizung gerade


    Antwort schreiben


Antworten:

Re: sleep für 150 sec? (von Günter - 11.12.2003 1:42)
    Re: sleep für 150 sec? (von André H. - 19.12.2003 9:51)