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:
Code:
receiveBytesToBuffer(bytesToReceive,&receiveBuffer[0]);
Temp=(uint8_t)receiveBuffer[0]-48;
receiveBytesToBuffer(bytesToReceive,&receiveBuffer[0]);
TargetPosition=(uint8_t)receiveBuffer[0]-48;
TargetPosition+=temp*10;
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.
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
Lesezeichen