Hallo
Ohne weiteren Kommentar zum von dir hingeknallten Quellcode:
Code:
#include "RP6RobotBaseLib.h"
char Buffer[UART_RECEIVE_BUFFER_SIZE + 1];
char Name[12+1];
uint8_t cnt;
uint8_t speed = 0;
int8_t dir = 0;
uint8_t Eingabe(void)
{
static uint8_t buffer_pos = 0;
if(getBufferLength())
{
Buffer[buffer_pos]=readChar();
if(Buffer[buffer_pos]=='\n')
{
Buffer[buffer_pos] = '\0';
buffer_pos = 0;
clearReceptionBuffer();
return 1;
}
else if(buffer_pos >= UART_RECEIVE_BUFFER_SIZE)
{
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++)
{
Buffer[cnt]=0;
}
while(!Eingabe());
}
void Namenlesen(void)
{
uint8_t a;
for(a=0;a<14;a++)
{
Name[a]=Buffer[a];
}
}
void KommandoAuswerten(void)
{
int cnt = 0;
int cnt2;
int done = 0;
char Speed[2];
while(Buffer[cnt] != '\n' )
{
if (Buffer[cnt]=='_' && done == 0)
{
for(cnt2=0;cnt2<4;cnt2++)
{
Speed[cnt2]=Buffer[cnt2];
}
speed = atoi(Speed);
done = 1;
break;
}
cnt++;
}
}
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");
Warten();
KommandoAuswerten();
powerON();
moveAtSpeed(speed,speed);
return 0;
}
So geht's auch und kann sogar Fehler- und Warnungsfrei kompiliert werden. Was auf den ersten Blick auffällt: Keine Endlosschleife! MoveAtSpeed benötigt das Tasksystem. Mehr mag ich eigentlich noch nicht anmerken. Putze den Code, füge Kommentare ein, simuliere empfangene Daten/Befehle....
Viel Erfolg
mic
Lesezeichen