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

📄 adam.h

📁 数据库开发
💻 H
字号:
/**********************************************************************************/
/* FileName:				Adam.h												  */
/* Type:					header file											  */
/* Author:					Sunset												  */
/* Create Time:				2007-12-29											  */
/* Last Modified Time:															  */
/* Comment:					This file defines main data structure of			  */
/*							the AirMonitor project								  */
/* Copyright (C) 2007 by AirMonitor Development Project Team					  */
/* All rights reserved															  */
/**********************************************************************************/
#if !defined(AFX_ADAM_H__F77484C2_745F_11D3_A718_87712333104C__INCLUDED_)
#define AFX_ADAM_H__F77484C2_745F_11D3_A718_87712333104C__INCLUDED_

#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
#define SMOOTH_WINDOW	5
#include "databind.h"
class CComDev
{
public:
	int		m_nID;						//通讯端口
	int		m_nBt;						//波特率
	CString m_sCom;
	CString m_sCommand[10];			//数据采集指令
	CString m_sResult;
	int     m_nCurCommand;
	CComDev(){m_nCurCommand = 0; m_dtmLastUpdate = CTime::GetCurrentTime();};
	float StringToFloat(CString s);
	float MedianFilter(float* fData, int nFilterLength); 
	CTime   m_dtmLastUpdate;
	int     m_nMaxSec;
	float	fData[8];
	void	SetValueOrigin(int nIndex, float fVal){
			fData[nIndex] = fVal;
	};
	float GetValueOrigin(int nIndex){
			return fData[nIndex];
	};
};

class CCCD : public CComDev
{
public:
	int		m_nJfsj;

};

class CMotor : public CComDev
{
public:

};

class CGprs : public CComDev
{
public:
	CGprs(){};
	~CGprs(){};
	int  m_nOrder;
public:
	void	PrepareARec(CDBTenSec* pData, CString& sSendData);
	void	PrepareBRec(CDBFiveMin *pData, CString* sSendData, int& nCount);
	void	PrepareCRec(CDBTenSec* pData, CString& sSendData);
	void	PrepareDRec(CDBTenSec* pData, CString& sSendData);
	UINT    CRC16(unsigned char *updata,UINT len);
	void    RecSampleData(CString sData);
};

class CAdam4117 : public CComDev
{
private:
	float fHis[8][SMOOTH_WINDOW];
	int   nHisCount[8];
public:
	void Initll_sj(float* f1,float* f2,float* f3,float* f4);
	void RecSampleData(CString sData);
	void RecSampleOriginData(CString sData);
	CAdam4117(){m_sCommand[0] = _T("#01");memset(nHisCount, 0, 8*sizeof(int));};
	~CAdam4117(){};
	float fMin_ll[8],fMax_ll[8];
	float fMin_sj[8],fMax_sj[8];
	float fIn[8], fOut[8];
	
	void  SetMinMaxll(int nIndex, float fMin, float fMax){fMin_ll[nIndex] = fMin; fMax_ll[nIndex] = fMax;};
	void  SetMinMaxsj(int nIndex, float fMin, float fMax){fMin_sj[nIndex] = fMin; fMax_sj[nIndex] = fMax;};
	void  SetValue(int nIndex, float fVal){
		fIn[nIndex] = fVal; 
		if(fVal > fMax_sj[nIndex])
			fVal = fMax_sj[nIndex];
		if(fVal < fMin_sj[nIndex])
			fVal = fMin_sj[nIndex];
		float f = (fVal - fMin_sj[nIndex])/(fMax_sj[nIndex] - fMin_sj[nIndex]); 
		if(fMax_ll[nIndex] == fMin_ll[nIndex])
			fOut[nIndex] = fMin_ll[nIndex];
		else
			fOut[nIndex] = fMin_ll[nIndex] + f * (fMax_ll[nIndex] - fMin_ll[nIndex]);

//for smooth: median filter 
		if(nHisCount[nIndex] < SMOOTH_WINDOW)
		{
			fHis[nIndex][nHisCount[nIndex]] = fOut[nIndex];
			nHisCount[nIndex] = nHisCount[nIndex] + 1;
		}else{
			for(int i = 0; i < SMOOTH_WINDOW - 1; i++)
			{
				fHis[nIndex][i] = fHis[nIndex][i + 1];
			}
			fHis[nIndex][SMOOTH_WINDOW - 1] = fOut[nIndex];
		}
	};
	float GetValue(int nIndex){
//		if(fOut[nIndex] > fMax_ll[nIndex])
//			fOut[nIndex] = fMax_ll[nIndex];
//		if(fOut[nIndex] < fMin_ll[nIndex])
//			fOut[nIndex] = fMin_ll[nIndex];
		if(nHisCount[nIndex] < SMOOTH_WINDOW)
			return fOut[nIndex];
		else
			return MedianFilter(fHis[nIndex], SMOOTH_WINDOW);
	}; 	
};

#endif // !defined(AFX_ADAM_H__F77484C2_745F_11D3_A718_87712333104C__INCLUDED_)

⌨️ 快捷键说明

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