Also ich hab da heute mal weiter gemacht, und nu funktioniert das so wie es soll 
Mein Code sieht nun so aus.
Code:
#include "RP6ControlLib.h"
#include "RP6I2CmasterTWI.h"
#include "RP6Control_I2CMasterLib.h"
void I2C_transmissionError(uint8_t errorState)
{
writeString_P("\nI2C ERROR - TWI STATE: 0x");
writeInteger(errorState, HEX);
writeChar('\n');
}
char receiveBuffer[8]; // our reception buffer is one byte larger
// than the data we want to receive, because
// we also need to receive the "Newline" character!
void getInputLine(void)
{
clearReceptionBuffer(); // Make sure reception Buffer is empty and no junk data
// is left in it.
uint8_t buffer_pos = 0;
while(true) // Loop until we received one line of Data!
{
if(getBufferLength()) // Check if we still have data (means getBufferLength()
{ // is not zero)
receiveBuffer[buffer_pos] = readChar(); // get next character from reception buffer
if(receiveBuffer[buffer_pos]=='\n') // End of line detected!
{
receiveBuffer[buffer_pos]='\0'; // Terminate String with a 0, so other routines.
buffer_pos = 0; // can determine where it ends!
// We also overwrite the Newline character here.
break; // We are done and can leave reception loop!
}
else if(buffer_pos >= 7) // IMPORTANT: We can not receive more
{ // characters than "charsToReceive" because
// our buffer wouldn't be large enough!
receiveBuffer[7]='\0'; // So if we receive more characters, we just
// stop reception and terminate the String.
writeString_P("\n\nZu viele Zeichen eingegeben FEHLER!\n");
break; // We are done and can leave reception loop!
}
buffer_pos++;
}
}
}
/*
char-array von receivebuffer in seine einzelteile zerlegen und ebenfalls in einem char-array
sowie diese neuen char-arrays umwandeln in integerzahlen
*/
static int speed_1=0;
static int speed_2=0;
static int direction=0;
char dir_char[2];
char speed_1_char[4];
char speed_2_char[4];
void splitbuffer(void)
{
dir_char[0]=0;
dir_char[0]=receiveBuffer[0];
direction=atoi(dir_char);
int i=0;
while (i<3)
{
speed_1_char[i]=receiveBuffer[i+1];
speed_2_char[i]=receiveBuffer[i+4];
i++;
}
speed_1=atoi(speed_1_char);
speed_2=atoi(speed_2_char);
}
int speed_max=200;
int main(void)
{
initRP6Control();
initLCD();
I2CTWI_initMaster(100);
I2CTWI_setTransmissionErrorHandler(I2C_transmissionError);
setLEDs(0);
sound(180,80,25);
sound(220,80,0);
while(1)
{
task_checkINT0();
task_I2CTWI();
writeString_P("\nget input\n");
getInputLine();
splitbuffer();
if(speed_1>200)
{
speed_1=speed_max;
}
if(speed_2>200)
{
speed_2=speed_max;
}
switch (direction)
{
case 1: //vorwaerts fahren
writeInteger(1,DEC);
writeChar('\n');
changeDirection(FWD); //richtung wechseln nach forward
moveAtSpeed(speed_1, speed_2);
break;
case 2: //rueckwaerts fahren
writeInteger(2,DEC);
writeChar('\n');
changeDirection(BWD); //richtung wechseln nach backward
moveAtSpeed(speed_1, speed_2);
break;
case 3: //links drehen
writeInteger(3,DEC);
writeChar('\n');
changeDirection(FWD); //forward sonst leichte verwirrung
moveAtSpeed(speed_1, speed_2);
break;
case 4: //rechts drehen
writeInteger(4,DEC);
writeChar('\n');
changeDirection(FWD);
moveAtSpeed(speed_1, speed_2);
break;
default:
writeInteger(5,DEC);
writeChar('\n');
moveAtSpeed(0,0);
}
}
return 0;
}
Die Steuerung vom RP6 über Bluetooth und Labview, wie es später auch geschehen soll funktioniert nun auch einwandfrei. 
Nun muss ich nur noch am RP6 mal die Encoder richtig einstellen, aber da macht mir derzeit der RP6Loader zicken. Irgendwie ist der grad verdammt lahm was die Textausgabe dort angeht. Der hängt ewig hinterher. Aber deswegen hab ich mal im Arexx forum die frage gestellt. 
Nur eine Sache kapier ich nicht. In meinem Quellcode oben teile ich den 7-stelligen Inhalt des receivebuffers auf auf 3 einzelne char-arrays.
das erste zeichen in das erste array, und dann je 3 zeichen in die anderen arrays. Im Code oben habe ich diese neuen Arrays aber jeweils ein zeichen größer machen müssen als das was da rein kommt. Also statt einem Zeichen hab ich das 2 Zeichen groß machen müssen, und anstelle von 3 Zeichen 4 Zeichen. Sonst hat das einfach nicht funktioniert. Hat irgendjemand eine idee warum das so ist? ist ja schließlich schon etwas komisch.
Ansonste Grüße und danke für eure Hilfe.
Lesezeichen