Hallo Zusammen,
hab folgendes Programm geschrieben, um beim Tastaturdruck eine Ausgabe
von "LED an" zu erhalten und wenn wieder eine Tastaturtaste gedrückt
wird, steht dort"LED aus".
Das ganz soll immer abwechselnd stattfinden.
Was ich aber will, dass wenn ich die Tastaturtaste festhalte, nur einmal
"LED an" bzw. "LED aus" ausgegeben werden soll.
Momentan ist das so, dass sich dann die Ausgabe fortsetzt.
Es soll aber so sein, dass "LED an" ausgegeben wird, erst dann "LED aus"
ausgegeben wird, wenn die Taste losgelassen und wieder gedrücktw wird.
Ich hoffe, ich habe mich verständlich genug ausgedrückt.
Nach dem ich paar Infos eingeholt habe, muss das an dem Tastaturpuffer
liegen.
Kann man das irgendwie lösen?
Anbei ein Screenshot der Ausgabe.
Und hier mein C-Code:
1 |
|
2 | /* Tastendruckfunktion */
|
3 |
|
4 | #include <conio.h>
|
5 |
|
6 | #ifndef __tastenfunk__
|
7 |
|
8 | #define __tastenfunk__
|
9 |
|
10 | void warteTastendruck (void)
|
11 | {
|
12 | _getch();
|
13 | //while ( !_kbhit() ); /* Abfrage, ob eine Taste gedruckt wird */
|
14 | }
|
15 |
|
16 | void warteTasteloslassen (void)
|
17 | {
|
18 | while (_kbhit())
|
19 | _getch();
|
20 | }
|
21 | #endif
|
1 | /* PIN_schalter.h */
|
2 | #include "tastenfunk.h"
|
3 | #include "PIN_schalter.h"
|
4 |
|
5 |
|
6 | #include <stdio.h>
|
7 |
|
8 | #ifndef __PIN_schalter__
|
9 |
|
10 | #define __PIN_schalter__
|
11 |
|
12 |
|
13 | typedef enum { aus, an } TIO_STATUS;
|
14 | TIO_STATUS LED = aus;
|
15 |
|
16 | void PIN_einschalter (void)
|
17 | {
|
18 | if (aus == LED)
|
19 | {
|
20 | LED = an;
|
21 | printf ("LED an \n");
|
22 | }
|
23 | }
|
24 |
|
25 | void PIN_ausschalter (void)
|
26 | {
|
27 | if (an == LED)
|
28 | {
|
29 | LED = aus;
|
30 | printf ("LED aus \n");
|
31 | }
|
32 | }
|
33 |
|
34 | #endif
|
1 | int main()
|
2 | {
|
3 | while (1)
|
4 | {
|
5 |
|
6 | warteTastendruck();
|
7 | PIN_einschalter ();
|
8 | warteTasteloslassen();
|
9 |
|
10 |
|
11 | warteTastendruck();
|
12 | PIN_ausschalter ();
|
13 | warteTasteloslassen();
|
14 |
|
15 | }
|
16 | return 0;
|
17 | }
|
Gruß
Simon