In der ersten Lektion haben wir in 15 Minuten gesehen wie wir checken können ob C++ auf dem Raspberry Pi installiert ist und haben unser 1. eigenes C++ Programm auf dem Pi mit der Kommandozeile erstellt, compiliert und ausgeführt.
Nun wollen wir auf dem Pi, in 15 Minuten die erste Klasse erstellen, da wir ja Objektorientiert programmieren wollen. Dazu erstellen wir mit dem vi ein einfache Klasse zum ausgeben der Temperatur des Pi.
Wir nennen die Klasse Temperatur
. Damit wir nicht alles in einer Datei haben, erstellen wir für jedes Objekt eine eigene Datei. Also zuerst die Deklaration in der Temperatur.h
:
1 2 3 4 5 6 7 |
#ifndef __TEMPERATUR_INCLUDE__ #define __TEMPERATUR_INCLUDE__ class Temperatur{ public: void ausgeben(); }; #endif |
Wir haben also eine Methode, ausgeben()
deklariert. Damit diese Header Datei nicht mehrfach includet wird, definieren wir die __TEMPERATUR_INCLUDE__
So, jetzt noch die eigentliche C++ Datei Temperatur.cpp
mit der Implementierung der Temperatur:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
#include <iostream> #include <fstream> #include <cstdlib> using namespace std; class Temperatur { public: Temperatur(); ~Temperatur(); void ausgeben(); }; Temperatur::Temperatur(){ } Temperatur::~Temperatur(){ } void Temperatur::ausgeben(){ system("cat /sys/class/thermal/thermal_zone*/temp >temp.txt"); cout << ifstream("temp.txt").rdbuf(); } |
Wir brauchen da noch zwei Import Dateien für das Aufrufen der system
und ifstream
Funktionen. Es ist eigentlich nicht so gut, Betriebssystem abhängige Funktionen aufzurufen. Aber wir bleiben auf dem Raspberry Pi. Und es geht hier nur um C++. Es wird die Temperatur, die in der temp Datei steht in eine neue Datei temp.txt
geschrieben und dann mit read Buffer gelesen und ausgeben.
So nun noch das Hauptprogramm programm-2.cpp
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#include <iostream> #include "Temperatur.h" using namespace std; #define PROGRAMM_VERSION 2 int main() { cout << "www.wenzlaff.de" << endl; cout << "Programm Version " << PROGRAMM_VERSION << endl; Temperatur temperatur; temperatur.ausgeben(); return 0; } |
Oben, mit der include Anweisung, binden wir die Deklaration der Temperatur.h Datei ein. In der main()
Methode erzeugen wir eine Instanz und rufen die ausgeben()
Methode auf.
So, jetzt compilieren wir die zwei Dateien. Aber dieses mal im Ansi Modus und mit allen Warnungen.
1 |
g++ -ansi -Wall -o start-prg-2 programm-2.cpp Temperatur.cpp |
So, wenn es keine Fehler gab, führen wir das Programm mit
./start-prg-2
aus. Mit diesem Ergebnis:
1 2 3 |
www.wenzlaff.de Programm Version 2 36318 |
Super, es wird jetzt die Temperatur ausgegben.
Hausaufgabe:
Dieser Wert muss noch durch 1000 geteilt werden um die Temperatur zu erhalten.
Wer postet die notwendigen Änderungen als erster? So das folgendes ausgegeben wir:
Temperatur 36,318 Grad Celsius
Entweder hier auf dem Blog, oder besser als Pull Request auf Github.