Re: Rolladensteuerung Kategorie: Programmierung (von DanielH - 15.09.2004 10:09) | ||
Als Antwort auf Re: Rolladensteuerung von André H. - 4.09.2004 9:56 | ||
| ||
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) |