{"id":9537,"date":"2018-01-11T03:33:00","date_gmt":"2018-01-11T02:33:00","guid":{"rendered":"http:\/\/blog.wenzlaff.de\/?p=9537"},"modified":"2021-11-22T17:14:10","modified_gmt":"2021-11-22T16:14:10","slug":"in-15-minuten-zum-eigenen-c-programm-zum-ausgeben-der-systemtemperatur-des-raspberry-pi-zero-w-teil-2","status":"publish","type":"post","link":"http:\/\/blog.wenzlaff.de\/?p=9537","title":{"rendered":"In 15 Minuten zum eigenen C++ Programm zum ausgeben der Systemtemperatur des Raspberry Pi Zero W \u2013 Teil 2"},"content":{"rendered":"<p>In der <a href=\"http:\/\/blog.wenzlaff.de\/?p=9520\" rel=\"noopener\" target=\"_blank\">ersten<\/a> Lektion haben wir in 15 Minuten gesehen wie wir checken k\u00f6nnen 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\u00fchrt.<\/p>\n<p><a href=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2018\/01\/Cool-Programmierung.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2018\/01\/Cool-Programmierung.png\" alt=\"\" width=\"2732\" height=\"2048\" class=\"aligncenter size-full wp-image-9540\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2018\/01\/Cool-Programmierung.png 2732w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2018\/01\/Cool-Programmierung-300x225.png 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2018\/01\/Cool-Programmierung-768x576.png 768w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2018\/01\/Cool-Programmierung-1024x768.png 1024w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<p>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. <\/p>\n<p>Wir nennen die Klasse <code>Temperatur<\/code>. Damit wir nicht alles in einer Datei haben, erstellen wir f\u00fcr jedes Objekt eine eigene Datei. Also zuerst die Deklaration in der <code>Temperatur.h<\/code>:<br \/>\n<!--more--><\/p>\n<pre class=\"lang:c++ decode:true \" >\r\n#ifndef __TEMPERATUR_INCLUDE__\r\n#define __TEMPERATUR_INCLUDE__\r\nclass Temperatur{\r\n\tpublic:\r\n\t\tvoid ausgeben();\r\n};\r\n#endif\r\n<\/pre>\n<p>Wir haben also eine Methode, <code>ausgeben()<\/code> deklariert. Damit diese Header Datei nicht mehrfach includet wird, definieren wir die <code>__TEMPERATUR_INCLUDE__<\/code><\/p>\n<p>So, jetzt noch die eigentliche C++ Datei <code>Temperatur.cpp<\/code> mit der Implementierung der Temperatur:<\/p>\n<pre class=\"lang:c++ decode:true \" >\r\n#include &lt;iostream&gt;\r\n#include &lt;fstream&gt;\r\n#include &lt;cstdlib&gt;\r\n\r\nusing namespace std;\r\n\r\nclass Temperatur\r\n{\r\npublic:\r\n\t\tTemperatur();\r\n\t\t~Temperatur();\r\n\r\n\t\tvoid ausgeben();\r\n};\r\n\r\nTemperatur::Temperatur(){\r\n}\r\nTemperatur::~Temperatur(){\r\n}\r\nvoid Temperatur::ausgeben(){\r\n\r\n        system(\"cat \/sys\/class\/thermal\/thermal_zone*\/temp &gt;temp.txt\");\r\n\tcout &lt;&lt; ifstream(\"temp.txt\").rdbuf();\r\n}<\/pre>\n<p>Wir brauchen da noch zwei Import Dateien f\u00fcr das Aufrufen der <code>system<\/code> und <code>ifstream<\/code> Funktionen. Es ist eigentlich nicht so gut, Betriebssystem abh\u00e4ngige 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 <code>temp.txt<\/code> geschrieben und dann mit read Buffer gelesen und ausgeben.<\/p>\n<p>So nun noch das Hauptprogramm <code>programm-2.cpp<\/code>:<\/p>\n<pre class=\"lang:c++ decode:true \" >\r\n#include &lt;iostream&gt;\r\n#include \"Temperatur.h\"\r\n\r\nusing namespace std;\r\n\r\n#define PROGRAMM_VERSION 2\r\n\r\nint main()\r\n{\r\n\tcout &lt;&lt; \"www.wenzlaff.de\" &lt;&lt; endl;\r\n\tcout &lt;&lt; \"Programm Version \" &lt;&lt; PROGRAMM_VERSION &lt;&lt; endl;\r\n\r\n\tTemperatur temperatur;\r\n\ttemperatur.ausgeben();\r\n\r\n\treturn 0;\r\n}<\/pre>\n<p>Oben, mit der include Anweisung, binden wir die Deklaration der Temperatur.h Datei ein. In der <code>main()<\/code> Methode erzeugen wir eine Instanz und rufen die <code>ausgeben()<\/code> Methode auf.<\/p>\n<p>So, jetzt compilieren wir die zwei Dateien. Aber dieses mal im Ansi Modus und mit allen Warnungen. <\/p>\n<pre class=\"lang:default decode:true \" >\r\ng++ -ansi -Wall -o start-prg-2 programm-2.cpp Temperatur.cpp\r\n<\/pre>\n<p>So, wenn es keine Fehler gab, f\u00fchren wir das Programm mit<\/p>\n<p><code>.\/start-prg-2<\/code><\/p>\n<p>aus. Mit diesem Ergebnis:<\/p>\n<pre class=\"lang:default decode:true \" >www.wenzlaff.de\r\nProgramm Version 2\r\n36318\r\n<\/pre>\n<p>Super, es wird jetzt die Temperatur ausgegben. <\/p>\n<p>Hausaufgabe:<\/p>\n<p>Dieser Wert muss noch durch 1000 geteilt werden um die Temperatur zu erhalten. <\/p>\n<p>Wer postet die notwendigen \u00c4nderungen als erster? So das folgendes ausgegeben wir: <\/p>\n<p><strong>Temperatur 36,318 Grad Celsius<\/strong><\/p>\n<p>Entweder hier auf dem Blog, oder besser als <a href=\"https:\/\/github.com\/IT-Berater\/CPP-Lehrgang\/tree\/master\/Lektion-2\" rel=\"noopener\" target=\"_blank\">Pull Request auf Github<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In der ersten Lektion haben wir in 15 Minuten gesehen wie wir checken k\u00f6nnen 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\u00fchrt. Nun wollen wir auf dem Pi, in 15 Minuten die erste Klasse erstellen, da wir ja &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/blog.wenzlaff.de\/?p=9537\" class=\"more-link\"><span class=\"screen-reader-text\">\u201eIn 15 Minuten zum eigenen C++ Programm zum ausgeben der Systemtemperatur des Raspberry Pi Zero W \u2013 Teil 2\u201c <\/span>weiterlesen<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[220,2874,3107,79,1023,2752],"tags":[2741,2872,3113,3112,167,3114],"class_list":["post-9537","post","type-post","status-publish","format-standard","hentry","category-anleitung","category-c","category-c-programmierung","category-programmierung","category-raspberry-pi","category-raspberry-pi-zero-w","tag-c","tag-cpp","tag-lehrgang","tag-lektion-2","tag-programmieren","tag-rasberry-pi"],"_links":{"self":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/9537","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=9537"}],"version-history":[{"count":0,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/9537\/revisions"}],"wp:attachment":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=9537"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=9537"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=9537"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}