000
11.04.2015, 23:37 Uhr
tooony
|
Hallo Leute,
in einer Konsolenanwendung unter GNU/Linux, momentan auf einem Banana Pi, möchte ich in einer Konsolenanwendung ein paar Daten auslesen und damit weiterarbeiten. In der Konsole habe ich ja die Möglichkeit, z.B. mit dem cat Befehl, mir gewisse Dateiinhalte anzeigen zu lassen:
Zum Beispiel mit "cat /sys/devices/platform/sunxi-i2c.0/i2c-0/0-0034/temp1_input" kann ich mir die CPU-Temperatur des Banana Pi auslesen. Dabei würde z.B. der Wert "33800" herauskommen, was 33,8 °C bedeutet. Zum einen muss man also immer noch den Wert umrechnen / anpassen, zum anderen möchte ich damit auch weiterrechnen / weiterarbeiten innerhalb des Quellcodes.
Zur Zeit suche ich noch nach einer Möglichkeit, wie man generell solche Dateien am besten öffnet und ausließt. Mein Ansatz ist momentan mit der Funktion popen(). Macht dies Sinn, oder wäre eine andere Funktion sinnvoller:
Code: |
#include <stdio.h> #include <string.h>
int main() { FILE *in; extern FILE *popen(); char buff[512];
if(!(in = popen("cat /sys/devices/platform/sunxi-i2c.0/i2c-0/0-0034/temp1_input", "r"))){ return; }
while(fgets(buff, sizeof(buff), in)!=NULL){ printf("%s\n", buff); float out = buff / 1000; printf("Temperatur: %f Grad\n", out); } pclose(in); }
|
Das Einlesen funktioniert soweit, dennoch bleibt die Umrechnung nicht fehlerfrei. Die Nachkommastellen bleiben auf der Strecke. Wie löst man die Konvertierung von char zu float oder double am besten?
Danke für eure Antworten! |