Hallo,
hast Du die ausgabe von ersten µC schon mal mit einem Terminal kontrolliert was da raus kommt ?

Im 2. Teil macht Du nach jedem Zeichen einlesen eine Pause, dH. der µC kommt da scheinbar nicht ganz mit mit den Zeichen die vom anderen µC gesendet werden, wenn das alle 400ms gesendet wird (CR-LF nicht vergessen !).

Hänge den ersten µC erst an ein Terminal, damit Du siehst wie das mit der Übertragung läuft, danach kannst Du die Verarbeitung drauf abstimmen (String -> Zahl).