सी का उपयोग करके पीआई का तापमान प्राप्त करें


11

मुझे पता है कि आप उपकरण vcgencmd का उपयोग करके तापमान प्राप्त कर सकते हैं, लेकिन मैं सोच रहा था कि क्या कोई एपीआई है जो मैं सी में उपयोग कर सकता हूं ताकि vcgencmd के स्टैडआउट को पढ़े बिना तापमान को प्रोग्रामिक रूप से प्राप्त किया जा सके?


: आप इस उपयोगी लग सकते mjmwired.net/kernel/Documentation/sysfs-rules.txt
गोल्डीलॉक्स

जवाबों:


13

आप इस उत्तर/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। इसमें "लिबासिफ़्स" भी है, लेकिन इसे छोड़ दिया गया है और कर्नेल देवों ने स्पष्ट रूप से लोगों को इससे दूर रहने के लिए कहा है।
गोल्डीलॉक्स ocks

@goldilocks दिलचस्प! मुझे यह नहीं पता था, सोचा था कि यह किसी भी फाइल की तरह व्यवहार करता है। आप बहुत अच्छी तरह से सही हो सकते हैं।
फ्रीपा

2

जैसा कि @ फरेपा ने कहा, रास्पबेरीपी के लिए अब कर्नेल थर्मल ड्राइवर है इसलिए इसका उपयोग करने का सबसे आसान तरीका है। जहाँ तक मुझे पता है, यह वैसे vgencmdकाम नहीं करता है। थर्मल कर्नेल चालक के अस्तित्व में आने से पहले ही यह तापमान को पढ़ने में सक्षम था। यह रास्पबेरीपी पर उपलब्ध विशेष संचार तंत्र का उपयोग कर रहा है जिसे mailboxवीडियोकोर ओएस के साथ जीपीयू पर चलने के लिए कहा जाता है। यह आंशिक रूप से यहाँ प्रलेखित है


बेकिंग पाई पाठ्यक्रम कुछ और मेलबॉक्स सामग्री, लेकिन वहाँ यह केवल ग्राफिक्स के लिए प्रयोग किया जाता है।
फ्रीपा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.