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 - 26.12.2011 13:14)
Als Antwort auf Re: tägliche Ansteuerung von Rene - 23.12.2011 13:28

Nochmal ich...

also ich habe das jetzt geändert, die Sekunden werden
aber immer noch nicht geschalten, ich vermute langsam das
die C2 das garnicht hinbekommt.
Gibt es eine Variante wie man das lösen könnte?

Danke im voraus
GruÃ? Rene

> 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 André H. - 3.01.2012 1:25)