Files
coco df489d5640 a
2026-07-03 16:05:30 +08:00

276 lines
8.2 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// TestingData.h: interface for the CTestingData class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_TESTINGDATA_H__98736B12_3B1E_4011_AE8A_0D039FC59FAB__INCLUDED_)
#define AFX_TESTINGDATA_H__98736B12_3B1E_4011_AE8A_0D039FC59FAB__INCLUDED_
#include <vector>
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
struct _WinTime{
int wintime_StartTime;
int wintime_width;
double wintime_V2;
double wintime_Integral;
double wintime_ETA;
double wintime_M;
};
struct _WinTimeList{
int ListLength; //包含时窗结果的长度,
double wintime_Vp;
_WinTime timeWinList[10];
};
struct _WaveCount{
int WaveLength;
_WinTimeList windowList[2]; //单个时窗的长度,由2次放电的时窗组成,每次放电的时窗最多10个,
//并且两个放电的时窗是一样的
};
typedef struct ST_SIG_TW
{
int nTWStartPos;
int nTWWidth;
ST_SIG_TW()
{
nTWStartPos = 0;
nTWWidth = 0;
}
}STSigTWInfo;
typedef struct ST_TD_TIME_WIN_INFO
{
float fThl;
float fD;
float fr;
int iTimeWinCnt;
float fEta[20];
float fM[20];
}STTdTimeWinInfo;
typedef struct ST_TD_IP_DATA_INFO
{
int iC1;
int iC2;
int iP1;
int iP2;
int iN;
float fK;
float fI;
float fV;
float fR0;
float fSP;
float fR0_LC;
float fM0_LC;
STTdTimeWinInfo stTdTimeData;
ST_TD_IP_DATA_INFO()
{
iC1 = 0;
iC2 = 0;
iP1 = 0;
iP2 = 0;
iN = 0;
fK = 0;
fI = 0;
fV = 0;
fR0 = 0;
fSP = 0;
fR0_LC = 0;
fM0_LC = 0;
memset(&stTdTimeData, 0, sizeof(STTdTimeWinInfo));
}
}StTdTaskIPDataInfo;
typedef struct ST_TD_NO_IP_DATA_INFO
{
int iC1;
int iC2;
int iP1;
int iP2;
int iN;
float fK;
float fI;
float fV;
float fR0;
float fSP;
float fR0_LC;
float fM0_LC;
ST_TD_NO_IP_DATA_INFO()
{
iC1 = 0;
iC2 = 0;
iP1 = 0;
iP2 = 0;
iN = 0;
fK = 0;
fI = 0;
fV = 0;
fR0 = 0;
fSP = 0;
fR0_LC = 0;
fM0_LC = 0;
}
}StTdTaskComDataInfo;
#define AR_WENNER_ALPHA 1 //温纳(α)
#define AR_WENNER_BETA 2 //温纳(β)
#define AR_WENNER_GAMMA 3 //温纳(γ)
#define AR_POLE_DIPOLE_AMN 4 //三极装置AMN
#define AR_DIPOLE_POLE_MNB 5 //三极装置MNB
#define AR_POLE_POLE_AM 6 //二极装置AM
#define AR_CROSS_HOLE_TYPE 16 //跨孔偶极排列
#define AR_WENNER_SCH_BASIC 50 //经典 温纳-施伦贝尔排列
#define AR_WENNER_SCHLUMBERGER 39 //温纳-施伦贝尔排列
#define AR_CUSTOM_2D_TYPE 40 //自定义2D
#define AR_EDGE_GARDIENT 41 //边缘梯度
#define AR_BIPOLE_HOLE_SPT 42 //井地井
#define AR_DOUBLE_SIZE_3P 43 //双边三级
#define AR_MID_GARDIENT_SCAN 29 //中梯扫面
#define AR_SCHLUMBERGER 11 //施伦贝谢尔排列
#define AR_MARINE 34 //海上测量
#define AR_DIP_DIP 9 //偶极偶极排列
#define AR_STRONG_GRADIENT 44 //加强梯度
#define AR_CROSS_HOLE_GEOMATIVE 45 //跨孔(Geomative)
#define AR_CROSS_HOLE_GEOMATIVE_AM 46 //跨孔am装置
#define AR_S3P_MEDIUM 47 //滚动三极装置
#define AR_LAND_FILL_ONE 48 //垃圾掩埋-斜对角模式
#define AR_LAND_FILL_TWO 49 //垃圾掩埋-相邻模式
#define EXP_2D_DATA_BY_DEPTH 1
#define AR_POLE_POLE_AM_3D 22 //三维单极-单极装置
#define AR_POLE_DIPOLE_AMN_3D 23 //三维单极-偶极装置
#define AR_DIPOLE_DIPOLE_MNB_3D 24 //三维偶极-偶极装置
#define AR_SCHLUMBERGER_3D 25 //三维斯伦贝谢装置
#define AR_WENNER_ALFA_3D 26 //三维温纳
#define AR_WENNER_BETA_3D 27 //三维温纳
#define AR_GRADIENT_3D 28 //三维中间梯度
#define AR_MID_GRADIENT_SCAN_3D 29 //三维中梯扫面
#define AR_LAND_FILL_ONE_3D 48 //三维垃圾填埋场1
#define AR_LAND_FILL_TWO_3D 49 //三维垃圾填埋场2
#define ONE_PAGE_DATA_NUMBER (100)
class CDevice;
class CMedium;
class CTestingData
{
public:
virtual void UpdataTopography(int f_disType ,int f_start,CListCtrl &f_list);
BOOL ExcuteSql(CString f_sql);
virtual void GetTimeWindowList(CListCtrl &f_list);
virtual BOOL ShowTimeWindow(CListCtrl &tdConList, int iTsn);
void GetORGCStringToArray(CString f_SrcString, CStringArray *f_array);
void FreeWindowsTime();
double GetPeriod();
bool GetTimeWindowInfo(std::vector<STSigTWInfo>& vtTWInfo);
void CreateWindowsTime();
virtual bool CalculateTimeWindows(struct _WinTimeList f_winTimeList, CStringArray *v_orgData, int f_TRwave, int f_Tcycle, int f_Sample, int f_interation, int f_industrial);
virtual bool CalculateTWInfo(CStringArray *v_orgData, int nFrenquence);
virtual BOOL DisplayIpCurveGraph();
CDevice* m_pDevice;
DWORD m_dwID;
CString m_szTdName;
CString m_szTdCN;
CString m_szTLocation;
CString m_szPrCN;
CString m_szTzName;
CString m_szTzCN;
DWORD m_dwTzID;
DWORD m_dwSCID;
CString m_szSCCN;
CString m_szSName;
int m_iSType;
int m_iTType;
int m_iTMode;
int m_iEAmount;
int m_iTPAmount;
int m_iCHAmount;
int m_iN;
int m_iTRWave;
int m_iTRFrequency;
int m_iIFrequency;
int m_iSAFrequency;
int m_iCLayout;
float m_fESpace;//电极步长
CString m_szEDistance;//电极间距
//CString m_fESpace;
//CString m_szEDistance;
int m_iWeather;
int m_iWDIR;
float m_fTemperature;
float m_fHeight;
float m_fHumidity;
float m_fTRPeriod;
CString m_szCDate;
CString m_szCTime;
CString m_szTDate;
CString m_szTTime;
int m_iRCamount;
int m_iRDirection;
int m_iCRtime;
CString m_szPM;
CString m_szOP;
CString m_szQA;
virtual bool ShowGrList(CListCtrl &tdGrList); //显示接地电阻列表(tdGrList---in:接地电阻列表)
virtual bool ShowConList(CListCtrl &tdConList); //显示测试数据列表(tdGrList---in:接地测试数据列表)
virtual bool ShowConListByPage(CListCtrl &tdConList, int iSType = 2); //显示数据内容列表(tdConList---in:数据内容列表)
virtual bool ShowDetailInfo(CListCtrl &tdDetailList); //显示测试数据详情列表(tdDetailList---in:测试数据详情列表)
virtual BOOL SaveTdToExcelFile(CString f_szFileName); //保存数据为Excel文件
virtual BOOL SaveTdToResCEFile(CString f_szFileName);
virtual BOOL SaveTdToRes2DFile(CString f_szFileName); //保存数据为Res2D文件
virtual BOOL SaveTdToRes3DFile(CString f_szFileName);
virtual BOOL SaveTdToCsvFile(CString f_szFileName); //保存数据为Csv文件
virtual bool ExportIP2DDataToDat(CString strFile) {return true;}
virtual bool ExportIP3DToDatFile(CString strFile) {return true;}
virtual BOOL ExportIPDataToTxt(CString strFileName){return TRUE;}
virtual BOOL ExportResDataToTxt(CString strFileName){return TRUE;}
virtual BOOL ExportSpDataToTxt(CString strFileName){return TRUE;}
virtual BOOL Export2dDataToTxtBySort(CString strFileName, int iSortMethod){return TRUE;}
virtual BOOL ExportDataToUrf(CString strFileName){return FALSE;}
void SetCustToCrossHole(bool bFlag){m_bIsCustomToCrossHole = bFlag;}
virtual BOOL DisplayGraph() = NULL; //显示图像
virtual BOOL DisplayTPSplinesGraph(int iTSN) = NULL; //显示曲线图
virtual BOOL LoadData(CLinkList<CMedium*>& m_medLinkList); //加载数据(m_medLinkList---in:装置列表)
//iOrgPoleID:原电极编号, iHoleID:井编号,iHoleFlag:左右井标记,左井为0,右井为1,iMidEamount为电极数的1/2
inline int CalcuCrossHolePoleID(int iOrgPoleID, int iHoleID, int iHoleFlag, int iMidEamount){return iOrgPoleID-(iHoleID-1)*iMidEamount + iHoleFlag*iMidEamount;}
CTestingData(DWORD dwID, _ConnectionPtr& pConnection);
virtual ~CTestingData();
CPtrList m_tdChaList;
_WaveCount *m_waveCount;
protected:
_ConnectionPtr m_pConnection;
CHandleProcessor m_handleProcessor;
double GetCycle(int f_type);
BOOL SaveOrgDataToDB(DWORD dwTdID); //保存原始数据到数据库(dwTdID---in:ID)
BOOL SaveGRDataToDB(DWORD dwTdID); //保存接地电阻数据到数据库(dwTdID---in:ID)
bool m_bIsCustomToCrossHole; //是否进行将自定义装置转换为跨孔
private:
int GetSample(int f_nindustrial, int f_type);
double adc_integral(int *adc_buf, int length);
double adc_average(int *adc_buf, int length);
CString GetWaveNum(int f_waveType);
void TransfToDouble(double* f_buff, CStringArray f_szArray);
double adc_calculate(double offset, double coefficient, double adc);
};
#endif // !defined(AFX_TESTINGDATA_H__98736B12_3B1E_4011_AE8A_0D039FC59FAB__INCLUDED_)