Linux下树莓派ds18b20温度获取

介绍

在Linux下,通过树莓派DS18B20温度传感器来获取温度;DS18B20是DALLAS公司的1-Wire(单总线)数字温度计芯片,温度测量范围从-55℃至+125℃。DS18B20是常用的数字温度传感器, 其输出的是数字信号, 具有体积小, 硬件开销低, 抗干扰能力强, 单线数字温度传感器.

实例

通过树莓派配置好DS18B20温度后一般它会保存在下面得路径下,

**/sys/bus/w1/devices/28-04xxxxxxxxxx/w1_slave**
// yy@Public_RPi:/sys/bus/w1/devices/28-xxxxxxxxx$ cat get_tmp
     2a 01 4b 46 7f ff 0c 10 f1 : crc=f1 YES
     2a 01 4b 46 7f ff 0c 10 f1 t=18625

从上面的内容看出当前获取的数据是 t = 18625 ;要实时获取这个温度值需要通过通过opendir(),readdir()等等一些函数将他实现;还有就是怎样将获取得到的数据改为标准格式;
具体实现步骤
1,通过opendir(),readdir() 将/sys/bus/w1/devices/28-xxxxxxxxx$ 这个路径打开,读取get_tmp;
2, 将get_tmp加到/28-xxxxxxxxx固定路径下;
3,调用opendir() ,readdir(), open(),read(),读出数据;
4,用strcat(),strstr()来解析数据;

Linux下文件IO操作文件夹

1,opendir();

#include<dirent.h>
#include<sys/types.h>
DIR *opendir(const char *name);

opendir() 用来打开指定的目录文件,并返回DIR*形态的目录流, 和open()类似, 接下来对目录的读取和搜索都要使用此返回值,该返回值是一个指向DIR结构体的指针
,失败返回NULL;

DIR结构体

struct __dirstream 
   {
      
    void *__fd;
    char *__data; 
    int __entry_data;   
    char *__ptr;   
    int __entry_ptr;    
    size_t __allocation;    
    size_t __size;    
    __libc_lock_define (, __lock)    
   };     
typedef struct __dirstream DIR; 

2,readdir();

 #include <dirent.h>    
 struct dirent *readdir(DIR *dirp)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值