Für dieses Forum muß Javascript im Browser aktiviert werden!
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 @all, > > > Für das CC2-Application-Board gibt es bisher noch kein Modul. > > Jedoch werde ich vielleicht eines in diesem Zuge schreiben,(appkeyb.c2) > > welches stkeyb.c2 gleicht, jedoch andere Konstanten für AD-Werte und > > die Input-Funktion auch etwas anders funzt, da hier schließlich nur > > 12Tasten verfügbar sind. :-) > > > Anbei ein Vorschlag für ein appkeyb-modul. > > Die fehlenden Funktionstasten sind in der > Input - Funktion durch ein Funktionsmodus > ersetzt worden, der durch die > Taste "*" eingeleitet wird. Der Cursor wechselt > dann von "_" zum Blinken. > > Es stehen folgende Funktionen zur Verfügung: > * = Alles löschen > 7 = Backspace > 8 = Mal minus Eins > 0 = Abbruch, Default-Wert zurückgeben > > Dann wechselt der Cursor wieder nach "_" > und weitere Ziffern können eingebeben werden, > ausser natürlich beim Abbruch. > > Gebt doch mal Rückmeldung, ob das was taugt. > > MfG Markus > > > > <code> > > const ENTER = 11; > const STAR = 10; > > int ExtPort; > int keycode; > > > > > function clearfigure(int i) > { > int j; > > for j = 1 ... i > { > lcdext.cursorleft(); > lcdext.put(0x20); > lcdext.cursorleft(); > } > > } > > > /***********************************/ > /* Get single Key # */ > /***********************************/ > function getkey ( ) returns int > { > // int keycode; > int adcval; > int oldval; > if ports.adc(7)>950 {keycode=255;return keycode;} > // let the adc value get stable > oldval=0; > while math.abs(oldval-ports.adc(7))>10 > {oldval=ports.adc(7);sleep 20;} > // decode the pressed key > adcval=ports.adc(7); > if adcval>852 {keycode=3;return keycode;} > if adcval>784 {keycode=6;return keycode;} > if adcval>718 {keycode=9;return keycode;} > if adcval>651 {keycode=11;return keycode;} > if adcval>584 {keycode=2;return keycode;} > if adcval>515 {keycode=5;return keycode;} > if adcval>446 {keycode=8;return keycode;} > if adcval>374 {keycode=0;return keycode;} > if adcval>301 {keycode=1;return keycode;} > if adcval>227 {keycode=4;return keycode;} > if adcval>150 {keycode=7;return keycode;} > if adcval>72 {keycode=10;return keycode;} > > } > > > > > /***********************************/ > /* Warten bis keine Taste gedrückt */ > /***********************************/ > function waitReleased() > { > wait getkey()==255; > } > > > > > > /*************************************************/ > // Zahleingabe mit der Folientastatur am AD-Port > // und externem Display (Application-Board) > // > // Funktionstasten: > // * = Funktions-Modus: > // (im Funktions-Modus blinkt der Cursor) > // * = Alles löschen > // 7 = Backspace > // 8 = Mal minus Eins > // 0 = Abbruch und Rückgabe des Default-Wertes > // > // # = Enter > // > // maxziff = Anzahl der Ziffern, die eingegeben > // werden können (2 bis 10) > // default = Wert, der nach Ablauf von timeout oder > // nach Abbruch zurückgegeben wird > // timeout = Milisekunden bis zum Abbruch der > // Funktion > /*************************************************/ > > > function input(byte maxziff, long default, long timeout) returns long > > {byte i, ckey; > long timer, value, key; > string zahl; > > str.clear(zahl); > value = default; > str.putlong(zahl, value); > > if maxziff<2 maxziff=2; > else > if maxziff>10 maxziff=10; > > lcdext.setcursor(2); // Cursor ist der Unterstrich "_" > > i = str.length(zahl); > > if i>maxziff value = 0; // Wenn die Defaultzahl mehr Stellen hat > // als maxziff, dann wird die Defaultzahl > // nicht berücksichtigt. > if value != 0 lcdext.print(zahl); > > > loop > { > timer=system.timer(); > > loop > { > key=getkey(); > if key!=255 break; > if system.timer()-timer>=timeout return default; // Timeout-Abbruch > yield; > } > plm.beep(10);sleep 40;plm.beep(-1); > > i = str.length(zahl); > if key<10 and i+1<=maxziff > { > if value>=0 value=value*10+key; else value=value*10-key; > str.clear(zahl); > str.putlong(zahl, value); > clearfigure(str.length(zahl)-1); > lcdext.print(zahl);} > else > > if key == ENTER // Enter > { > lcdext.setcursor(0); > return value; > } > else > > if key == STAR // Funktions-Modus > > > { > lcdext.setcursor(3); // Cursor blinkt > waitReleased(); > > do > { > ckey = getkey(); > } > while ckey == 255; > plm.beep(10);sleep 40;plm.beep(-1); > > lcdext.setcursor(2); > > if ckey == STAR //Alles löschen **************************** > { > if value != 0 > {str.clear(zahl); > str.putlong(zahl, value); > clearfigure(str.length(zahl)); > value=0; > } > } > > if ckey == 7 //Backspace ********************************** > { > if value != 0 > { > if value > -10 and value < 0 clearfigure(2); else clearfigure(1); > value = value/10; > str.clear(zahl); > str.putlong(zahl, value); > } > } > > if ckey == 8 //Mal minus Eins ******************************* > { > if value != 0 > { > value = value*(-1); > str.clear(zahl); > str.putlong(zahl, value); > if value<0 clearfigure(str.length(zahl)-1); > if value>=0 clearfigure(str.length(zahl)+1); > lcdext.print(zahl); > } > } > > if ckey == 0 //Default-Wert zurückgeben ****************** > { > lcdext.setcursor(0); > return default; > } //****************************************************** > > waitReleased(); > > } // if key == STAR > > wait getkey()==255; > > } // loop > } // function > > </code>