मुझे पता है कि आप उपकरण vcgencmd का उपयोग करके तापमान प्राप्त कर सकते हैं, लेकिन मैं सोच रहा था कि क्या कोई एपीआई है जो मैं सी में उपयोग कर सकता हूं ताकि vcgencmd के स्टैडआउट को पढ़े बिना तापमान को प्रोग्रामिक रूप से प्राप्त किया जा सके?
मुझे पता है कि आप उपकरण vcgencmd का उपयोग करके तापमान प्राप्त कर सकते हैं, लेकिन मैं सोच रहा था कि क्या कोई एपीआई है जो मैं सी में उपयोग कर सकता हूं ताकि vcgencmd के स्टैडआउट को पढ़े बिना तापमान को प्रोग्रामिक रूप से प्राप्त किया जा सके?
जवाबों:
आप इस उत्तर/sys/class/thermal/thermal_zone0/temp
में निर्दिष्ट फ़ाइल को पढ़ सकते हैं । यह कमांड लाइन से मापने के बारे में है, और फ़ाइल के साथ पढ़ा जाता है । लेकिन आपको सी में फ़ाइल को खोलने में सक्षम होना चाहिए। तापमान मिली-डिग्री सेंटीग्रेड और एएससीआईआई संख्याओं के रूप में वापस आ जाता है। शायद इस तरह, परीक्षण नहीं किया :)cat
FILE *temperatureFile;
double T;
temperatureFile = fopen ("/sys/class/thermal/thermal_zone0/temp", "r");
if (temperatureFile == NULL)
; //print some message
fscanf (temperatureFile, "%lf", &T);
T /= 1000;
printf ("The temperature is %6.3f C.\n", T);
fclose (temperatureFile);
open()
और read()
इसके बजाय - लेकिन YMVV। इसमें "लिबासिफ़्स" भी है, लेकिन इसे छोड़ दिया गया है और कर्नेल देवों ने स्पष्ट रूप से लोगों को इससे दूर रहने के लिए कहा है।
जैसा कि @ फरेपा ने कहा, रास्पबेरीपी के लिए अब कर्नेल थर्मल ड्राइवर है इसलिए इसका उपयोग करने का सबसे आसान तरीका है। जहाँ तक मुझे पता है, यह वैसे vgencmd
काम नहीं करता है। थर्मल कर्नेल चालक के अस्तित्व में आने से पहले ही यह तापमान को पढ़ने में सक्षम था। यह रास्पबेरीपी पर उपलब्ध विशेष संचार तंत्र का उपयोग कर रहा है जिसे mailbox
वीडियोकोर ओएस के साथ जीपीयू पर चलने के लिए कहा जाता है। यह आंशिक रूप से यहाँ प्रलेखित है ।