|
DataSheet
Visualizzatore LCD
Tastiera
|
|
|
Tastiera |
PER TUTTI [1 di 11] |
|
|
|
Aggiornato 22 agosto 2005 |
Il problema della lettura della Tastiera o dell'attesa della pressione di tasti, è fondamentale per la gestione interattiva dei programmi, tipica di un menu, di un gioco o di qualunque altro applicativo che lascia decidere all'utente. | |
Questa Sezione è nata, per ora, sostanzialmente a beneficio e sostegno delle procedure Pascal della Libreria Giobe.TPU; per questo i contenuti sono sostanzialmente orientati a questo linguaggio di programmazione | |
In un prossimo futuro verrà integrata anche all'Assembly. |
|
In Pascal, l’istruzione Repeat Until keypressed obbliga il processore a ripetere finché non risulta premuto un tasto, per cui sembra adatta al nostro scopo. |
|
L'istruzione Repeat Until keypressed, sebbene sembri logicamente perfetta (almeno "alla lettera") si dimostra in pratica una delusione. Chiamata più volte di seguito nel medesimo programma funziona (cioè si ferma in attesa) solo la prima volta (provare per credere...). |
|
Una più attenta lettura dell'istruzione giustifica questo atteggiamento: la variabile di sistema keypressed è di tipo logico. Per default essa è falsa fino a che non viene premuto un tasto, per cui non appena ciò accade se non si provvede a ripristinarla (con keypressed:=false) rimarrà vera per sempre e, ad una successiva proposta Repeat Until keypressed, il programma non si fermerà più. |
|
Dalla
pressione
di un tasto all'effetto da essa
provocato la strada è lunga e articolata:
|
|
In altri termini non basta leggere la tastiera (cioè fermarsi in attesa della pressione di un tasto). Bisogna anche "consumare" il tasto premuto, assumendone il codice Ascii dalla variabile di sistema readkey in una adeguata variabile personale di tipo char, per esempio tasto. |
|
L'istruzione Repeat Until keypressed non basta per leggere la tastiera. Subito dopo deve essere eseguita anche l’istruzione tasto:=readkey. Tra l'altro la variabile tasto da noi definita, di tipo char, ci permette di scegliere diverse opzioni, in funzione del suo valore, associato a quello del tasto premuto. |
|
In conclusione per leggere la tastiera conviene usare solo l’istruzione tasto:=readkey; essa non solo obbliga il programma a fermarsi fino all'avvenuta pressione, ma lascia anche il codice Ascii del tasto premuto nella nostra variabile tasto. |
|
Come anticipato il sistema assume con facilità il codice Ascii dal Buffer Circolare della tastiera; ma rimane ancora oscura la ragione per cui esso provvede ad annotare anche il secondo byte, cioè codice di scansione. |
|
Ciò ci autorizza ad anticipare un'altra magia: il curioso lettore si sarà certo chiesto in che modo vengono "consumati" i tasti non associati a lettere o numeri o, in genere, a caratteri stampabili. | |
Essi sono numerosi: la serie da F1 a F12; i tasti della tastierina a destra, come PgUp, Home, Canc, Ins e le frecce; tutti questi tasti si possono genericamente chiamare tasti funzionali. |
|
L'ambiente di programmazione Turbo Pascal non sembra consentire la gestione dei tasti funzionali, come F1, PgUp, Home, le frecce, ecc. |
|
Il
servizio dei tasti funzionali è dunque possibile e
facile. Basta ricordare che:
|
|
La gestione dei
tasti, in Pascal, deve dunque rispettare il fatto che per
ogni tasto sono accreditabili 2
byte:
|
|
per i tasti rimanenti, i tasti
funzionali (F1, F2, ..., PgUp, PgDn, ..., Home, End,
le 4 frecce, ..., Ins, Del, ...) il codice
Ascii, è sempre uguale a zero; per ciò l'unico modo per
distinguerli tra loro è quello di utilizzare il codice
di scansione.
Il codice proposto per esempio legge la tastiera (tasto:=readkey;) e controlla 6 tasti; con 'Q' oppure con Esc (=#27) esce dal Loop di attesa tasti, mentre se è premuto un tasto funzionale (Ascii= 0, cioè tasto=#0) esegue la procedura di servizio predisposta per ciascuna delle 4 frecce, rispettivamente associate ai codici di scansione #72 (freccia in alto), #80 (freccia in basso), #77 (freccia a destra) e #75 (freccia a sinistra).
Nella SottoSezione dedicata agli Applicativi del Pascal è possibile trovare diversi programmi che mettono in atto questa tecnica: per tutti possiamo consultare il codice sorgente del programma PacMan. |
|
Nella
gestione dei tasti letterali si
nasconde un pericolo subdolo che
produce un frustrante senso di impotenza; può succedere che il
nostro programma preveda di terminare con la pressione del tasto 'Q'
e che, sebbene sembri l'ottava meraviglia, non
abbia alcuna intenzione di uscire. La soluzione è banale ma dolorosa: ci siamo dimenticati che esiste un tasto che predispone la stampa a video delle lettere in maiuscolo e/o in minuscolo. Poichè lo stato di questo commutatore è imprevedibile mentre il programma sta 'girando' è sufficiente forzare maiuscole le eventuali minuscole con il comando UpCase (vedi). |
|
Consulta la Tabella dei Tasti per conoscere i valori dei 2 codici associati a ciascun tasto. |
|
Tastiera | PER TUTTI | |||||||
1 di 11 |
|
|
|
Home |
|
|||||||
|
Motore Ricerca |
|