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

📄 shiftcalpltctl.cpp

📁 此为某测试平台的上位机软件部分
💻 CPP
字号:
// ShiftCalPltCtl.cpp : Implementation of the CShiftCalPltCtrl ActiveX Control class.

#include "stdafx.h"
#include "ShiftCalPlt.h"
#include "ShiftCalPltCtl.h"
#include "ShiftCalPltPpg.h"


#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif


IMPLEMENT_DYNCREATE(CShiftCalPltCtrl, COleControl)
/////////////////////////////////////////////////////////////////////////////
// Message map
BEGIN_MESSAGE_MAP(CShiftCalPltCtrl, COleControl)
	//{{AFX_MSG_MAP(CShiftCalPltCtrl)
	// NOTE - ClassWizard will add and remove message map entries
	//    DO NOT EDIT what you see in these blocks of generated code !
	//}}AFX_MSG_MAP
	ON_OLEVERB(AFX_IDS_VERB_PROPERTIES, OnProperties)
END_MESSAGE_MAP()


/////////////////////////////////////////////////////////////////////////////
// Dispatch map
BEGIN_DISPATCH_MAP(CShiftCalPltCtrl, COleControl)
	//{{AFX_DISPATCH_MAP(CShiftCalPltCtrl)
	DISP_FUNCTION(CShiftCalPltCtrl, "GetResvVelocityCoeff", GetResvVelocityCoeff, VT_BOOL, VTS_I2 VTS_PR8 VTS_PR8)
	DISP_FUNCTION(CShiftCalPltCtrl, "GetDmmCoeff", GetDmmCoeff, VT_BOOL, VTS_I2 VTS_PR8 VTS_PR8)
	DISP_FUNCTION(CShiftCalPltCtrl, "GetScopeCoeff", GetScopeCoeff, VT_BOOL, VTS_I2 VTS_PR8 VTS_PR8)
	DISP_FUNCTION(CShiftCalPltCtrl, "MeasSyncVelt", MeasSyncVelt, VT_BOOL, VTS_I2 VTS_I2 VTS_R8 VTS_R8 VTS_R8 VTS_PR8 VTS_PR8 VTS_PR8)
	DISP_FUNCTION(CShiftCalPltCtrl, "MeasDmm", MeasDmm, VT_R8, VTS_I2 VTS_I2 VTS_R8)
	DISP_FUNCTION(CShiftCalPltCtrl, "MeasScope", MeasScope, VT_R8, VTS_I2 VTS_I2 VTS_R8)
	DISP_FUNCTION(CShiftCalPltCtrl, "InitCal", InitCal, VT_BOOL, VTS_NONE)
	DISP_FUNCTION(CShiftCalPltCtrl, "ReleaseCal", ReleaseCal, VT_BOOL, VTS_NONE)
	DISP_FUNCTION(CShiftCalPltCtrl, "CurveSyncVelo", CurveSyncVelo, VT_EMPTY, VTS_NONE)
	DISP_FUNCTION(CShiftCalPltCtrl, "CurveDmm", CurveDmm, VT_EMPTY, VTS_NONE)
	DISP_FUNCTION(CShiftCalPltCtrl, "CurveScope", CurveScope, VT_EMPTY, VTS_NONE)
	//}}AFX_DISPATCH_MAP
	DISP_FUNCTION_ID(CShiftCalPltCtrl, "AboutBox", DISPID_ABOUTBOX, AboutBox, VT_EMPTY, VTS_NONE)
END_DISPATCH_MAP()


/////////////////////////////////////////////////////////////////////////////
// Event map

BEGIN_EVENT_MAP(CShiftCalPltCtrl, COleControl)
	//{{AFX_EVENT_MAP(CShiftCalPltCtrl)
	EVENT_CUSTOM("NotifySyncVelo", FireNotifySyncVelo, VTS_I2  VTS_R8  VTS_R8)
	EVENT_CUSTOM("NotifyDmm", FireNotifyDmm, VTS_I2  VTS_R8  VTS_R8)
	EVENT_CUSTOM("NotifyScope", FireNotifyScope, VTS_I2  VTS_R8  VTS_R8)
	//}}AFX_EVENT_MAP
END_EVENT_MAP()


/////////////////////////////////////////////////////////////////////////////
// Property pages

// TODO: Add more property pages as needed.  Remember to increase the count!
BEGIN_PROPPAGEIDS(CShiftCalPltCtrl, 1)
	PROPPAGEID(CShiftCalPltPropPage::guid)
END_PROPPAGEIDS(CShiftCalPltCtrl)


/////////////////////////////////////////////////////////////////////////////
// Initialize class factory and guid

IMPLEMENT_OLECREATE_EX(CShiftCalPltCtrl, "SHIFTCALPLT.ShiftCalPltCtrl.1",
	0xe0f26ca8, 0xe767, 0x499a, 0x85, 0x96, 0xd0, 0xed, 0xdb, 0xda, 0x6d, 0x9e)


/////////////////////////////////////////////////////////////////////////////
// Type library ID and version

IMPLEMENT_OLETYPELIB(CShiftCalPltCtrl, _tlid, _wVerMajor, _wVerMinor)
/////////////////////////////////////////////////////////////////////////////
// Interface IDs

const IID BASED_CODE IID_DShiftCalPlt =
		{ 0x4eb3aced, 0x50aa, 0x4e41, { 0x9b, 0xe3, 0xb7, 0xd3, 0xbd, 0x4, 0x77, 0xc9 } };
const IID BASED_CODE IID_DShiftCalPltEvents =
		{ 0x5677228d, 0x735e, 0x44f9, { 0xa1, 0x44, 0x2b, 0xea, 0xb, 0x67, 0xf, 0x14 } };
/////////////////////////////////////////////////////////////////////////////
// Control type information
static const DWORD BASED_CODE _dwShiftCalPltOleMisc =
	OLEMISC_INVISIBLEATRUNTIME |
	OLEMISC_SETCLIENTSITEFIRST |
	OLEMISC_INSIDEOUT |
	OLEMISC_CANTLINKINSIDE |
	OLEMISC_RECOMPOSEONRESIZE;

IMPLEMENT_OLECTLTYPE(CShiftCalPltCtrl, IDS_SHIFTCALPLT, _dwShiftCalPltOleMisc)
/////////////////////////////////////////////////////////////////////////////
// CShiftCalPltCtrl::CShiftCalPltCtrlFactory::UpdateRegistry -
// Adds or removes system registry entries for CShiftCalPltCtrl
BOOL CShiftCalPltCtrl::CShiftCalPltCtrlFactory::UpdateRegistry(BOOL bRegister)
{
	// TODO: Verify that your control follows apartment-model threading rules.
	// Refer to MFC TechNote 64 for more information.
	// If your control does not conform to the apartment-model rules, then
	// you must modify the code below, changing the 6th parameter from
	// afxRegApartmentThreading to 0.

	if (bRegister)
		return AfxOleRegisterControlClass(
			AfxGetInstanceHandle(),
			m_clsid,
			m_lpszProgID,
			IDS_SHIFTCALPLT,
			IDB_SHIFTCALPLT,
			afxRegApartmentThreading,
			_dwShiftCalPltOleMisc,
			_tlid,
			_wVerMajor,
			_wVerMinor);
	else
		return AfxOleUnregisterClass(m_clsid, m_lpszProgID);
}


/////////////////////////////////////////////////////////////////////////////
// CShiftCalPltCtrl::CShiftCalPltCtrl - Constructor

CShiftCalPltCtrl::CShiftCalPltCtrl()
{
	InitializeIIDs(&IID_DShiftCalPlt, &IID_DShiftCalPltEvents);
}


/////////////////////////////////////////////////////////////////////////////
// CShiftCalPltCtrl::~CShiftCalPltCtrl - Destructor
CShiftCalPltCtrl::~CShiftCalPltCtrl()
{

}


/////////////////////////////////////////////////////////////////////////////
// CShiftCalPltCtrl::OnDraw - Drawing function

void CShiftCalPltCtrl::OnDraw(
			CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid)
{
	// TODO: Replace the following code with your own drawing code.
	pdc->FillRect(rcBounds, CBrush::FromHandle((HBRUSH)GetStockObject(WHITE_BRUSH)));
	pdc->Ellipse(rcBounds);
}


/////////////////////////////////////////////////////////////////////////////
// CShiftCalPltCtrl::DoPropExchange - Persistence support
void CShiftCalPltCtrl::DoPropExchange(CPropExchange* pPX)
{
	ExchangeVersion(pPX, MAKELONG(_wVerMinor, _wVerMajor));
	COleControl::DoPropExchange(pPX);
	// TODO: Call PX_ functions for each persistent custom property.
}


/////////////////////////////////////////////////////////////////////////////
// CShiftCalPltCtrl::OnResetState - Reset control to default state
void CShiftCalPltCtrl::OnResetState()
{
	COleControl::OnResetState();  // Resets defaults found in DoPropExchange
	// TODO: Reset any other control state here.
}


/////////////////////////////////////////////////////////////////////////////
// CShiftCalPltCtrl::AboutBox - Display an "About" box to the user
void CShiftCalPltCtrl::AboutBox()
{
	CDialog dlgAbout(IDD_ABOUTBOX_SHIFTCALPLT);
	dlgAbout.DoModal();
}









/////////////////////////////////////////////////////////////////////////////
//以下是参量定义的部分
/////////////////////////////////////////////////////////////////////////////
//同步旋变信号部分
#define  MAXSYNCVELOCITYCHNLNUM  8
#define  CALIBMEASDATANUM        3
struct   _tagCalibSyncVelocityInfo
{
		double   MeasData[CALIBMEASDATANUM];	//测量值
		double   S12Data[CALIBMEASDATANUM];	//S1->S2角度
		double   S13Data[CALIBMEASDATANUM];	//S1->S3角度
		double   S23Data[CALIBMEASDATANUM];	//S2->S3角度
		BOOL    bPass[CALIBMEASDATANUM];	//测量是否通过		
		
		double   CoeffA;				//拟合的系数A
		double   CoeffB;				//拟合的系数B
}SPLT_SyncVelocityInfo[MAXSYNCVELOCITYCHNLNUM];

//万用表部分
#define  MAXDMMTYPENUM  6
struct   _tagCalibDMMInfo
{
		enum   DMMType
		{
				mtDCCurrent = 0,	//直流电流
				mtACCurrent = 1,	//交流电流
				mtDCVoltage = 2,	//直流电压
				mtACVoltage = 3,	//交流电压
				mt10KResistor = 4,	//10K电阻
				mt10MResistor = 5,	//10M电阻
		};

		struct   _tagRealDataInfo
		{
				double   MeasData[CALIBMEASDATANUM];	//测量值
				double   StdData[CALIBMEASDATANUM];		//输入标准值(电压值)
				int     nMeasType;						//测量类型
				BOOL    bPass;							//测量是否通过
		}CalDataInfo[MAXDMMTYPENUM];
}SPLT_DMMInfo;

//示波器部分
#define  MAXSCOPECHNLNUM  2
struct   _tagCalibScopeInfo
{
		enum   mtType
		{
				mtNormalAmplSignal  = 0,		//小信号
				mtHighAmplSignal  = 1			//大信号
		};

		struct   _tagRealDataInfo
		{
				double   MeasData[CALIBMEASDATANUM];	//测量值
				double   StdData[CALIBMEASDATANUM];		//输入标准值(电压值)
				int     nMeasType;		//测量类型
				BOOL    bPass;			//测量是否通过
				double   CoeffA;		//拟合的系数A
				double   CoeffB;		//拟合的系数B
		}CalDataInfo[MAXSCOPECHNLNUM];
		BOOL    bPass;					//测量是否通过
}SPLT_ScopeInfo;




/////////////////////////////////////////////////////////////////////////////
//以下是实现函数的部分
/////////////////////////////////////////////////////////////////////////////
BOOL CShiftCalPltCtrl::GetResvVelocityCoeff(short nChannel, double FAR* CoeffA, double FAR* CoeffB) 
{
	// TODO: Add your dispatch handler code here
	
	return TRUE;
}

BOOL CShiftCalPltCtrl::GetDmmCoeff(short nChannel, double FAR* CoeffA, double FAR* CoeffB) 
{
	// TODO: Add your dispatch handler code here
	
	return TRUE;
}

BOOL CShiftCalPltCtrl::GetScopeCoeff(short nChannel, double FAR* CoeffA, double FAR* CoeffB) 
{
	// TODO: Add your dispatch handler code here
	
	return TRUE;
}






BOOL CShiftCalPltCtrl::MeasSyncVelt(short nChnl, short nMeasTimes, double StdS12Phase, double StdS13Phase, double StdS23Phase, double FAR* S12Phase, double FAR* S13Phase, double FAR* S23Phase) 
{
		if (nChnl>=MAXSYNCVELOCITYCHNLNUM || nChnl<0)
			return FALSE;
		
		if (nMeasTimes>=CALIBMEASDATANUM || nMeasTimes<0)
			return FALSE;
				
		SPLT_SyncVelocityInfo[nChnl].MeasData[nMeasTimes] = 0.0f;			//测量值
		SPLT_SyncVelocityInfo[nChnl].S12Data[nMeasTimes]  = StdS12Phase;	//标准值
		SPLT_SyncVelocityInfo[nChnl].S13Data[nMeasTimes]  = StdS13Phase;	//标准值
		SPLT_SyncVelocityInfo[nChnl].S23Data[nMeasTimes]  = StdS23Phase;	//标准值
		
		//
		*S12Phase  = 0;
		*S13Phase  = 0;
		*S23Phase  = 0;

		return TRUE;
}

double CShiftCalPltCtrl::MeasDmm(short nMeasType, short nMeasTimes, double StdData) 
{
		if (nMeasType>=MAXDMMTYPENUM || nMeasType<0)
			return 0.0;
		
		if (nMeasTimes>=CALIBMEASDATANUM || nMeasTimes<0)
			return 0.0;
				
		SPLT_DMMInfo.CalDataInfo[nMeasType].MeasData[nMeasTimes] = 0.0f;		//测量值
		SPLT_DMMInfo.CalDataInfo[nMeasType].StdData[nMeasTimes]  = StdData;		//标准值
		
		return 0.0;
}

double CShiftCalPltCtrl::MeasScope(short nChnl, short nMeasTimes, double StdData) 
{
		if (nChnl>=MAXSCOPECHNLNUM || nChnl<0)
			return 0.0;

		if (nMeasTimes>=CALIBMEASDATANUM || nMeasTimes<0)
			return 0.0;

		SPLT_ScopeInfo.CalDataInfo[nChnl].MeasData[nMeasTimes] = 0.0f;		//测量值
		SPLT_ScopeInfo.CalDataInfo[nChnl].StdData[nMeasTimes]  = StdData;	//标准值
		
		return 0.0;
}




BOOL CShiftCalPltCtrl::InitCal() 
{
	// TODO: Add your dispatch handler code here
	
	return TRUE;
}

BOOL CShiftCalPltCtrl::ReleaseCal() 
{
	// TODO: Add your dispatch handler code here
	
	return TRUE;
}

#include "analysis.h"
#pragma   comment(lib, "analysis.lib")
void CShiftCalPltCtrl::CurveSyncVelo() 
{
	// TODO: Add your dispatch handler code here
	
}

void CShiftCalPltCtrl::CurveDmm() 
{
	// TODO: Add your dispatch handler code here

}

void CShiftCalPltCtrl::CurveScope() 
{
	// TODO: Add your dispatch handler code here

}

⌨️ 快捷键说明

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