// 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 #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& 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& 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_)