首页 > 其他分享 >【代码】--库函数学习 temperature.c

【代码】--库函数学习 temperature.c

时间:2024-05-20 21:55:40浏览次数:19  
标签:nFd HANDLE temperature TempSensorOpen -- pSensorName file return 库函数

1. 封装的函数

      用到了内核中的hwmon子系统,

     hwmon子系统作为Linux内核中的一个子系统,用于监控硬件传感器的状态(设备的温度、电压和风扇转速)和提供对硬件传感器的访问接口。

     在应用层,对传感器信息的读取,本质上是对驱动中hwmon子系统在注册传感器设备时所创建的各个属性文件进行读取操作。

(1)HANDLE TempSensorOpen(char *pSensorName)
     打开设备文件:例如 nTmpHandle = TempSensorOpen("/sys/class/hwmon/hwmon0/temp1_input");

(2)float TempSensorRead(HANDLE nHd)
     获取温度值

2. 函数源码注释

2.1 TempSensorOpen

/**********************************
*function:    TempSensorOpen
*input    : 
*           pSensorName : Full path of sensor base hwmon system
*return :
*            success : return HANDLE,else return INVALID_HANDLE;
*/ 
HANDLE TempSensorOpen(char *pSensorName)
{
    int nFd = 0;
/*
check file param
*/    
    if(pSensorName == NULL)
    {
        LOG_ERROR("get null file path.");
        return INVALID_HANDLE;
    }
/*
check file existed
*/
    if(access(pSensorName,F_OK) != 0)
    {
        LOG_ERROR("Sensor file %s not found.",pSensorName);
        return INVALID_HANDLE;
    }
/*
Open
*/    
    nFd = open(pSensorName,O_RDONLY);
    if(nFd <= 0)
    {
        LOG_ERROR("Open Sensor file %s error with %s.",pSensorName,strerror(errno));
        return INVALID_HANDLE;
    }
    return (HANDLE)nFd;
}

2.2 TempSensorRead

/**********************************
*function:    TempSensorRead
*input    : 
*           nHd : Sensor handle from TempSensorOpen
*return :
*            success : return temperatur value,else return -1000.0
*/ 
float TempSensorRead(HANDLE nHd)
{
    int nFd = (int)nHd;
    char nTmp[32] = {0};
/*
Seek to file start pos
*/
    lseek(nFd,0,SEEK_SET);
/*
read value
*/
    if(read(nFd,nTmp,sizeof(nTmp)) <= 0)
    {
        LOG_ERROR("read value error with %s.",strerror(errno));
        return INVALID_TEMP_VAL;
    }
    return (float)(strtol(nTmp,NULL,0)) / 1000.0;
}

 

标签:nFd,HANDLE,temperature,TempSensorOpen,--,pSensorName,file,return,库函数
From: https://www.cnblogs.com/dkhlaojogo/p/18202854

相关文章

  • [Paper Reading] BEVFormer: Learning Bird’s-Eye-View Representation from Multi-C
    BEVFormer:LearningBird’s-Eye-ViewRepresentationfromMulti-CameraImagesviaSpatiotemporalTransformerslink时间:22.07机构:NanjingUniversity&&ShanghaiAILaboratoryTL;DR利用Transformer的Attention机制融合时空特征信息,在nuScenes测试集上达到SOTA精度,同时......
  • docker - 镜像仓库harbor
    环境需求:提前安装docker、docker-composehttps://github.com/goharbor/harbor/releases/download/v2.7.3/harbor-offline-installer-v2.7.3.tgz安装包:harbor-offline-installer-v2.7.3.tgz流程概述:解压安装包,修改yml文件,执行安装程序install.sh。harbor.yml重点关注下面......
  • 5.8-随堂练习-小组练习3
    请列出关于创新感受最深的几点启发答案:【第九组】1.以用户为中心:真正的创新应该是解决用户的需求和问题,因此要深入了解用户,观察他们的行为和反馈,以此为基础进行创新。2.勇于尝试:创新需要勇气和冒险精神,愿意尝试新的想法和方法,接受失败,并从失败中吸取教训,不断改进。3.跨界合......
  • Rust 每日一库 —— Darling
    Darling1.名词解释field(字段)是指属于一个对象或数据结构的一个数据成员,在宏编程时我们往往期望获得字段的名词、字段的类型、以及额外的自定义属性2.使用原因期望在过程宏中解析syn::DeriveInput得出申明性属性。例1:结构体中的field--->bar中的skip属性为true......
  • 复习
    复习什么是编程语言:编程语言是人与计算机沟通的介质什么是编程:编程是使用编程语言编写一大堆文件去完成某个目的为什么要编程:奴役计算机,解放劳动力计算机五大组成部分CPU:控制器,运算器,控制硬件,逻辑运算,算数运算内存:优点为速度快,缺点为断电就消失外存:优点为容量大,......
  • docker - 镜像仓库域名
    业务场景实用镜像仓库,不是真的搞一个很大的仓库,让大家都用我们的镜像。在离线的环境下,如果需要镜像仓库,就需要我们自己搭建了(自动化部署)。业务需求自己搭建镜像仓库,会用到下面这个命令,仔细看就能发现:拉取和推送的命令中,包含仓库的IP地址,如果回头迁移镜像库,不是得改一大堆应......
  • 5.8-随堂练习1
    1992年,姜万勐看到MPEG芯片Epiphany–用MPEG1把图像和声音同时存储在一张小光盘上VCD(VideoCompactDisc)。1993年9月万燕第一批1000台VCD机下线。几乎都被国内外家电公司买去解剖做样机万燕VCD100%市场份额1995年各路仿制的VCD机大举进军市场,竞争激烈。1996年全国......
  • 5.8-随堂练习2
    银弹:为了避免项目的成员为了一些问题争执不休,公司发明了银弹(SilverBullet)这一工具。简而言之,就是每个角色的代表(Dev/Test/PM)在项目过程中可以使用有限次的“停止争论,按我说的办”的武器–——银弹。银弹一出,大家就要听话。当然,银弹用一个少一个,下次有争论的时候,别人就更有机会使......
  • 5.8-随堂练习-案例分析
    案例分析:通过两个学生项目的例子,推断出这些团队的血型:1、STG游戏的跳票(为了完美,推迟了7天,但是7天之后也没有发布……)我怀着无比沉痛的心情宣布,我们的游戏因尚未达到预期的可玩性,为了不丢人现眼,延迟发布i天(i<=7)。我们在起初的计划中,以发布后一周的下载量作为项目衡量的标准。虽......
  • 5.15-随堂练习1
    如何摆脱[自我/当下]而考虑到[别人/将来],从而主动为群体和将来行动答案:要摆脱只关注自我和当下的局限,转而更多地考虑他人和未来,进而主动为群体和未来采取行动,可以尝试以下几个策略:培养同理心:尝试站在他人的角度思考问题,理解他们的需求、感受和挑战。这不仅能增进你对他人处境......