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 Rene - 23.12.2011 13:28)
Als Antwort auf Re: tägliche Ansteuerung von Jörg Hansen - 22.12.2011 21:12

Hallo Jörg,

danke für Deine Antwort und die Hilfe, ich werde es so
umschreiben wie Du empfiehlst.

Zum Starten der threads: Starte diese in main,
jedoch vor dem loop.


Wie meinst Du das genau, also was müsste ich �ndern?

GruÃ? Rene

> 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 - 26.12.2011 13:14)
    Re: tägliche Ansteuerung (von André H. - 3.01.2012 1:25)