So ich will ja nicht als faul geleten. Der Code funktioniert jetzt so weit danke für
die hilfe.

Code:
#include "RP6RobotBaseLib.h"

char Buffer[UART_RECEIVE_BUFFER_SIZE + 1]; // Ein Pfufferarry für die entfangenen Zeicehn
char Name[12+1];                          // Ein Arry für den Namen des Benutzers 
uint8_t cnt;                              //Zählvaribale 
uint8_t speed = 0;       // Geschwindigkeitsvariable
int8_t dir = 0;          // Richtugungsvariable (ändere ich später)

void Pruefen(void){               //Prüft wie das neue Komanndo heißst
    Warten();                      //list Recive Buffer aus 
    KommandoAuswerten();  //wertet das Kommando lautet

    

}

uint8_t Eingabe(void){                      //Hier werden die sich im UART befindenden Zeichen
                                            // inden Puffer geladen
    static uint8_t buffer_pos = 0;            

    if(getBufferLength())                 //sinde noch Zeichen einzulesen?
    {
        Buffer[buffer_pos]=readChar();            //Zeichen wird eingelesen
        if(Buffer[buffer_pos]=='\n')              //Zeilenumbruch?
        {
            Buffer[buffer_pos] = '\0';            //markieren des Endes des Strings
            buffer_pos = 0;                       //Puffer Position zurücksetzen
            clearReceptionBuffer();               //UART Puffer leeren
            return 1;

        }
        else if(buffer_pos >= UART_RECEIVE_BUFFER_SIZE) //falls mal ein Lesefehler ist 
        {
           Buffer[buffer_pos] = '\0';
           buffer_pos = 0;
           clearReceptionBuffer();
           return 1;
        }
        buffer_pos++; 
    }
    return 0;
}

void Warten(void) 
{
    for(cnt = 0; cnt <UART_RECEIVE_BUFFER_SIZE + 2; cnt++) // löscht den Puffer
    {
        Buffer[cnt]=0;
    }

    while(!Eingabe());
}



void Namenlesen(void) //speichert den Namen ab
{
    uint8_t a;

    for(a=0;a<14;a++)
    {
        Name[a]=Buffer[a];
    }
}

void KommandoAuswerten(void) // wertet das Kommando aus ein '_' schliesst einen Befehl ab
{
    int cnt2 = 0;  //Zählvariablen
    int cnt3;
    int done = 0; // so weis das Program wo es gerade ist
    char Speed[2]; //String zum zwischen 

    while(Buffer[cnt2] != '\n' || Buffer[cnt2] !='\0') // solange nicht das ende des Strings erreicht
    {
        if (Buffer[cnt2]=='_' && done == 0) 
        {
            for(cnt3=0;cnt3<4;cnt3++)      //abspeichern des Geschwindigkeits Teilstrings
            {
                Speed[cnt3]=Buffer[cnt3]; 
            }
            speed = atoi(Speed); //auslesen der Geschwindigkeit
            done = 1;
            break;
        }
        cnt2++;
    }
    done= 0;
    }

int main(void)
{
    initRobotBase();

    setLEDs(0b000000);

    writeString("Hallo lass uns starten\n");
    writeString("Schreibe mal bitte deinen Namen ins Terminal\n");

    Warten();
    Namenlesen();
    writeString("Dein Name ist also ");
    writeString(Name);

    writeChar('.');
    writeString("\n");

    writeString("Gib mir mal ein Komando");
    writeString("\n");
    Pruefen();


    while(1){
    powerON(); //PowerON
    task_RP6System();
    moveAtSpeed(speed,speed);
    }
    return 0;
}