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

Re: Tastatur Kategorie: CC2-Unit & Appl.Board / CC2-Station (von Horst - 13.01.2005 19:35)
Als Antwort auf Tastatur von kerninger - 13.01.2005 14:26
Ich nutze:
C164CI-ControllerBoard, CC2-Application-Board, OSOPT V3.0
> Hallo erstmal...
> Meine C-Control habe ich jetzt zwei Tage, bin also Anfänger. Das Forum hat mich bislang über das
> gröbste hinweggebracht; immerhin behersche ich schon mal das LCD-Display. OS-Installation usw.
> habe ich auch schon hinter mir. Mein Problem: Die Folientastatur (Drama). Ich habe mir hier im
> Forum schon einen Wolf gesucht und alles gelesen was dazu geschrieben wurde; klar ist mir leider
> nichts. Meine Frage:
> Welches Modul muss ich nun für die Folientastatur nehmen? Ich habe mittlerweile alle durch. Das
> keybord.c2 geht bei mir gar nicht. Ein Befehl:
> wait keyboard.getkey()
> wird glatt ignoriert. Mit dem Modul rbkeyb.c2 erhalte ich immerhin (teilweise) Werte mit
> wait rbkeyb.get()
> Wie ich die Umrechnen kann ist mir jedoch nicht klar (byte->int). Scheint aber auch der falsche
> Weg zu sein; wenn ich die Taste "3" drücke kommt gar nix.
>
> Wer kann einem verzweifelten Anfänger auf die Sprünge helfen, bitte?
> Grü�e, kerninger


Hallo,

die Folientastatur wird über den analoger Port abgefragt. Dazu brauchst du aus den Systemmodulen
das Modul ports. Mit der folgenden Funktion kannst du den Zustand ob und welche Taste
gedrückt wurde abfragen:


function Taste() returns int
{
int u1, u2, key;
    //warten bis eine Taste gedrückt wird
    while (ports.adc(7)>900);
    u1= ports.adc(7);
    u2= ports.adc(7);
    if (math.abs(u1-u2))< 4
    {
      if u1<901 key=3;//3
      if u1<825 key=6;//6
      if u1<755 key=9;//9
      if u1<690 key=12;//#
      if u1<620 key=2;//2
      if u1<550 key=5;//5
      if u1<480 key=8;//8
      if u1<410 key=0;//0
      if u1<335 key=1;//1
      if u1<270 key=4;//4
      if u1<190 key=7;//7
      if u1<110 key=11;//*
      if u1>1000 key=-1;
    }
    sleep 100;
    //warten bis Taste wieder losgelassen wurde
    while (ports.adc(7) < 920);
    return key;
}


Der Port wird in einer Schleife 2 mal abgefragt und die beiden Werte verglichen um ein Prellen der Taste
möglichst auszuschlie�en. Die Funktion liefert dann erst den Wert der gedrückten Taste zurück wenn
die Taste wieder losgelassen wurde.

Viel Erfolg beim Ausprobieren

GruÃ?, Horst  


    Antwort schreiben


Antworten:

Re: Tastatur (von kerninger - 13.01.2005 21:46)