Serial/Binary übertragung

Hallo liebes forum,

ich hab grad ein denkfehler bzw. weis nicht recht was bei mir nicht klick macht.
Folgendes:

Ich will über den Arduino ein, bzw. 2x MSGEQ7 Auslesen und über den Serialport die Bänder an einen Raspberry geben. Hinzu kommt noch der Line-level der am Eingang anliegt.

Die Frage die mich jetzt Quält ist, wie übertrage ich die werte am dümmsten über den Serial Port ?
Wie soll hier mein "Protkoll" ausehen ?

Angenommen:

1023 = Höchster wert = 4 Bit
4 Bit pro "Kanal", macht bei: Links + 7 (Bands), Rechts + 7 (Bnds) + Trenn zeichen (#) = 73 Bit

Wenn dass jetz so hintereinander über den Serial Port schicke ("[", "]" weg denken):
[Links][0][0][0][0][0][0][0][#][Rechts][0][0][0][0][0][0][0][LF]

Wie behandle ich dann zahlen die nicht 4 Stellig sondern 3 oder 2 stellig sind ?
Z.b [200][152][785][12][0][878][1023][11][#][123][545][8][687][215][671][1023][0][LF]

Hier stimmen meine angenommen 73 Bit nicht mehr, und ich komm mit dem Raspberry beim Auswerten Durcheinander:

  • Auffüllen mit 0 ?
  • JSON String ?

Oder eine einfache, kurze erklärung was ich tun kann.

Programmiert habe ich bis jetz wenig bis garnix in C.
Lediglich Blinken, SPI, & co.

Auf dem Raspberry will ich dann mit Node.JS weiter arbeiten was mir wesntlich besser von der hand geht.

Danke schon mal im vorraus :wink:

Dein Titel widerspricht dem Inhalt.

Entweder du überträgst die Daten Binär und hast einfach pro Paket eine konstante Anzahl von Bytes. Oder du sendest die Daten als String und trennst die Zahlen mit Kommas ab.

Wie soll hier mein "Protkoll" ausehen ?

Immer wenn sich mir die Frage stellt, schaue ich, ob sich der CmdMessenger nutzen lässt.

Heißt die Frage "ASCII oder Binär?", dann weiß ich, dass der CmdMessenger beides kann.
Bei der Entwicklung ist natürlich meist ASCII angenehmer, da es sich leichter beobachten lässt.

1023 = Höchster wert = 4 Bit

Du meinst 4 Byte und Zeichen anstatt 10 Bit als Wert.

Grüße Uwe