html实时获取树莓派温湿度,Qt加树莓派读取ds18b20温度传感器的值

二:DS18B20编程思路linux

在linux下一切皆文件,DS18B20固然也不例外,因此在树莓派上编写ds18b20只需想办法读出ds18b20所对应的文件就能够了。编程

1,每一个ds18b20所对应的文件名都不同,想要读取文件内容,首先需肯定文件名。app

解决方案:在Qt下,进入DS18b20所在文件父目录,遍历整个文件名,找到ds18b20对应的文件,在进入子目录,打开对应的文件,读取对应的数据。函数

三:所用到的主要函数this

1, 获得对应目录下的全部文件列表spa

//设置ds18b20的文件所在位置

QDir tempPath("/sys/bus/w1/devices/");

//获得全部的文件列表

QStringList fileList=tempPath.entryList();.net

2,根据字符定位在字符串中的函数orm

QString str="123";htm

str.indexOf('2'); 返回值为1

3,字符内容截取函数

QString str="123";

QString s=str.mid(1,1);

截取内容为:s=2;

4,判断字符串中是否包含某个字符串

QString str="asdf";

str.contains("a");  //返回结果为真

三:程序源码

temperatureMeasurement()

{

//加载单总线DS18b20所需的模块

system("sudo modprobe w1-gpio");

system("sudo modprobe w1-therm");

QString tempFile="/sys/bus/w1/devices/"; //ds18b20文件路径

QString tempData;  //读出的ds18b20的温度

//设置ds18b20的文件所在位置

QDir tempPath("/sys/bus/w1/devices/");

//获得全部的文件列表

QStringList fileList=tempPath.entryList();

//遍历全部文件,找到关于ds18b20的文件

int i=0;

while(i

{

if(fileList.at(i).contains("28-"))

{

tempFile.append(fileList.at(i));  //已经找到了文件

break;

}

i++;

}

//打开ds18b20d的温度存储文件

tempFile.append("/w1_slave");

QFile file(tempFile);

if(!file.open(QIODevice::ReadOnly|QFile::Text))

{

QMessageBox::information(this,tr("温度测量"),tr("请检测温度传感器是否有问题!"));

return;

}

QTextStream in(&file);

//根据存储的文件找到须要的数据

QString str=in.readAll(); //读出全部内容

tempData=str.mid(str.indexOf('t')+2,3); //定位数据的位置,找到所须要的数据,精度能够达到小数点后三位,本程序只    需一位

file.close();

}

注意:驱动程序写死了单总线引脚的定义,须要修改的话,只能修改内核代码

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值