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 André > > > Viele Dank für die ausführliche Antwort. > > Da sieht man den Spezialisten der C-contol II. > Die Lösung 2 ist eine intressante Möglichkeit. Ich werde zuerst mit einer > Weiche probieren. Für mich als Leihe einfacher. > > Mfg > > Lorenz aus Südtirol > > > > > > > > > Hallo Lorenz, > > > > Grundlagen C2: > > Funktionen können nur Werte und Variablen bzw. Referenzen auf Variablen(Arrays) > > übergeben werden. > > Ein Thread ist keines davon. Deshalb kann dies auch nicht übergeben werden. > > > > Nun zum Problem: > > Die Schlüsselworte zur Threadkontrolle erwarten die Threadnummer als Konstante. > > D.h. diese wird einkompiliert. (siehe vmcodes.c2) > > Wenn man mit run, halt, resume, reset arbeitet führt daran kein Weg vorbei. > > Es gibt zwei Möglichkeiten: > > 1. Du baust Dir eine Weiche. > > Mit If-Anweisungen wählst Du die entsprechenden Threads aus. > > 2. Du arbeitest mit einem kleinem Trick. > > Ich hatte im Zusammenhang mit einem anderem Problem vor langer Zeit eine direktere > > Möglichkeit der Thread-Kontrolle aufgezeigt: > > <a href="lesen.php?eintrag=14514">Re: Funktions/Thread-Definitionen</a> vom 11.05.2008 > > Einziger Nachteil: Du mußt die Thread-ID in Erfahrung bringen. Ändert sich die Reihenfolge > > der Threads, anderen sich auch die IDs. Diese werden von Oben nach unten > > bei 1 beginnend zugewiesen. Der Mainthread (der unterste) hat die höchste ID. > > Sinnvoll ist es, wenn die Threads Ihre IDs selbst verraten. Dazu müssen alle Threads > > bei Programmstart kurz anlaufen. > > > > z.B.: > > <code> > > byte ThreadID[32]; Array für bis zu 32 Threads > > const Thread_irgendwas=1; > > const Thread_wasanderes=2; // Der Index hat nichts mit der ID zu tun > > //dies Dient nur zu leichteren Verwendung. Man kann die IDs natürlich > > //auch in einzelne Bytevariablen speichern. > > > > thread irgendwas > > { > > ThreadID[Thread_irgendetwas]=TID(); > > halt;// Wichtig, wenn der Thread nicht sofort weiterlaufen soll. > > // Kann entfallen, wenn die ThreadID erst nach dem ersten vorgesehenem run benötigt wird. > > loop // Eigentlicher Threadinhalt > > { > > //... > > } > > } > > > > thread irgendwas > > { > > ThreadID[Thread_wasanderes]=TID(); > > halt; > > loop // Eigentlicher Threadinhalt > > { > > //... > > } > > } > > </code> > > > > Die Threads können dann mit setPrio() beinflußt werden. > > Eine Priorität von 0 heißt, daß der Thread steht. > > 1 bis 255 heißt, er soll mit der entsprechenden Prio laufen. > > > > Bei dieser Lösung kann weiterhin parallel mit den Schlüsselworten gearbeitet werden. > > Der Vorteil dieser Lösung ist, daß man nicht den Einschränkungen des Single-Pass-Compilers > > unterliegt, sondern auch ein weiter oben stehender Thread auch einen weiter unten steuern kann. > > > > MfG André H. > > > > > > > > > > Hallo, > > > ich möchte gern wissen ob man meinen Code kürzer schreiben kann. > > > Dieser wäre der untenstehende Code und zwar 5 mal hintereinander geschrieben, > > > nur dass menu.Ladepumpe_tog durch eine andere Variablen ersetzt wird und dass > > > der thread ladepumpe.Pumpe durch andere threads gestartet und gehalten wird. > > > > > > <code> > > > thread auto > > > { > > > > > > byte x[5]; > > > > > > > > > loop > > > { > > > if menu.Ladepumpe_tog != 0 > > > { > > > x[2] = 1 ; > > > if menu.Ladepumpe_tog == 1 > > > { > > > if stports.get(10) == 0 > > > { > > > halt ladepumpe.Pumpe; > > > > > > stports.set(10,-1) ; > > > } > > > > > > } > > > else > > > { > > > if stports.get(10) != 0 > > > { > > > halt ladepumpe.Pumpe; > > > stports.set(10,0); > > > } > > > > > > } > > > } > > > else > > > { > > > if x[2] == 1 > > > { > > > run ladepumpe.Pumpe; > > > sleep 1000; > > > } > > > x[2] = 0; > > > } > > > sleep 1000; > > > } > > > > > > } > > > </code> > > > > > > Ich habe es vesucht so zu lösen wie in diesem Beispiel, aber es hat nicht funktioniert: > > > > > > <code> > > > function update(var myvar, thread mythread) > > > { > > > ... > > > } > > > > > > function auto() > > > { > > > function update(var1, thread1); > > > function update(var2, thread2); > > > function update(var3, thread3); > > > }</code> > > > > > > MfG > > > Lorenz
Dateianhang: (.gif, .png., .jpg, .zip, .rar)
max. 256kB
max. 256kB