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

Re: Thread's Starten Kategorie: Programmierung (von Jörg Hansen - 27.11.2011 10:50)
Als Antwort auf Re: Thread's Starten von Rene Schulz - 26.11.2011 23:25
Ich nutze:
C-Control II Unit, OSOPT V3.1
Hallo Rene,

was Alfred meint ist, dass der thread main am Ende der Programmcodes stehen muss.

Dein Programm sollte folgendermaÃ?en strukturiert sein:
- globale Variablen
- Funktionen
- andere Threads
- Thread main (aus dem die anderen Threads dann gestartet werden)

GruÃ?
Jörg

> Hallo Alfred,
>
> was meinst Du mir "unter dem aufzurufenen"?
> Der Thread der gestartet werden soll liegt unter den Mainthreadroutinen,
> also der "run-Befehl" am Ende des Maintreads, aber so geht es halt nicht.
> Allerdings kann ich in der Beschreibung auch nicht wirklich herauslesen wie
> oder an welcher Stelle dieser Befehl korrekt angebracht wäre.
>
> GruÃ? Rene
>
> > Hallo Rene,
> >
> > bin selber noch Frischling, aber kann es sein das der Thread unter dem aufzurufenen liegt.
> >
> > GruÃ? Alfred
> >
> > > Hallo Jörg,
> > >
> > > Danke für deine Antwort.
> > > Aber da kommt bei mir leider immer der Fehler
> > > "unknown identifier", obwohl es den Thread gibt.
> > >
> > > GruÃ? Rene
> > >
> > > > Hallo Rene,
> > > >
> > > > einfach aus dem Thread Main heraus mit "run threadname;" starten:
> > > >
> > > > -Globale Variablen definieren (und initialisieren)
> > > > thread main
> > > > - diverse HW initialisieren
> > > > - weitere threads starten
> > > > - "loop" im main tread für alles was der tread im loop so abarbeiten soll
> > > >    (bei mir nur "rudimentäre Grundfunktionen")
> > > >
> > > > Beispielcode auf meiner Haussteuerung:
> > > >
> > > >
> > > > //------------
> > > >   thread main
> > > > //------------
> > > >
> > > > {
> > > > //lokale Variablen
> > > >   string s;
> > > >   int secold;
> > > >   int a;
> > > > // Port Nibble auf Ausgang setzen
> > > > ports.setn(3,0b1111); // Ausgang für LEDs dcferr 12, wechselblinkende LED 13+14
> > > > // hwcom initialiseren und auf 19200 Baud einstellen
> > > >   hwcom.init ();
> > > >   hwcom.setspeed (hwcom.SPEED_19200);
> > > > // PCF 8574 zurücksetzen und vorhandene Bausteine ausgeben
> > > >    a=pcf.init();
> > > >     s= "PCF auf:";
> > > >     str.putmask(s,(a shr 8),'1','0');
> > > >     str.putmask(s,a,'1','0');
> > > >         hwcom.send(s,25);
> > > >         hwcom.ret();
> > > >         wait hwcom.ready();
> > > > // DS 2482-800 initialisieren
> > > >     if ds2482800.init(0)
> > > >     {
> > > >     s = "8Kanal 1-Wire Master gefunden";
> > > >     hwcom.send(s,30);
> > > >     hwcom.ret();
> > > >     }
> > > >     else
> > > >     {
> > > >     s = "8Kanal 1-Wire Master fehlt";
> > > >     hwcom.send(s,26);
> > > >     hwcom.ret();
> > > >     };
> > > > // RTC initialisieren
> > > >     if pcf8583.init(1,1,1,0,0) // Init mit autosync PCF auf DCF
> > > >     {
> > > >     s= "RTC gefunden";
> > > >         hwcom.send(s,12);
> > > >         hwcom.ret();
> > > >         wait hwcom.ready();
> > > >     s= "Stellen der CC2 Uhr o.k.";
> > > >         hwcom.send(s,24);
> > > >         hwcom.ret();
> > > >         wait hwcom.ready();
> > > >         printtime();
> > > >         hwcom.ret();
> > > >      }
> > > >     else
> > > >         {
> > > >         s= "RTC nicht gefunden !!!";
> > > >         hwcom.send(s,22);
> > > >         hwcom.ret();
> > > >         wait hwcom.ready();
> > > >         printtime();
> > > >         hwcom.ret();
> > > >         };
> > > >
> > > > {
> > > > // Thread Rollladen starten
> > > > run Rollladen;
> > > > // Tread Terminal starten
> > > > run terminal;
> > > > // Thread Lüftung starten
> > > > run lueftung;
> > > > }
> > > > loop
> > > > {
> > > > if secold != system.second(); // jede Sekunde 1 mal abarbeiten
> > > > {
> > > > secold = system.second();
> > > > if secold %2 // Programmlaufanzeige (2 im Sekundentakt wechselnd blinkende LEDs)
> > > > {
> > > >  ports.set(14,0);
> > > >  ports.set(13,1);
> > > >  }
> > > > else
> > > >  {
> > > >  ports.set(14,1);
> > > >  ports.set(13,0);
> > > >  };
> > > >  if system.dcferr() ports.set(12,0); // Anzeige ob DCF77 Empfang (rote LED aus wenn o.k.)
> > > >  else ports.set(12,1);
> > > >   sleep 800;
> > > >   };
> > > > }
> > > > }
> > > >


    Antwort schreiben


Antworten:

Re: Thread's Starten (von Rene Schulz - 1.12.2011 20:36)
    Re: Thread's Starten (von Karl - 4.12.2011 19:59)
        Re: Thread's Starten (von Rene Schulz - 18.12.2011 13:55)
            Re: Thread's Starten (von Rene Schulz - 21.12.2011 20:52)