warum so kompliziert?

Wenn du den Buffer ganz normal als char Array deklarierst und mit "O" fütterst, sollte doch ein Typecast auf String der Write Funktion genügen, oder?

serialPort1->Write(String(Buffer), 0, 1); //Datensatz anfordern

sast