Hallo,
ich habe nun einen RpiTwo und möchte nun über ein 1602 Display bestimmte Systemwerte ausgeben. Auf die Temperatur kann ich ohne weiteres zugreifen, da diese in einer Datei abgespeichert wird. Wie aber komme ich am komfortabelsten an die anderen Werte (CPU Takt, frei Speicher, ....).
Die cat vcgencmd Befehle helfen mir da nicht wirklich weiter, da es sich nicht um Dateien handelt, die ich mit fopen aufrufen kann.
Ich nutzte als Entwicklungs-IDE Geany. makefile Parameter werden beim Kompilieren/Erstellen von wiringPi mit übergeben, Python ist übrigens für mich hier nicht die Lösung.
C
#define DEBUG
#include <stdio.h>
#include <stdlib.h>
#include <wiringPi.h> //WiringPi
#include <lcd.h> //WiringPI LCD
#define CPU_TEMP "/sys/class/thermal/thermal_zone0/temp"
#define LCD_ROWS 2 //Reihen
#define LCD_COLS 16 //Spalten
#define LCD_RS 0 //GPIO 17 / Pin 11
#define LCD_E 1 //GPIO 18 / Pin 12
#define LCD_D4 2 //GPIO 21 / Pin 13
#define LCD_D5 3 //GPIO 22 / Pin 15
#define LCD_D6 4 //GPIO 23 / Pin 16
#define LCD_D7 5 //GPIO 24 / Pin 18
int read_systeminfo(char *str)
{
FILE *pFile;
char buffer[10];
pFile = fopen(str, "r");
if(pFile != NULL)
{
fread(&buffer, sizeof(buffer), 1, pFile);
fclose(pFile);
return atoi(buffer);
}
else return -1;
}
int main(void)
{
float temp_cpu;
int speed_cpu;
char buffer[10];
wiringPiSetup();
int lcd = lcdInit
(
LCD_ROWS, LCD_COLS, 4,
LCD_RS, LCD_E ,
LCD_D4, LCD_D5, LCD_D6, LCD_D7,
0, 0, 0, 0 //Nicht benoetigt fuer 4Bit-Mode
);
lcdClear(lcd);
lcdPosition(lcd, 0, 0);
lcdPuts(lcd, " RpiTwo SysInfo ");
lcdPosition(lcd, 0, 1);
lcdPuts(lcd, " sschultewolter ");
delay(5000); // 5s warten bis Start
lcdClear(lcd);
long last_millis = millis();
while(1)
{
if(millis() - last_millis >= 1000)
{
last_millis = millis();
// Werte auslesen
temp_cpu = read_systeminfo(CPU_TEMP)/1000.0;
speed_cpu = read_systeminfo(CPU_TEMP)/1000;
lcdPosition(lcd, 0, 0);
lcdPuts(lcd, "CPU_temp: ");
sprintf(buffer, "%4.1f C", temp_cpu);
lcdPuts(lcd, buffer);
#ifdef DEBUG
break;
#endif
}
}
return EXIT_SUCCESS;
}
Alles anzeigen
Gruß Stefan