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

Re: Code verschluckt? Kategorie: Programmierung (von AndrĂ© H. - 8.01.2012 19:28)
Als Antwort auf Re: Code verschluckt? von Rene Schulz - 7.01.2012 19:47
Ich nutze:
C-Control II Unit, C164CI-ControllerBoard, C-Control II Station, CC2-Application-Board, CC2-StarterBoard, CC2-ReglerBoard, OSOPT V3.1
Hallo Rene,

> also Du überschätzt mich da ganz arg, ich habe erst begonnen
> mich mit der CC2 näher zu Beschäftigen, da bin ich
> sicher noch nicht so weit um mal schnell einen Timer
> zu Programmieren. ;)

Der Thread ist noch sehr einfach gehalten. :-)
Gut, das Auslagern der Schaltzeiten in ein Konstantenarray war evtl. fĂĽr den Anfang
etwas gemein. Aber ein einfacher Count-Down-Timer ist nichts schwieriges.
Schau Dir den Quellcode einfach nochmal an und versuche diesen zu verstehen.



const schaltzeiten[]= 073000, 173000, -1; //7:30:00, 17:30:00
const schaltdauer= 45;// in Sekunden
int sectimer;
 
int state;//Variable fĂĽr Debugging

thread main
{
 long timeserial; // Time-Serial im Format HHNNSS
 int i; // Zähler fĂĽr Schaltzeiten
 byte second;
 second=system.second();
 loop
 {
  wait second!=system.second(); //Aus Sekundenwechsel warten
  second=system.second();
  //"Zeitstempel" erstellen:
  timeserial=cast.intLong(system.hour())*10000 + system.minute()*100 + system.second();
  i=0; // i mit 0 initialisieren

  do
  {// Schleife zum Abarbeiten der in schaltzeiten[] definierten Zeitpunkte
   if timeserial==schaltzeiten[i]  //Schaltzeiten aus Array
    {// Wenn der Zeitstempel der Schaltzeit entspricht
     sectimer=schaltdauer; //Timer auf Schaltdauer setzen, hier 45sec.
//     stports.setRel(2, 1); //Zum Testen im Simulator auskommentiert
     state=-1;
    }
   if schaltzeiten[i]==-1 i=-1; else i=i+1; //Wenn keine weiteren Schaltzeiten, i auf -1 setzen,
   //damit die Schleife verlasen wird.
  } while i >= 0; //FuĂ?gesteuerte Schleife, wird verlassen, wenn i kleiner 0

  if sectimer>0 sectimer=sectimer-1;
  else
  if sectimer==0
   {// Wenn Timer abgelaufen ist, Relais ausschalten
//    stports.setRel(2, 0); //Zum Testen im Simulator auskommentiert
    state=0;
    sectimer=-1;
   }
 }
}


MfG André H.



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

Das macht meine Heizung gerade


    Antwort schreiben


Antworten:

Re: Code verschluckt? (von Rene Schulz - 9.01.2012 19:50)