Hallo zusammen, ich suche nach einer Funktion wie scanf, welche sich aber nicht wie ein LOOP auf das Programm auswirkt. Ich habe vor einiger Zeit mal so eine Funktion aus der stdio.h Bibliothek benutzt, weiss aber nicht mehr genau welche. Vielleicht war es getchar So viel ich weiss benutze ich die funktion so: i = getchar(); der inhalt von i wurde nun immer mit dem letzten Zeichen, welcher auf der Tastatur eingegeben wurde gefüllt. Hat jemand eine Lösung? mfg
Du hast eine wichtige Angabe vergessen. Für welches Target soll das Programm sein?
Ich benutze einen Reneasas H836049F mit der HEW Umgebung (High-performance Ebmedded Workshop) Wenn es das ist was du meinst
So sieht ein Teil des Programms aus:
1 | printf("Um auszuwerten bitte 0 eingeben : "); |
2 | while(1) |
3 | {
|
4 | i = getchar(); |
5 | if(i = '0') |
6 | {
|
7 | printf("Taster1 wurde %d mal gedrueckt. \r\n" ,ucTaster1 ); |
8 | printf("Taster2 wurde %d mal gedrueckt. \r\n" ,ucTaster2 ); |
9 | printf("Taster3 wurde %d mal gedrueckt. \r\n" ,ucTaster3 ); |
10 | printf("Taster4 wurde %d mal gedrueckt. \r\n" ,ucTaster4 ); |
11 | i = 0x00; |
12 | }
|
13 | if(T1 == 1) |
14 | {
|
15 | ucTaster1++; |
16 | }
|
17 | if(T2 == 1) |
18 | {
|
19 | ucTaster2++; |
20 | }
|
21 | if(T3 == 1) |
22 | {
|
23 | ucTaster3++; |
24 | }
|
25 | if(T1 == 4) |
26 | {
|
27 | ucTaster4++; |
28 | }
|
29 | /*scanf("%d",&i); //Wartet auf die Eingabe
|
30 | printf("Die Zahl die Sie eingegeben haben war %d \n\r",i);*/
|
31 | }
|
32 | |
33 | }
|
Hat die Library für deinen µC eine Funktion kbhit(), also eine Funktion zum Abfragen, ob ein Zeichen an der Eingabe vorliegt ohne darauf zu warten. Wenn ja könntest du so arbeiten:
1 | if ( kbhit() != 0 ) |
2 | {
|
3 | i = getchar(); |
4 | if( i == '0' ) // <=== Achtung == nicht = ! |
5 | {
|
6 | printf("Taster1 wurde %d mal gedrueckt. \r\n" ,ucTaster1 ); |
7 | ...
|
8 | }
|
9 | }
|
Hallo, Nein meine Bibliothek unterstützt diesen Befehl leider nicht... Mein Kollege sagte noch dazu, dass ich keinen direkten Zugriff auf die Tastatur habe, da ich über ein Terminalprogramm arbeite, deswegen würde dies mit dieser Funktion nicht funktionieren. Ich bräuche eine Funktion aus einer Standardbibliothek. mfg
Michael B. schrieb: > Ich bräuche eine Funktion > aus einer Standardbibliothek. Zählt "select" (oder poll) zu deiner Standardbibliothek? Wenn ja: Vor dem Buchstaben-Einlesen einfach nachsehen, ob der STDIN-Socket noch daten hat. Statt getchar aber dann besser ein ungebuffertes ein-byte-"read" verwenden.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.