⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 temperaturecalc.cpp

📁 RFID温度签的源码
💻 CPP
字号:
#include "StdAfx.h"
#include "TemperatureCalc.h"

#include <math.h>

CTemperatureCalc::CTemperatureCalc( U8 AD )
{
	m_Param = GetParam( AD );
	InitRtArray();
}

CTemperatureCalc::~CTemperatureCalc(void)
{
}

float CTemperatureCalc::GetTemperature2(U8 data1, U8 data2)
{
	return GetTemperature( (((U16)(data1) << 8)&0xff00 ) | (data2 & 0x00FF) );
}

float CTemperatureCalc::GetTemperature(U16 data)
{
	float val = (float)data;
	float sample_data = (float)( (val*m_Param*11000) / ( 1.8 - val*m_Param ) ); 

	int i = 0; 
	int j = 600;

	float ActualTemperature = 80;//m_RtArray[1199];
	{

		i = 0;
		j = 1201;
		int t = (i+j)/2;
		while (true)
		{
			if ( m_RtArray[t]== sample_data) break;
			if ( m_RtArray[t] < sample_data)
			{
				i = t;
			}
			if( m_RtArray[t] > sample_data )
			{
				j = t;
			}
			t = (i+j)/2;
			if ( i == t || j == t ) break;
		}
		return  -40+t*0.1;
	}
	for( int i=0; i<600; i++, j++ )
	{
		if( fabs( sample_data - m_RtArray[i] ) <= 0.3 )
		{
			ActualTemperature =-40 + 0.1*i;// m_RtArray[i];
			break;
		}

		if( fabs( sample_data - m_RtArray[j] ) <= 0.3 )
		{
			ActualTemperature = -40 + 0.1*j;//m_RtArray[j];
			break;
		}
	}

	return ActualTemperature;
}

float CTemperatureCalc::GetParam(U8 AD)
{
	float val = (float)( AD & 0x00000080 ? ( 9.1838 - (float)(AD - 128)/10000 ) : ( 9.1838 + (float)AD / 10000 ) );

	return (float)( 1.8/(val*1024) ); 
}

void CTemperatureCalc::InitRtArray()
{
	float a,b,c,a0,b0,c0;

	float T;

	a0 = (float)( 3.90802*pow(10.0,-3) );
	b0 = (float)( 5.80195*pow(10.0,-7) );
	c0 = (float)( 4.27351*pow(10.0,-12) );	

	float fTemp = 0;
	float ff = 0;
	int i = 0;
	float sum = 0;

	float param = 0.388428;

	for( T = -40; T <= 80; T += 0.1,i++ )
	{
		if(T < 0)
		{
			a=a0;
			b=b0;
			c=c0;
		}         
		else
		{
			a=a0;
			b=b0;
			c=0;			
		}		
		m_RtArray[i] = (float)( 1000*(1+a*T-b*pow(T,2)-c*pow(T,3)*(T-100)) );
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -