Hi!

Ich wollte meinen Asuro mit einer fernbedienung steuern.

Das geht ja mit

Code:
void SerRead(unsigned char *data, unsigned char length, unsigned int timeout)
also z.B.:

Code:
SerRead(data, 18, 0)
null für unendlich und 18 bei einer IR-Fernbedienung geht gut.


wenn ich jetzt aber eine schleife

Code:
while(1){
            
SerRead(data, x, y);

if(data=="WWwxxc"){
         FrontLED(ON);
}

}
eingebe, und für

x einen wert z.B. 13 einsetze
y einen Wert z.B. 2000, für 2 sek., oder 2 milliesek. (da is ja noch die while-schleife)


klappt das nicht.



die fernbedienung sendet zwar 13 zeichen, allerdings klappt es erst richtig wenn er's 2mal ausließt, also 28 zeichen. (es gibt auch tasten mit 12 oder 14 zeichen)


außerdem klappt das mit

SerRead(data, 28, y)

nur, wenn y=0 ist.




hat jemand eine idee, was ich tun könnte?
(falls ichs unverständlich erklärt habe, bitte melden )


Vielen Dank



P.S.: Ich glaube, es könnte noch daran liegen, dass die schleife ja immer ein paar teusenstel sekunden dauert. Wenn die fernbedienung nicht exakt den auslesevorgang trifft, ließt der dann

cwwwxx

anstatt

wwwxxc

was ja falsch ist.

ich hab auch schon versucht alles 2mal auszulesen, und mit einer schleife den anfang zu suchen.

also so:

cwwwxxcwwwxx

das hat aber auch nicht richtig geklappt.

könnte es daran liegen?

Das allererste Zeichen in den empfangen Daten wird dabei mit ’T’ (Timeout)
überschrieben.
das heißt also, dass bei

SerRead(data, 28, 2)


in wirklichkeit nicht

wwwxxc

sondern

Twwxxc

empfangen wird??