PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : rc5code senden



aircode
28.05.2009, 18: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;
}

aircode
02.06.2009, 00:21
Hi,

wollte mal nachfragen ob mir keiner helfen kann, weil er das Problem noch nie hatte oder weil meine Problemstellung nicht gut erklärt ist? :-k

Danke...