Hallo amin
Nein, du machst eigentlich nicht wirklich einen Fehler und du hast das Problem auch schon selbst erkannt: Der ASCII-Code für "1" ist 49, deshalb wird dein Target auch als 49 erkannt.
Einfach Lösung wäre vielleicht:
Temp speichert die Zehner, 48 ist der Code für "0" und dient der Umrechnung von ascii zu Wert. Allerdings must du nun führende Nullen mit eingeben.Code:receiveBytesToBuffer(bytesToReceive,&receiveBuffer[0]); Temp=(uint8_t)receiveBuffer[0]-48; receiveBytesToBuffer(bytesToReceive,&receiveBuffer[0]); TargetPosition=(uint8_t)receiveBuffer[0]-48; TargetPosition+=temp*10;
Das geht sicher viel eleganter wenn man gleich zwei Zeichen einliest (über bytesToReceive=2 und receiveBuffer[1]?) und einem Timeout für einstellige Zahlen, aber mit der seriellen Kommunikation habe ich mich bisher noch nicht beschäftigt.
Gruß
mic






Zitieren

Lesezeichen