Private Website von Niklas Menke

Elektrotechnik und mehr...

Netzfrequenz: - Hz
-

Netzfrequenz


(Etwa alle 30s wird ein neuer Messwert ermittelt. Dieses Diagramm gibt nicht den exakten Verlauf der Netzfrequenz wieder.)


Vorwort

In diesem Artikel wird beschrieben, wie man mit einem Raspberry-Pi und C++ auf eine MariaDB-Datenbank zugreift.
Die Datenbank kann dabei selber auf dem Raspberry-Pi laufen, sodass interessante IoT-Projekte möglich sind.

Wichtige Hinweise

  1. Alle Beschreibungen beziehen sich auf das Raspberry Pi OS Lite.
  2. Es wird eine SSH-Verbindung benötigt.

Der Artikel "Raspberry-Server" beschreibt unter anderem, wie man eine MariaDB-Datenbank auf einem Raspberry-Pi aufsetzt.

Microsoft Visual Studio

Meiner Meinung nach wäre es ziemlich mühselig, ein C++ Programm über die Konsole des Raspberry-Pi zu schreiben und zu kompilieren.
Glücklicherweise gibt es die Möglichkeit, diese Arbeit über die SSH-Schnittstelle aus der Ferne durchzuführen. Dazu verwende ich Microsoft Visual Studio Community.

Microsoft Visual Studio ist eine Entwicklungsumgebung, mit der unter andrem C++-Programme für Linux-Betriebssysteme und somit auch für den Raspberry-Pi entwickelt werden können. In der Community-Edition ist die Software kostenlos. Download Visual Studio.

Für unsere Zwecke reicht es aus, dass bei der Installation von Microsoft Visual Studio die Option "Linux Entwicklung mit C++" ausgewählt ist:

Installationskonfiguration

Beispielprojekt

Zunächst wird ein neues, leeres Projekt angelegt:

Neues Projekt Neues Projekt

"Ort" gibt dem Pfad an, in dem später die Projektmappe auf dem Windows-Rechner abgelegt wird. Der Pfad auf dem Raspberry-Pi befindet sich später unter /home/USER/projects/ (Standardeinstellung).

Nun wurde das Projekt angelegt, allerdings ohne irgendeine Standardkurfiguration. Daher erstellen wir unter "Projekt" --> "Neues Element hinzufügen" --> "Visual C++" --> "C++-Datei (.cpp)" eine neue Datei mit dem Namen "main.cpp".
Diese Datei kann zum Testen so gefüllt werden:

  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int main() {
  6. cout << "Hello World!" << endl;
  7. while(1);
  8. }

SSH-Verbindung herstellen

Um das Programm nun auf dem Raspberry-Pi übertragen und kompilieren zu können, müssen wir zunächst die SSH-Verbindung einstellen.
Eine neue Verbindung kann unter "Extras" --> "Optionen" --> "Plattformübergreifend" --> "Verbindungs-Manager" hergestellt werden. In meinem Fall schaut es so aus:

SSH-Einstellungen

Startet man den Debugging-Prozess, dann erscheint erwartungsgemäß "Hello World!" in der Konsole. Die grundlegende Konfiguration hat also funktioniert:

Debug
MariaDB Connector/C installieren

MariaDB Connector/C ist eine Bibliothek, welche den Zugriff auf eine MariaDB oder MySQL Datenbank über C/C++ ermöglicht.

Die grundlegende Installation lässt sich mit einem Befehl durchführen:

sudo apt-get install libmariadb3

Da wir später auch auf dem Raspberry-Pi kompilieren wollen, muss zusätzlich noch das Entwicklerpaket installiert werden:

sudo apt-get install libmariadb-dev -y
Verzeichnis- und Linker-Einstellungen

Unser Programm hat bisher keine Ahnung davon, wo sich die Dateien der installierten Bibliothek befinden. Diese Informationen müssen wir dem Compiler und dem Linker mitteilen.

Allerdings müssen wir dazu erst mal selbst wissen, welche Dinge eingebunden werden müssen. Dazu liefert die Bibliothek ein kleines Programm namens "mariadb_config" mit.
Dieses führen wir auf dem Raspberry-Pi wie folgt aus:

/usr/bin/mariadb_config

Die Ausgabe des Programms schaut in etwa so aus. Interessant sind für uns die Zeilen 6 und 7. Die notwendigen Informationen sind hervorgehoben:

  1. Copyright 2011-2020 MariaDB Corporation AB
  2. Get compiler flags for using the MariaDB Connector/C.
  3. Usage: mariadb_config [OPTIONS]
  4. Compiler: GNU 8.3.0
  5. --cflags [-I/usr/include/mariadb -I/usr/include/mariadb/mysql]
  6. --include [-I/usr/include/mariadb -I/usr/include/mariadb/mysql]
  7. --libs [-L/usr/lib/arm-linux-gnueabihf/ -lmariadb]
  8. --libs_r [-L/usr/lib/arm-linux-gnueabihf/ -lmariadb]
  9. --libs_sys [-ldl -lm -lpthread -lgnutls]
  10. --version [10.3.27]
  11. --cc_version [3.1.11]
  12. --socket [/var/run/mysqld/mysqld.sock]
  13. --port [3306]
  14. --plugindir [/usr/lib/arm-linux-gnueabihf/mariadb19/plugin]
  15. --tlsinfo [GnuTLS ]
  16. --variable=VAR VAR is one of:
  17. pkgincludedir [/usr/include/mariadb]
  18. pkglibdir [/usr/lib/arm-linux-gnueabihf]
  19. pkgplugindir [/usr/lib/arm-linux-gnueabihf/mariadb19/plugin]

Verzeichnisse einbinden

Die Verzeichnisse in den eckigen Klammern der Zeile 6 tragen wir in Microsoft Visual Studio unter "Debuggen" --> "Projektname: Debugeigenschaften" --> "Konfigurationseigenschaften" --> "VC++-Verzeichnisse" --> "Includeverzeichnisse" ein. Die Einzelnen Werte werden durch ein Semikolon getrennt:

/usr/include/mariadb;/usr/include/mariadb/mysql
Include

Linker Optionen

Der Pfad in den eckigen Klammern der Zeile 7 wird in Microsoft Visual Studio unter "Debuggen" --> "Projektname: Debugeigenschaften" --> "Konfigurationseigenschaften" --> "Linker" --> "Allgemein" --> "Zusätzliche Bibliotheksverzeichnisse" eingetragen:

/usr/lib/arm-linux-gnueabihf/;%(Link.AdditionalLibraryDirectories)
Linker

Die Abhängigkeit des Linkers (Zweiter Teil in der eckigen Klammer der Zeile 7) wird in Microsoft Visual Studio unter "Debuggen" --> "Projektname: Debugeigenschaften" --> "Konfigurationseigenschaften" --> "Linker" --> "Eingabe" --> "Bibliotheksabhängigkeiten" eingetragen:

mariadb
Linker 2
Beispielprogramm

Das nachfolgende Programm fragt alle Einträge einer Tabelle ab und gibt die Informationen in der Konsole aus. Auf eine detailliertere Beschreibung des Codes soll hier verzichtet werden.

Die Ausgabe in Microsoft Visual Studio sieht in diesem Beispiel wie folgt aus:

Beispiel

Programm über die Raspberry-Pi Konsole starten

Standardmäßig finden sich die über Microsoft Visual Studio erstellten Programme im Ordner "projects" des Benutzers auf dem Raspberry-Pi.
Bei diesem Beispiel kann das Programm wie folgt gestartet werden:

./projects/Datenbank/bin/ARM/Debug/Datenbank.out

Die Ausgabe in der Konsole ist wie erwartet:

  1. Die Verbindung zur Datenbank "test" wurde erfolgreich hergestellt!
  2.  
  3. ID - Name
  4. 1 - Klaus
  5. 2 - Helmut
  6. 3 - Anne
  7.  
  8. Der Prozess wurde abgeschlossen.

Das Programm kann mit der Tastenkombination STRG+C beendet werden.


Diese Website verwendet zur Darstellung einiger Inhalte externe Dienste und Cookies.

Nachfolgend können Sie die einzelnen Dienste ein- bzw. ausschalten.
Diese Einstellungen können jederzeit im Footer der Website angepasst werden.

Technisch notwendig (Cookie-Präferenzen, Design)
Font Awesome (Symbole)
Google Fonts (Schriftart)
Google reCAPTCHA (Formularschutz)
Sketchfab (3D-Inhalte)

Weitere Informationen finden Sie in der Datenschutzerklärung.

Datenschutzerklärung