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;
}
Lesezeichen