nur diese 3 Kommandos sollen möglich sein.
Dann nimm doch (erstmal) nur einen Buchstaben + Zahl
D12.234
P23.4567
R0.00001
oder so.
Mit einem einzigen Serial.read() weisst du, woran du bist und kannst direkt *) anschlessend z.B. Serial.parseFloat() aufrufen.
Ich finde es übrigens super, dass du deinen eigenen Code auch selbst richtig verstehen willst.
*) direkt ist relativ, am einfachsten schätzt du erstmal, wie lange die serielle Übertragung dauert und wartest also ein paar millisekunden