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 Rene Schulz - 1.12.2011 20:36)
Als Antwort auf Re: Thread's Starten von Jörg Hansen - 27.11.2011 10:50
Ich nutze:
C-Control II Station, OSOPT V3.1
Hallo ihr beiden,

vielen Dank für die Hilfe, habe es geändert und kann es aber
erst am Wochenende Testen.

GruÃ? Rene

> 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 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)