?? adam.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]; //數(shù)據(jù)采集指令
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_)
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -