使用python编写工具处理DHT22驱动调试信息

某天晚上,下了班回到家,无意中找到以前用的温度传感器DHT22,如下图,
这里写图片描述
然后在电脑搜了下,还好,有程序,STM32的,可以跑下,可是跑了后发现程序不稳定。
然后就把读出来的5个数据(两个字节湿度+两个字节温度+一个字节效验位)跟计算出来的效验位通过串口打印出来看看,如下图,一看,发现算出来的效验位跟读出来的效验位不对,明显是读取的数据有问题,好吧,这个驱动有问题,不能用。

这里写图片描述
第二天晚上,下了班回到家,
上网找了DHT22资料,看了DHT22 DataSheet,把驱动改了,打印出来的调试信息如下,

这里写图片描述
嗯,嗯,基本上都是对的上了,当然这么点数据还不能说明什么,只能让它继续跑,再重新上电后继续收集数据,然后就有一大堆数据,
一堆数据,一大堆数据,怎么办,怎么办,当然不能一个一个的看了,那样太逗逼了,而且也容易出错,还浪费时间,
然后呢,然后呢,然后就出现了下面的工具。

# -*- coding: cp936 -*-
from __future__ import division
import win32ui
#目标文件
tar_file="target.txt"

#创建打开文件对话框
dlg = win32ui.CreateFileDialog(1)
dlg.SetOFNInitialDir('')
dlg.DoModal()
filename = dlg.GetPathName()

if len(filename) ==0:
        print "file's name is ivilid"
        exit()

#打开源文件
print "Open file:%s" %(filename)
try:
    source = open(filename,"r+")
except :
    source.close()
    exit()

all = 0
error = 0
#处理数据
print "handle data"
for line in source:
    temp = line.strip('\n')
    tem = temp.split(",")
        if len(tem) <2:
                break
#        print tem[-1],tem[-2]
    if cmp(tem[-1],tem[-2]) != 0:
        error = error +1
    else:
                all =all +1
print "The result is:in %d item,%d error,the error rate is:%f" %(all,error,error / all)
#print "%d item" %all
#print "%d error" %error
#print "ERR is %f" %(error / all)
source.close()

一个用python写的数据处理工具,原理很简单,读取文件然后对比每一项的后面连个是否一样,一样的话就表示正确,不一样就表示数据错了,

下图,是对调试过程中获取的数据进行分析的结果,从结果可以看出一共收集了568个数据,有463个是错的,错误了达81.51%。

这里写图片描述
这是对第一次获取的数据分析的结果,从图中可以看出,第一次收集了275个数据,0个错误,错误率为0

这里写图片描述
这是对第二次获取的数据分析的结果,从图中可以看出,第二次收集了444个数据,0个错误,错误率为0

这里写图片描述

这是对第三次获取的数据分析的结果,从图中可以看出,第三次收集了537个数据,0个错误,错误率为0

这里写图片描述

工具更新见我的github

说明

  • 环境:win7 64位,python 2.7,
  • 库依赖:win32ui(pywin32-220.win-amd64-py2.7.exe)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值