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

Re: tägliche Ansteuerung Kategorie: Programmierung (von Jörg Hansen - 22.12.2011 21:12)
Als Antwort auf tägliche Ansteuerung von Rene Schulz - 22.12.2011 9:30
Ich nutze:
C-Control II Unit, OSOPT V3.1
Hallo Rene,

3 Fehler fallen mir ins Auge (wobei Nr.1 dein eigentliches Problem ist):

1)  time=system.hour()*10000 + system.minute()*100 + system.second();
Wenn du system.hour mal 100 nimmst, kommst Du nie ĂĽber 8259 (2300+5900+59) hinaus.

2) Die Varibale sec wird verwendet, jedoch nie gesetzt:
wait system.second() != sec;
Was möchtest Du damit erreichen? 1 Sekunde Pause?
Dann mache es so:
wait system.second() != sec;
sec = system.second();


3) Bedingungen einklammern:
if (time >= 220010  and time <= 222555) or (time >= 222905 and time <= 230148)
Besser ist dass...

Zu Deiner zweiten Frage:
Wenn der thread dauerhaft läuft, sollte er auch seine tägliche Arbeit verrichten.
Zum Starten der threads: Starte diese in main, jedoch vor dem loop.

GruĂ?
Jörg

> Hallo Leute,
>
> ich habe zwei Probleme mit der Zeitsteuerung.
>
> Im unten stehenden Code soll ein Relais, zeitabhängig, geschaltet werden,
> wenn ich die ausgeklammerte "Testzeit" nehme, dann geht es, nehme ich aber eine andere Zeit
> geht es nicht mehr.
> Was mache ich hier falsch?
>
> und zum zweiten...
>
> Wie muss ich den Code schreiben, damit das Programm jeden Tag abläuft und nicht nur
> an einem Tag?
>
> Danke fĂĽr Eure Hilfe ich verzweifel langsam :(
> MfG Rene
>
> thread regen
> {
>   byte port;
>   byte rel;
>   byte hour, min, sec;
>   int  state;
>   int  time;
>
>  stports.init();
>  lcdext.init();
>
> /*******************************************/
> /********   ANSTEUERUNG LCD    *************/
> /*******************************************/
>
>  lcdext.line(2);
>  lcdext.print("  TERRA: REGEN");
>  sleep 500;
>  lcdext.clear();
>
> /*******************************************/
> /*********** Zeitschaltuhr Regen ***********/
> /********Es wird jeden Tag geschaltet*******/
> /*******************************************/
>
> loop
>
> {
> min = system.minute();
> wait system.second() != sec;
> time=system.hour()*100 + system.minute()*100 + system.second();
>
> /**************************************************************/
> /******** Zeitdefinition Stunden Minuten Sekunden *************/
> /*** Ein 07:30:00 und 17:00:00 Aus 07:30:45 und 17:00:45 ******/
> /**************************************************************/
> //if time >= 000020  and time <= 000030 or time >= 000110 and time <= 000120 <- Testeinstellung
>
> if time >= 220010  and time <= 222555 or time >= 222905 and time <= 230148
>
>    stports.setRel(2,1);
> else
>    stports.setRel(2,0);
>  };
> };

>
> hier noch der Mainthread, falls gebraucht...
>
> thread main
>  
>  {
>  byte second;
>  int a, b, c;
>  int time;
>  long timeset;
>  stports.LCDlight(1);
>  lcdext.init();
>  lcdext.clear();
>
>      lcdext.print("ZEIT EINSTELLUNG");
>      lcdext.line(2);
>      lcdext.print("BITTE  EINGEBEN");
> sleep 2000;
>      lcdext.clear();
>      lcdext.print("     STUNDE     ");
> sleep 2000;
>      lcdext.clear();
>      timeset=stkeyb.input (2, 2, 5000);
>      a=timeset;
>      lcdext.clear();
>      lcdext.print("     MINUTEN    ");
> sleep 2000;
>      lcdext.clear();
>      timeset=stkeyb.input (2, 2, 5000);
>      b=timeset;
>      c=00;
>      system.settime(a, b, c);
>      lcdext.clear();
>      
>      lcdext.print("DATE EINSTELLUNG");
>      lcdext.line(2);
>      lcdext.print("BITTE  EINGEBEN");
> sleep 2000;
>      lcdext.clear();
>      lcdext.print("      JAHR      ");
> sleep 2000;
>      lcdext.clear();
>      timeset=stkeyb.input (4, 4, 5000);
>      a=timeset;
>      lcdext.clear();
>      lcdext.print("    MONAT     ");
> sleep 2000;
>      lcdext.clear();
>      timeset=stkeyb.input (2, 2, 5000);
>      b=timeset;
>      lcdext.clear();
>      lcdext.print("      TAG       ");
> sleep 2000;
>      lcdext.clear();
>      timeset=stkeyb.input (2, 2, 5000);
>      c=timeset;
>      lcdext.clear();
>      system.setdate(a, b, c);
>      lcdext.clear();
> sleep 2000;
>      lcdext.print("DATE AND TIME");
>      lcdext.line(2);
>      lcdext.print("ERFOLGREICH");
> sleep 2000;
>      lcdext.clear();
>
>
>             loop
>
>      {
>      second=system.second();
>      lcdext.line(1);
>      lcdext.time(1);
>      lcdext.line(2);
>      lcdext.date(1);
> sleep 500;
>      lcdext.goto(1,2);
>      lcdext.put(' ');
>      lcdext.goto(1,5);
>      lcdext.put(' ');
> wait second!=system.second();
>
>
>    {
>    run lichtsteuerung.licht;
>    run regensteuerung.regen;
>    }
>   }
>  }


    Antwort schreiben


Antworten:

Re: tägliche Ansteuerung (von Rene - 23.12.2011 13:28)
    Re: tägliche Ansteuerung (von Rene - 26.12.2011 13:14)
        Re: tägliche Ansteuerung (von André H. - 3.01.2012 1:25)