Oder du gehst hin und verwendest gleich ein richtiges Protokoll, dass die Übertragung von mehreren Bytes erlaubt.
Dabei kannst du prinzipiell zwei Varianten machen statisch oder dynamisch.
Statisch wäre z.B.

| Command | byte1 | ... | byte-n |
Anhand des Commands (das ein byte groß ist oder mehr wenn man mehr braucht) weißt du wie viele Datenbytes danach kommen müssen. Die kannst du dann entsprechend interpretieren.

Dynamisch hat man ein Längenfeld als erstes:

| Length | byte1 | ... | byte -n |
Die Daten muss man dann natürlich entsprechend interpretieren.

Das ganze binär zu übertragen hat den großen Vorteil, dass man weniger Bandbreite und Rechenleistung braucht als wenn man das in ASCII überträgt. Vorallem kann man auch so nette dinge machen wie: Man hat ein struct in dem alle Daten liegen: Übertragt das struct binär und kann die übertragenen Daten wieder direkt in das Struct casten. Dadurch spart man sich viel Aufwand beim Interpretieren.
Außerdem kann man ziemlich einfach noch eine Prüfsummen hinzufügen wenn man will.