Wenn du es einigermaßen genau haben möchtest, wirst du um die Odometrie wohl nicht herumkommen.
Zum einlesen von Zahlen musst du deren ASCII-Darstellung (also den String) nach int (etc.) wandeln. Bspw. könntest du die einzelnen Bytes in ein Array einlesen bis du einen Zeilenumbruch bekommst, danach hängst du eine 0 an und steckst den Zeiger auf das Array in die Funktion atoi(char*). Schon hast du dein Int 
Wenn du noch ein wenig Fehlerüberprüfung machen willst, kannst du die Funktion auch selbst schreiben - die Ansätze dazu hast du in deinem Code oben ja schon:
Code:
int iVal = 0;
char c;
int count=0;
const int MAX_COUNT = 6;
char multiplier = 1;
for (SerRead(&c,1,0);
((c >= '0') && (c <= '9')) || (c=='-'); //nur Zahlen und Minus
SerRead(&c,1,0))
{
count++;
if ( count > MAX_COUNT )
break; //Zu viele Zeichen
else if ( c=='-' )
{
if (count == 1)
multiplier = -1;
else break; // Minus an der falschen Position
else
{
iVal *= 10;
iVal += c-'0';
}
}
iVal *= multiplier; //evtl. Vorzeichen beachten
//iVal enthält jetzt ein signed int
Code da oben ist ohne Gewähr, aber ich denke man sieht ungefähr, wie es funktionieren sollte ...
Wenn man will, kann man noch auf Überlauf prüfen und vorne bspw. ein Plus-Zeichen zulassen etc.pp.
Lesezeichen