- LiFePO4 Speicher Test         
Ergebnis 1 bis 10 von 17

Thema: Tastaturabfrage in C++

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #11
    HaWe
    Gast
    gerade auf dem Raspi (Raspbian Jessie) hab ich einiges (!!!) an source codes durchgetestet, bis was funktionierendes dabei war.
    Letztlich funktioniert hat dieses hier:

    Code:
    /* 
     * rpiconio.h
     * mimics kbhit(), getch()
    */
    
    #ifndef RPICONIO_H
    #define   RPICONIO_H
    
    #include <stdbool.h>
    #include <stdio.h>
    #include <string.h>
    #include <termio.h>
    #include <unistd.h>
    
    bool kbhit(void) {
        struct termios original;
        tcgetattr(STDIN_FILENO, &original);
        struct termios term;
        memcpy(&term, &original, sizeof(term));
        term.c_lflag &= ~ICANON;
        tcsetattr(STDIN_FILENO, TCSANOW, &term);
        int characters_buffered = 0;
        ioctl(STDIN_FILENO, FIONREAD, &characters_buffered);
        tcsetattr(STDIN_FILENO, TCSANOW, &original);
        bool pressed = (characters_buffered != 0);
        return pressed;
    }
    
    void echoOff(void) {
        struct termios term;
        tcgetattr(STDIN_FILENO, &term);
        term.c_lflag &= ~ECHO;
        tcsetattr(STDIN_FILENO, TCSANOW, &term);
    }
    
    void echoOn(void) {
        struct termios term;
        tcgetattr(STDIN_FILENO, &term);
        term.c_lflag |= ECHO;
        tcsetattr(STDIN_FILENO, TCSANOW, &term);
    }
    
    
    #endif
    Testcode:
    Code:
    #include <stdio.h>
    #include <string.h>
    #include <unistd.h>
    #include <wiringPi.h>
    
    #include "rpiconio.h"
    
    int main(void)
    {
        long i=0;
        echoOff();
        int c = '\0';
        while (c != 'q')   {
            if (kbhit())
            {
                c = getchar();
                printf("(hier ggf. auskommentieren:) got key \'%c\'\n", c);
                if(c==27) { printf("\nuser break\n"); return 1;  }
            }
            printf("%ld\n", ++i);
            delay(100);
        }
        echoOn();    
        return 0;
    }
    Geändert von HaWe (23.01.2016 um 16:13 Uhr) Grund: falsch reinkopiert)

Ähnliche Themen

  1. Tastaturabfrage innerhalb der Interrupt Service Routine
    Von Sven2013 im Forum Arduino -Plattform
    Antworten: 2
    Letzter Beitrag: 16.03.2013, 19:51
  2. Tastaturabfrage
    Von jibyz im Forum C - Programmierung (GCC u.a.)
    Antworten: 1
    Letzter Beitrag: 16.06.2006, 11:33
  3. RN-Control 1.4 Mega32 & RN-KeyLCD Tastaturabfrage RS232
    Von brundle im Forum Schaltungen und Boards der Projektseite Mikrocontroller-Elektronik.de
    Antworten: 2
    Letzter Beitrag: 14.09.2005, 13:27
  4. AVR-MT von Olimex Tastaturabfrage (3x3 Matrix)
    Von Rage_Empire im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 0
    Letzter Beitrag: 06.04.2005, 18:58

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

fchao-Sinus-Wechselrichter AliExpress