aircode
28.05.2009, 19:48
Hi Zusammen,
ich versuche wieder mal meine lernfähige Fernbedienung anzulernen und hab folgendes Programm geschrieben (bzw. einen Teil davon hier aus dem Forum kopiert - speiziell die Eingabe über den Terminal)
Was ich ned kapier ist, dass sobald ich nach der ersten Eingabe (zB.: 20) kein Code gesendet wird... und bei der zweiten Eingabe (zB: 35) wird erst dann der rc5code 20 gesendet...!?
Eingabe am Terminal zB: 20... 35... 16... 11...
Ausgabe am Terminal: 20... 35... 16... 11...
Gesendete RC5codes: NIX... 20... 35... 16...
Ergo sendet RP6 immer den Code den ich bei der VOR-VOR-herigen Eingabe am Terminal eingegeben habe. Und ich weiß ned warum... Wo liegt der Denkfehler? Die Ausgabe am Terminal passt ja auch!?
THX für eure Hilfe
#include "RP6RobotBaseLib.h"
// Globale Variablen definieren --------------------------------------------------------
char rc5code[15]; // rc5code Type Cahr
uint8_t rc5codeint; // rc5code Type Integer
// Funktion Code einlesen --------------------------------------------------------------
char i;
void codeEinlesen(void)
{
i=0;
do
{
while(!getBufferLength()); //warten solange keine Zeichen im Buffer
while(getBufferLength()) // Zeichen aus Buffer einlesen
rc5code[i++]=readChar();
}
while((i<10) && (rc5code[i-1] != '\n'));
}
// Funktion Code senden ----------------------------------------------------------------
uint8_t x=0;
void codeSenden(void)
{
while(x<5) // Der rc5code wird 5 mal zu je 20ms gesendet (Pause 200ms)
{
IRCOMM_sendRC5(17|TOGGLEBIT,rc5codeint);
mSleep(200);
x++;
}
}
// -------------------------------------------------------------------------------------
// -------------------------------------------------------------------------------------
// -------------------------------------------------------------------------------------
int main(void)
{
initRobotBase();
powerON();
while(true)
{
writeString_P("Bitte RC5 Code eingeben, welcher gesendet werden soll:");
writeString_P("\n");
codeEinlesen();
sleep(50);
clearReceptionBuffer();
rc5code[i]=0; // Endekennung String nach letztem Zeichen
rc5codeint = atoi(rc5code); // rc5code -> Char to Integer
writeString_P("RC5 Code ");
writeInteger(rc5codeint, DEC);
writeString_P(" wird gesendet...");
writeString_P("\n");
task_ACS();
codeSenden();
x=0;
}
return 0;
}
ich versuche wieder mal meine lernfähige Fernbedienung anzulernen und hab folgendes Programm geschrieben (bzw. einen Teil davon hier aus dem Forum kopiert - speiziell die Eingabe über den Terminal)
Was ich ned kapier ist, dass sobald ich nach der ersten Eingabe (zB.: 20) kein Code gesendet wird... und bei der zweiten Eingabe (zB: 35) wird erst dann der rc5code 20 gesendet...!?
Eingabe am Terminal zB: 20... 35... 16... 11...
Ausgabe am Terminal: 20... 35... 16... 11...
Gesendete RC5codes: NIX... 20... 35... 16...
Ergo sendet RP6 immer den Code den ich bei der VOR-VOR-herigen Eingabe am Terminal eingegeben habe. Und ich weiß ned warum... Wo liegt der Denkfehler? Die Ausgabe am Terminal passt ja auch!?
THX für eure Hilfe
#include "RP6RobotBaseLib.h"
// Globale Variablen definieren --------------------------------------------------------
char rc5code[15]; // rc5code Type Cahr
uint8_t rc5codeint; // rc5code Type Integer
// Funktion Code einlesen --------------------------------------------------------------
char i;
void codeEinlesen(void)
{
i=0;
do
{
while(!getBufferLength()); //warten solange keine Zeichen im Buffer
while(getBufferLength()) // Zeichen aus Buffer einlesen
rc5code[i++]=readChar();
}
while((i<10) && (rc5code[i-1] != '\n'));
}
// Funktion Code senden ----------------------------------------------------------------
uint8_t x=0;
void codeSenden(void)
{
while(x<5) // Der rc5code wird 5 mal zu je 20ms gesendet (Pause 200ms)
{
IRCOMM_sendRC5(17|TOGGLEBIT,rc5codeint);
mSleep(200);
x++;
}
}
// -------------------------------------------------------------------------------------
// -------------------------------------------------------------------------------------
// -------------------------------------------------------------------------------------
int main(void)
{
initRobotBase();
powerON();
while(true)
{
writeString_P("Bitte RC5 Code eingeben, welcher gesendet werden soll:");
writeString_P("\n");
codeEinlesen();
sleep(50);
clearReceptionBuffer();
rc5code[i]=0; // Endekennung String nach letztem Zeichen
rc5codeint = atoi(rc5code); // rc5code -> Char to Integer
writeString_P("RC5 Code ");
writeInteger(rc5codeint, DEC);
writeString_P(" wird gesendet...");
writeString_P("\n");
task_ACS();
codeSenden();
x=0;
}
return 0;
}