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

Wichtig: Bevor Du wegen einem Problem mit der CC2 postest, stelle sicher, daß Du
die neueste OS-Version, die neuseste Compiler-DLL und die neuesten Modulversionen benutzt!
Beachte, daß sich auf der CD zur CC2-Unit/Station auch jetzt noch die ältesten Dateien befinden!
Es gelten folgende Anleitung und Regeln: Regeln CC2Net.de-Forum
Zurück zum Artikel  (Blaue Felder sind Pflichtfelder)


Name:   UserID: 
 E-Mail:
Kategorie
Betreff
Homepage:
Link-Titel:
Link-URL:
Cookie für Name, UserID, E-Mail, Homepage-URL setzen
(Erspart die Neueingabe bei Beiträgen und Antworten)
(Zum Löschen des Cookies hier klicken)
Ich nutze:
C-Control II Unit
C164CI-Controllerboard
C-Control II Station
CCRP5 mit CC2-Unit (Conrad Roboter)
CC2-Application-Board
CC2-StarterBoard
CC2-ReglerBoard
eigenes Board
original OS     OSOPT_V2     OSOPT V3.0 OSOPT V3.1

Kommentar:
Einfügen von HTML im Kommentar:

Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a>
Bild einfügen: <img src="BILDURL">
Text formatieren: <b>fetter Text</b>  <i>kursiver Text</i> <u>unterstrichener Text</u>
Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b>
C2 Quellcode formatieren: <code>Quellcode</code>
ASM Quellcode formatieren: <asm>Quellcode</asm>
(Innerhalb eines Quellcodeabschnitts ist kein html möglich.)
Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst !  

> Hallo Christian und Andre, > > ich habe eben den Code gefunden und denke er könnte mir auch Helfen. > Wo müsste man den Einfügen, wenn ich folgenden Thread habe? > Mein Problem ist jeweils die Ausschaltzeit, Rel2 sollte nur für > 45 Sekunden schließen und ich muss nun irgendwie 15 Sekunden von > angegebener Zeit abziehen. > > <code>thread regen > { > byte port; > byte Rel; > byte day, hour, min, second; > long 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.minute() != min; > time = system.hour()*100 + system.minute(); > day = system.dow(); > > /**************************************************************/ > /******** Zeitdefinition Stunden Minuten Sekunden *************/ > /*** Ein 07:30:00 und 17:00:00 Aus 07:30:45 und 17:00:45 ******/ > /**************************************************************/ > > if (time >= 0730 and time <= 0731) or (time >= 1700 and time <= 1701) > > stports.setRel(2,1); > else > stports.setRel(2,0); > }; > release; > };</code> > > Danke Gruß Rene > > > > Hallo Christian, > > > > > > > ich noch mal. Jetzt möchte ich einfach eine beliebige Anzahl von Minuten abziehen. Ich habe mal > > > > versucht die Funktion umzubauen. In Excel scheint es zu funzen. > > > > > > > > <code> > > > > function subTime(int time, int minutes) returns int > > > > { > > > > minutes= (time%100) - minutes; > > > > return ((time/100 + minutes/60)%24)*100 + ((minutes*-1)%60); > > > > } > > > > </code> > > > > > > Für die Subtaktion brauchst Du einen Ansatz. Das einfachste ist, denen Zeitwert > > > in einen Time-Serial umzuwandeln. > > > <code> > > > function subTime(int time, int minutes) returns int > > > { > > > time=(((time/100)*60 + (time%100) - minutes; > > > return (time/60)*100 + (time%60); > > > }</code> > > > > > > Genaugenommen ist das sogar die bessere Variante, auch für die Addition: > > > <code> > > > function addTime(int time, int minutes) returns int > > > { > > > time=((time/100)*60 + (time%100) + minutes; > > > return ((time/60)%24)*100 + (time%60); > > > }</code> > > > > > > Hier kannst Du auch negative Werte angeben, so daß nur eine Funktion benötigt wird. > > > Allerdings gibt's noch ein kleines Problem. Den Tageswechsel bei einer Subtraktion. > > > Wenn Du nun von 0:30 Uhr 60 Minuten abziehst, erhälst Du -30 statt 23:30. > > > Hier kommt man um eine If-Abfrage (fast) nicht herum: > > > <code> > > > function addTime(int time, int minutes) returns int > > > { > > > time=((time/100)*60 + (time%100) + minutes; > > > if time<0 time=1440+time; > > > return ((time/60)%24)*100 + (time%60); > > > }</code> > > > > > > Man kann natürlich immer 1440 Minuten hinzuaddieren. Dann spart man > > > sich die If-Abfrage. Durch die Moduludivision werden diese ggf. wieder ausgefiltert. > > > > > > MfG André H. > > > > Hallo André, > > Die Lösung mit nur einer Funktion ist klasse und funktioniert super. Besten Dank für die > > ausführlichen Erläuterungen. Ich glaub´ jetzt habe ich es verstanden. > > Jetzt kann ich mich dem nächsten Problem stellen.... > > > > PS: Eine Klammer hinter dem Gleichheitszeichen ist zu viel :-) > > > > Gruß, > > ChristianS
Dateianhang: (.gif, .png., .jpg, .zip, .rar)
max. 256kB
max. 256kB