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 Matthias, > > > - Wie kann ich mein init thread starten damit er nur beim Start die Standartwerte übernimmt? > > Mache aus dem Thread eine Funktion und rufe diese als erstes im Main-Thread auf ! > Für soetwas ist es nicht sinnvoll einen Thread laufen zu lassen, da der Sinn > eines Inits ist, alle benötigten Parameter, Schnittstellen etc. in einen definierten Zusand zu bringen, > bevor das eigentliche Programm läuft. > > Außerdem solltest Du den main-Thread anhalten, wenn dieser nichtsmehr tun muß. > Ich bevorzuge allerdings diesen nach einem Init mit allgemeinen Aufgaben durchführen zu lassen. > Daher sollte hier immer folgende Struktur im Main-Thread bevorzugt werden: > <code>thread main > { > //Initialisierungen > loop > { > //Hauptroutinen > } > }</code> > > Übrigens, bevor Du ein Kettenposting startest, wenn Dein Quellcode nicht korrekt angezeigt > wird, solltest Du beim Erstellen eines Posting oberhalb des Kommentareingabefeldes schauen. > Dort steht u.a. nicht umsonst folgendes: > ... > C2 Quellcode formatieren: &lt;code&gt;Quellcode&lt;/code&gt; > ASM Quellcode formatieren: &lt;asm&gt;Quellcode&lt;/asm&gt; > (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) > ... > > Also benutze dann bitte auch das Code-Tag, wenn Du Quellcode-postest. > Ansonsten wird dieser <u>immer</u> falsch angezeigt, sobald dieser Größer-und Kleinerzeichen > enthält. Das sind nämlich Html-Steuerzeichen. Jeder Browser interpretiert onst > ganze Passagen als Html-Tag ! > Aber das habe ich eigentlich schon oft genug geschrieben. > Ich war so frei und habe Deinen Quellcode unten mit dem Code-Tag versehen. > Deine Kettenpostings werde ich heute noch löschen. > > Noch ein angenehmer Nebeneffekt des Code-Tags, wenn dieser jeder benutzt: > Man kann sehr einfach nach Postings mit Quellcode mit der Suchfunktion finden, > wenn man nach "&lt;code&gt;" für C2-Quellcode und nach "&lt;asm&gt;" für ASM-Routinen sucht. ;-) > > > > So wie es jetzt ist funktioniert das ja nicht. Ändern will ich die Temperatur im Thread tempset. > > Hier ist zu erwähnen das ich im Moment am notwendigen Umstieg auf OSOPT V3.0 > > arbeite aber da klappt irgendwas nicht. Daher fliegen station_lcd und _io > > als nächstes raus. > > An OSOPT V3.0 liegt das nicht. Es liegt an den original Station-Treiber. Die können einen > schon zum verzweifeln bringen. ;-) > Installieren einfach das aktuelle Service-Pack. Dann kannst Du Dein Programm sehr einfach > anpassen, da in jeder Zeile, in der eine Änderung nötig ist, ein Fehler angezeigt wird. > > Ach, ja. Warum verwendest Du so viele Floats ? In Heizungs und Solarregelungen ist es > unnötig mit diesem Datentyp zu arbeiten. Verwende lieber Integer und Long und bilde Dir > ein Festkommainteger mit einer oder zwei Nachkommastellen. So arbeitet es sich einfacher. > Zur Ausgabe von Festkommainteger gibt es z.B. in lcdext.c2 fertige Funktionen. > So mußt Du nicht extra die Zahlen erst zu einem String konvertieren. > Und nebenbei läuft das Programm schneller. ;-) > > Und noch ein letzter Tip zur optischen Formatierung von C2: > Ich weiß, daß es in C üblich ist, möglichst viel in eine Zeile zu packen. > Jedoch sollte hier lieber eine Art der Formatierung gewählt werden, welche sich an die guten > alten Basiczeiten anlehnt. Dann kann man den Quellcode einfach besser lesen, und > besonders im Forum besser nachvollziehen, was jemand programmiert hat. ;-) > Ich meine damit aber hauptsächlich sinnvoll einzurücken. > Als Bsp.: > <code> > thread xy > { > blabla=99; > if z>=irgendwas machdies(); > loop > { > diesunddas(); > sleep ein_wenig; // ;-) > if ports.get(p); > { > machdas(); > unddies(); > } > } > }</code> > > MfG André H. > > > > <code>float tsi;float tss;float ts; > float tki;float tks;float tk; > int i;int tast1;int tast2; > float diff; float tmax; > > thread init//------Standartwerte setzen----------- > {tmax=250;diff=10;halt;} > > thread mess //------Messung und Mittelung von Speicher und Kollektortemp.------- > {tss=0;tks=0; > for i=1...10 > {tsi=ports.adc(1);tki=ports.adc(2);tss=tss+tsi;tks=tks+tki;} > ts=tss/10;tk=tks/10;} > > thread print//------Ausgabe von Speicher und Kollektortemp am LCD------ > {run 1;station_lcd.init();station_io.init();station_io.LIGHTon(); > loop > {string temp;temp="S=";str.putfloatf(temp,ts,1);str.putstring(temp," K="); > str.putfloatf(temp,tk,1); > string tempset;tempset="M=";str.putfloatf(tempset,tmax,0); > str.putstring(tempset," D="); > str.putfloatf(tempset,diff,0); > station_lcd.clear(); > station_lcd.print(temp); > station_lcd.cursorpos(2, 0); > station_lcd.print(tempset); > sleep 500;}} > > thread relman//--------Ein und Ausschalten von Pumpe über F1 und F2------- > {tast1=station_io.getkey(); > if tast1==10 station_io.RELon(1); > if tast1==11 station_io.RELoff(1);} > > thread stop//----------Programm Stop über F3--------- > {tast2=station_io.getkey(); > if tast2==12 quit 63; > } > > thread ksvgl//---------Koll. und Speicher Vergleichen und Pumpe anschalten------ > {if tk>ts+diff and ts<tmax station_io.RELon(1);else station_io.RELoff(1);} > > thread tempset//------------------------------------------------------- > {int m;m=station_io.getkey();sleep 100; > if m==6 tmax=tmax+1; > if m==7 tmax=tmax-1; > if m==8 diff=diff-1; > if m==9 diff=diff+1; > } > > thread main//--------------------------------------------------------- > {run mess; > run print; > run relman; > run stop; > run ksvgl; > run tempset; > }</code>
Dateianhang: (.gif, .png., .jpg, .zip, .rar)
max. 256kB
max. 256kB