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

Re: Rolladensteuerung Kategorie: Programmierung (von DanielH - 15.09.2004 10:09)
Als Antwort auf Re: Rolladensteuerung von André H. - 4.09.2004 9:56
Ich nutze:
C164CI-ControllerBoard, CC2-StarterBoard, OSOPT V3.0
Hallo André,
vielen Dank für die Infos.

> 1. Die CC2 betreibt Multithreading, nicht Multitasking.
Sorry verwechsle ich gerne, versuch mich zu bessern :-)

> 2. Es ist nicht Sinnvoll nur für die Tasterauswertung jeweils einen eigenen Thread pro Taster zu verwenden.
> Es wäre eher hinderlich. Man sollte einen einzigen Thread benutzen, der nur die Auswertung
> aller Taster übernimmt.
> Um zu erfassen, wie lange ein Taster gedrückt wurde, sollte man mit dem Timer arbeiten.
> Dies geht auch problemlos für mehrere Taster in einem Thread.


Hier ist ein erster Entwurf des Threads, der die Taster an P1H überwacht.

//-------------------
thread TasterAction
//-------------------
// Ermitteln ob und welche Taste gedrückt wurde
{
run 32;
int intTasterAllLast; //alter Stand der Digitalports
int intTasterAll; //Var zum Auslesen der Digitalports
long lngReadTime; //Zeitpunkt des Auslesens
int intTasterAllChange; // Var zum Ermitteln der Zustandsänderung
int intIndex1; //
long lngTasterUP[15];
string s1,s2,s3;




//Initialisieren
intTasterAllLast=0;
intTasterAll=(0b11111111);
hwcom.init();
hwcom.clr();
hwcom.setspeed (hwcom.SPEED_57600);
hwcom.print("Programm start");
hwcom.ret();
//alle Taster in einer Schleife abfragen
loop
  {
    intTasterAllLast=intTasterAll;
    intTasterAll=ports.getb(1);
    lngReadTime=system.timer();
    /*
    s2="";
    str.putmask(s2,intTasterAllLast,'1','0');
    hwcom.print("vorheriger Stand:  ");
    hwcom.putint(intTasterAllLast);
    hwcom.print(s2);
    hwcom.ret();
    s1="";
    str.putmask(s1,intTasterAll,'1','0');
    hwcom.putint(intTasterAll);
    hwcom.print("aktueller Stand:  ");
    hwcom.print(s1);
    hwcom.ret();
    intTasterAllChange = (intTasterAllLast xor intTasterAll);
    s3="";
    str.putmask(s3,intTasterAllChange,'1','0');
    hwcom.print("geänderter Stand:  ");
    hwcom.print(s3);
    hwcom.ret();
    hwcom.ret();
    sleep 3000;
   
    */

    intTasterAllChange = (intTasterAllLast xor intTasterAll);
    for intIndex1= 0...7
      {
      if ((intTasterAllChange and (1 shl intIndex1)) > 0)
        {
          hwcom.print("Taster Nr gedrueckt");
              s2="";
              str.putint(s2,intIndex1);
              hwcom.print(s2);
              hwcom.ret();
              intTaster[intIndex1]=1;
                         
         }
       }
  }
}


Hättest du mir einen Tipp, wie ich hier eine Zeitüberwachung einbauen kann? Ich bin leider noch nicht
so tief drin in der Programmierung.
Viele Grü�e
Daniel H.
 




    Antwort schreiben


Antworten:

Re: Rolladensteuerung (von André H. - 19.09.2004 12:12)
    Re: Rolladensteuerung (von DanielH - 26.09.2004 16:04)