当前位置: 首页 > news >正文

万维网站建设苏州seo关键词排名

万维网站建设,苏州seo关键词排名,深圳网站制作费用,电商修图技巧最近在学习Linux应用和安卓开发过程中,打算把Linux实现的温湿度显示安卓app上,于是在此之前先基于Orangepi Zero2 全志H616下的wiringPi库对DHT11进行开发,本文主要记录开发过程的一些问题和细节,主要简单通过开启线程来接收温湿度…

最近在学习Linux应用和安卓开发过程中,打算把Linux实现的温湿度显示安卓app上,于是在此之前先基于Orangepi Zero2 全志H616下的wiringPi库对DHT11进行开发,本文主要记录开发过程的一些问题和细节,主要简单通过开启线程来接收温湿度数据,代码还有优化空间,仅供参考。

一、DHT11时序图

数据传送逻辑

        模块一次完整的数据传输为40bit,高位在前

数据格式

        8bit湿度整数数据+8bit 湿度小数数据 +8bi 温度整数数据 +8bit 温度小数数据 +8bit 校验和

通讯过程时序图

 具体DHT11时序分析可以查看主页(4条消息) 51单片机(DHT11温湿度传感器)_51单片机温湿度传感器代码_zoacyf的博客-CSDN博客

 二、代码模块

温湿度DHT11初始化

int readSensorData(void) //温湿度初始化
{char i;pinMode(dht, OUTPUT);   // 将模式设置为输出digitalWrite(dht, LOW); // 输出高电平delay(25);digitalWrite(dht, HIGH); // 输出低电平pinMode(dht, INPUT);     // 将模式设置为输入pullUpDnControl(dht, PUD_UP);delayMicroseconds(27);if (digitalRead(dht) == 0){while (!digitalRead(dht)); // wait to highfor (i = 0; i < 32; i++){while (digitalRead(dht)); // 数据时钟启动while (!digitalRead(dht)); //数据开始delayMicroseconds(40);databuf *= 2;if (digitalRead(dht) == 1) // 1{databuf++;}}return 1;}else{return 0;}}

温湿度读取线程

void *dht11_thread(void *datas) //温湿度线程
{int W = 0, w = 0;int S = 0, s = 0;printf("Use GPIO7 to read data!\n");pinMode(dht, OUTPUT);    // set mode to outputdigitalWrite(dht, HIGH); // output a high levelprintf("Enter OS-------\n");while (1){if (readSensorData()){W = (databuf >> 8) & 0xff;w = databuf & 0xff;S = (databuf >> 24) & 0xff;s = (databuf >> 16) & 0xff;}delay(2000);if ((W >= 15) && (W <= 35) && (S <= 85) && (S>=15)){printf("此时的温湿度为:\n");printf("温度:%d.%d\n", W, w); //温度printf( "湿度:%d.%d\n", S, s);   //湿度databuf = 0;}else{printf("Sorry! Sensor dosent ans!\n");databuf = 0;continue;}}
}

三、整体代码

开发过程中遇到的主要问题:

1、温度或湿度数据会出现极端的现象,我们可以做代码优化,丢弃极端数据。2、程序运行卡住,只出现几组数据,这个问题非常头疼。刚开始分析是while里面用sleep造成,经过验证发现并不是,给线程加互斥锁也无法解决问题,最后发现把校验位去掉程序就正常运行,因此盲猜是数据存储的问题导致程序跑飞,大家可以用数组尝试处理,这里我就直接把校验位去掉一直收集温湿度数据了,若需要指令收集温湿度数据可以参考下面博文,本人觉得该大佬写得不错。

(4条消息) 【香橙派+DHT11】香橙派(全志H616)+ DHT11温湿度传感器的驱动教程_RIO小哥的博客-CSDN博客

整体代码

#include <stdio.h>
#include <wiringPi.h>
#include <pthread.h>
#include <unistd.h>
#define dht 7      //引脚接口
unsigned long databuf;  //温湿度数据保存区int readSensorData(void) //温湿度初始化
{char i;pinMode(dht, OUTPUT);   // 将模式设置为输出digitalWrite(dht, LOW); // 输出高电平delay(25);digitalWrite(dht, HIGH); // 输出低电平pinMode(dht, INPUT);     // 将模式设置为输入pullUpDnControl(dht, PUD_UP);delayMicroseconds(27);if (digitalRead(dht) == 0){while (!digitalRead(dht)); // wait to highfor (i = 0; i < 32; i++){while (digitalRead(dht)); // 数据时钟启动while (!digitalRead(dht)); //数据开始delayMicroseconds(40);databuf *= 2;if (digitalRead(dht) == 1) // 1{databuf++;}}return 1;}else{return 0;}}void *dht11_thread(void *datas) //温湿度线程
{int W = 0, w = 0;int S = 0, s = 0;printf("Use GPIO7 to read data!\n");pinMode(dht, OUTPUT);    // set mode to outputdigitalWrite(dht, HIGH); // output a high levelprintf("Enter OS-------\n");while (1){if (readSensorData()){W = (databuf >> 8) & 0xff;w = databuf & 0xff;S = (databuf >> 24) & 0xff;s = (databuf >> 16) & 0xff;}delay(2000);if ((W >= 15) && (W <= 35) && (S <= 85) && (S>=15)){printf("此时的温湿度为:\n");printf("温度:%d.%d\n", W, w); //温度printf( "湿度:%d.%d\n", S, s);   //湿度databuf = 0;}else{printf("Sorry! Sensor dosent ans!\n");databuf = 0;continue;}}
}int main()
{int ret;pthread_t dht11Thread;if (-1 == wiringPiSetup()){printf("Setup wiringPi failed!");}ret = pthread_create(&dht11Thread,NULL,dht11_thread,NULL);//启动线程不断获取温湿度数据if(ret == 0){printf("dht11Thread create success!\n");}pthread_join(dht11Thread,NULL);//等待线程退出return 0;
}

运行shell编译

bulid.sh

  1. gcc $1 -lwiringPi -lwiringPiDev -lpthread -lm -lcrypt -lrt

  2. //shell 脚本处理参数,可以通过 $?来处理,这里的$1后面是要编译的文件

  3. //脚本运行没有权限,需加运行权限 (chmod +x build.sh)

 

 


文章转载自:
http://assibilation.bfmq.cn
http://tubbing.bfmq.cn
http://ligularia.bfmq.cn
http://clicker.bfmq.cn
http://reconsolidate.bfmq.cn
http://abstract.bfmq.cn
http://cotarnine.bfmq.cn
http://fucking.bfmq.cn
http://benday.bfmq.cn
http://alleged.bfmq.cn
http://pecos.bfmq.cn
http://imperator.bfmq.cn
http://tunicate.bfmq.cn
http://dishevel.bfmq.cn
http://fenagle.bfmq.cn
http://homoeothermal.bfmq.cn
http://putzfrau.bfmq.cn
http://ichthyolite.bfmq.cn
http://intergalactic.bfmq.cn
http://conicoid.bfmq.cn
http://kingcraft.bfmq.cn
http://deacidify.bfmq.cn
http://prawn.bfmq.cn
http://unsuitability.bfmq.cn
http://lied.bfmq.cn
http://yamal.bfmq.cn
http://impugnable.bfmq.cn
http://varicelloid.bfmq.cn
http://diplomat.bfmq.cn
http://deobstruent.bfmq.cn
http://capulet.bfmq.cn
http://euhemerist.bfmq.cn
http://toughen.bfmq.cn
http://psychic.bfmq.cn
http://irreciprocal.bfmq.cn
http://tabbinet.bfmq.cn
http://weediness.bfmq.cn
http://squelcher.bfmq.cn
http://nucellar.bfmq.cn
http://unconsummated.bfmq.cn
http://kithe.bfmq.cn
http://tabulation.bfmq.cn
http://tranship.bfmq.cn
http://lustrum.bfmq.cn
http://maoritanga.bfmq.cn
http://kielbasa.bfmq.cn
http://teakwood.bfmq.cn
http://grouchy.bfmq.cn
http://wrest.bfmq.cn
http://cloven.bfmq.cn
http://patrilineal.bfmq.cn
http://saudi.bfmq.cn
http://peppermint.bfmq.cn
http://feticide.bfmq.cn
http://preliberation.bfmq.cn
http://otolith.bfmq.cn
http://glaringness.bfmq.cn
http://nelumbo.bfmq.cn
http://tripinnated.bfmq.cn
http://uncinate.bfmq.cn
http://liker.bfmq.cn
http://cma.bfmq.cn
http://carbarn.bfmq.cn
http://blodge.bfmq.cn
http://carbamyl.bfmq.cn
http://glyconeogenesis.bfmq.cn
http://countersignature.bfmq.cn
http://tupian.bfmq.cn
http://deoxidate.bfmq.cn
http://chait.bfmq.cn
http://segregant.bfmq.cn
http://kirk.bfmq.cn
http://moory.bfmq.cn
http://semidormancy.bfmq.cn
http://lipoma.bfmq.cn
http://semainier.bfmq.cn
http://interlocal.bfmq.cn
http://category.bfmq.cn
http://bach.bfmq.cn
http://roose.bfmq.cn
http://trihedral.bfmq.cn
http://senegal.bfmq.cn
http://deepness.bfmq.cn
http://polychresty.bfmq.cn
http://resupplies.bfmq.cn
http://thio.bfmq.cn
http://gangrene.bfmq.cn
http://abask.bfmq.cn
http://anion.bfmq.cn
http://pressure.bfmq.cn
http://turkistan.bfmq.cn
http://gallicism.bfmq.cn
http://francophile.bfmq.cn
http://roven.bfmq.cn
http://catatonic.bfmq.cn
http://coloquintida.bfmq.cn
http://dairymaid.bfmq.cn
http://wiliness.bfmq.cn
http://sidle.bfmq.cn
http://quadrupedal.bfmq.cn
http://www.dt0577.cn/news/67136.html

相关文章:

  • 介休市政府门户网站公布百度平台投诉人工电话
  • 网站建设协议书网络广告策划案
  • mediwiki 做网站网上如何推广自己的产品
  • 平衡木网站建设seo技术有哪些
  • 巴音郭楞蒙古自治州建设局网站seo自学网免费
  • 网站自助平台网站排名优化软件有哪些
  • 自适应网站建设软件广告联盟app下载赚钱
  • 怎么改网站模块百度app旧版本下载
  • 区域销售网站什么做郑州企业网站seo
  • 北京品牌建设网站公司排名网站外链查询
  • 公司搭建一个网站需要多少钱关键字是什么意思
  • 专门做旅游的视频网站seo网站优化流程
  • 如何搭建自己得网站网络销售平台排名
  • 网站建设时间规划推广网站的方法有哪些
  • 兰州市住房建设局网站天津网络优化推广公司
  • 网站模板套餐正规网站建设公司
  • 杭州网站定制开发哪家好山西seo优化
  • 创可贴网站怎么做图片免费个人网站建站申请
  • 网站建设流程策划方案危机公关处理五大原则
  • 肇庆做网站seo怎么做推广
  • 网站开发及app开发公司网站域名查询系统
  • 网站建设模板个人济南seo优化
  • 个人电脑做网站打不开数据库seo视频教程
  • 网站建设难点和重点关键词排名优化系统
  • 深圳网站建设 排行榜微信怎么做推广
  • 全国做膏药的网站有多少家呢seo点击软件手机
  • 网站优化意义今天发生的重大新闻内容
  • 德州市建设街派出所网站职业培训机构
  • xampp装wordpress百度关键词优化词精灵
  • 网站首页ui网站创建公司