-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 12

Thema: Brauche Hilfe bei Tastatureingabe

  1. #1

    Brauche Hilfe bei Tastatureingabe

    Anzeige

    Hallo
    Ich habe mir erst kürzlich einen RP6 gekauft.
    Jetzt möchte ich eine eigenes Programm scheiben das auf Tastatureingaben am Computer reagiert.
    Ich habe nur leichte schwierigkeiten die Funktionen zu verwenden die dafür nötig sind. Kann mir jemand das genau erklären wie das funtioniert.

    Phill93

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    22.06.2009
    Beiträge
    1.265
    Hast du dir schon mal die Anleitung durchgelesen ? Da sollte eigentlich alles drinstehn was du dafür brauchst.

    Im Prinzip geht das so:
    UART Empfängt was, du wertest es aus (z.B. ein Befehl wie: "Fahre Links") und reagierst dann drauf

  3. #3
    Ich habe das Problem das ich eine 2 stellige Zahl empfangen möchte.
    Und ich nicht weiß wie ich das anstellen soll.
    Ich verstehe das Beispiel in der Anleitung nicht.
    Dashalb hab ich den Thread hier geschrieben.

    Phill93

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.791
    @Phil93:
    Du könntest diese Funktionen zur Eingabe von Zeichen nehmen:
    Code:
    // Reception buffer for the function getInputLine():
    char receiveBuffer[UART_RECEIVE_BUFFER_SIZE + 1];
    
    /**
     * Get chars of an input line from the UART.
     *
     * Returns 0 (false), if the UART receive buffer is empty
     * OR a character of the input line has been received.
     * Returns 1, if the whole input line has been received
     * (with a "new line" character at the end).
     * Returns 2, if the UART receive buffer overflows.
     * The input line is stored in the receiveBuffer array.
     *
     */
    uint8_t getInputLine(void)
    {static uint8_t buffer_pos = 0;
    	if(getBufferLength()) {							
    		receiveBuffer[buffer_pos] = readChar();
    		if(receiveBuffer[buffer_pos] == '\n') {
    			receiveBuffer[buffer_pos] = '\0';
    			buffer_pos = 0;
    			return 1;
    		}
    		else if(buffer_pos >= UART_RECEIVE_BUFFER_SIZE) {									
    			receiveBuffer[UART_RECEIVE_BUFFER_SIZE] = '\0';	
    			buffer_pos = 0;
    			return 2;
    		}
    		buffer_pos++;
    	}
    	return 0;
    }
    
    /**
     * Get a complete input line from the UART.
     *
     * This function waits for a whole input line from the UART.
     * The input line is stored in the receiveBuffer array.
     * The function is blocking until one of the two following
     * conditions occurs:
     * - A "new line" character has been received at the end of
     *   the input line.
     * - The UART receive buffer overflows.
     *
     */
    void enterString(void)
    {
    	while(!getInputLine());
    }
    Gruß Dirk

  5. #5
    Das ist genau das was ich gesucht habe.
    Kann mir aber jemand erklären was das void in der Klammer hinter enterString bedeutet?
    Deswegen bekomme ich immer einen Fehler.
    Phill93

  6. #6
    RN-Premium User Roboter-Spezialist
    Registriert seit
    21.04.2009
    Beiträge
    522
    Was bekommst du denn für einen Fehler?
    Das bedeutet nur, dass diese Methode keine Argumente nimmt. Also du keine Werte für irgendwas übergeben kannst/musst.

  7. #7
    Muss ich dann die funktion so enterString() aufrufen oder so enterString.
    Den Code von oben muss ich ja vor dem main abschnitt einfügen oder?

    Phill93

  8. #8
    RN-Premium User Roboter-Spezialist
    Registriert seit
    21.04.2009
    Beiträge
    522
    enterString();
    Ja, aber natürlich nicht IN Main, ne

  9. #9
    Ich möchte jetzt überprüfen ob enterString eine 2stellige Zahl liefert wie kann ich das Überprüfen?

    Phill93

  10. #10
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.791
    Ich möchte jetzt überprüfen ob enterString eine 2stellige Zahl liefert wie kann ich das Überprüfen?
    Z.B. mit dieser Funktion erst einmal die Stringlänge:
    Code:
    /**
     * Calculate string length
     *
     */
    uint16_t strlength(const char *string)
    {uint16_t length = 0;
    	while (*string++)
    		length++;
    	return length;
    }
    Gruß Dirk

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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