Split String

English version.

Vielleicht stand der eine oder andere schon mal vor dem Problem, eine serielle Übertragung von Daten mit dem Arduino zu realisieren. Jedoch muss man funktionsbedingt große Datenpakete mit vielen einzelnen, in ihrer Länge variierende Datenblöcke senden – wie ich zuletzt beim 3D-Drucker Projekt.

Nun hat man zwei nahe liegende Möglichkeiten:

  1. Jeder Datenblock hat eine fixe Länge, und man entnimmt die Daten positionsbedingt aus dem Protokoll.
  2. Jeder Datenblock hat eine variierende Länge, und man trennt diese durch einen Delimiter.

Ich finde die zweite Variante ansprechender, da das Protokoll einfacher zu verändern oder erweitern ist.

Der Aufbau

Außer dem Arduino UNO und einem Kabel benötigt man neben dem PC keine weiteren Komponenten.

Der Code

Der Programmcode befindet sich wie gewohnt auf GitHub. Die Funktion splitString() habe ich hierbei in ein Beispiel eingebaut, welches wie folgt funktioniert.

  • Nachdem das Programm auf das Arduino übertragen wurde kann der serielle Monitor gestartet werden.
  • Danach soll man dem Arduino 4 Comma-Separated-Values (csv) senden, etwa

Data_1,Data_2,Data_3,Data_4

  • Das Arduino empfängt diesen String und zerlegt ihn an jedem Komma. Im Anschluss schickt es die einzelnen, innerhalb der Kommas stehenden Strings zeilenweise zurück.

Vielleicht noch ein kleines Beispiel zum Abschluss:

Möchte man nur den Wert Data_3 zurückbekommen, so ruft man die splitString-Funktion wie folgt auf:

splitString(„Data_1,Data_2,Data_3,Data_4“, ‚,‘, 2);

Ein Resümee

Natürlich mag es bessere Wege geben, ein Protokoll in seine Datenpakete zu zerlegen, als mit meiner hier gezeigten Funktion. Ich jedoch bedarf mich dieser Funktion gerne, da ich sie schon öfters eingesetzt habe, und sie sehr einfach in das Programm zu implementieren ist.

Advertisements

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s