使用C获取PI的温度


Answers:


13

您可以阅读此答案中/sys/class/thermal/thermal_zone0/temp指定的文件。从命令行开始进行测量,并使用读取文件。但是您应该只可以用C打开文件。温度以摄氏度为单位,以ASCII数字返回。也许是这样,未经测试:)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);

经验使我相信高级流接口在proc / sys文件上不可靠,您应该使用open()和,read()而应使用YMMV。还有一个“ libsysfs”,但是它已经被废弃了,内核开发人员已经明确告诉人们不要使用它。
goldilocks

@goldilocks有趣!我不知道这一点,以为它的行为就像任何文件一样。您可能非常正确。
Frepa 2013年

2

正如@Frepa所说,RaspberryPi现在有内核热驱动程序,因此最简单的方法是使用它。据我所知,这不是可行的方法vgencmd。即使在存在热内核驱动程序之前,它也能够读取温度。它使用RaspberryPi上可用的特殊通信机制mailbox来与运行在GPU上的VideoCore OS进行通信。它部分记录在这里


烘焙过程中皮有一定的多个邮箱的材料,但是有它仅用于图形。
Frepa 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.