www.pudn.com > GOS.rar > GenIO.cpp


// GenIO.cpp: implementation of the CGenIO class. 
// 
////////////////////////////////////////////////////////////////////// 
 
#include "stdafx.h" 
#include "GenIO.h" 
 
////////////////////////////////////////////////////////////////////// 
// Construction/Destruction 
////////////////////////////////////////////////////////////////////// 
 
CGenIO::CGenIO() 
{ 
	m_nStyle|=WS_MAXIMIZE; 
} 
 
CGenIO::~CGenIO() 
{ 
 
} 
 
//消息处理函数 
void CGenIO::WndProc(int nMessage, int wParam, int lParam) 
{ 
	GWnd* pWnd; 
	switch(nMessage) 
	{ 
	case WM_PAINT: 
		if(wParam & ~ODA_CLIENT)OnNcPaint(); 
		if(wParam & ODA_CLIENT){OnPaint();DrawControls();} 
		break; 
	case WM_KICKIDLE: 
		OnIdle(); 
		break; 
	case WM_COMMAND: 
		pWnd=(GWnd*)wParam; 
		if(pWnd==&m_btnPulserFreq)OnPulserFreq(); 
		else if(pWnd==&m_btnCounterFreq)OnCounterFreq(); 
		else if(pWnd==&m_btnADStart)OnADStart(); 
		else if(pWnd==&m_btnActionStart)OnActionStart(); 
		else OnEdit(pWnd); 
		break; 
	case WM_CREATE: 
		OnCreate(); 
		break; 
	default: 
		GDialog::WndProc(nMessage, wParam,lParam); 
		break; 
	} 
} 
 
void CGenIO::OnEdit(GWnd* pWnd) 
{ 
	GIME dlg; 
	dlg.m_btn[0].m_strText=pWnd->m_strText; 
	dlg.DoModal(); 
	pWnd->m_strText=dlg.m_btn[0].m_strText; 
} 
 
void CGenIO::OnCreate() 
{ 
	GDialog::OnCreate(); 
	m_strText="IO卡调试"; 
 
	//Status; 
	AddControl(&m_lblStatus0,"状态口",0); 
	m_lblStatus0.MoveWindow(8,16,48,16); 
	AddControl(&m_edtStatus,"0x100",WS_CLIENT|BS_FLAT); 
	m_edtStatus.MoveWindow(64,8,81,33); 
	m_edtStatus.m_nBackColor=RGB(255,255,255)|EdgeRGB(255,255,255); 
	m_edtStatus.m_nForeColor=RGB(0,0,0); 
	AddControl(&m_lblStatus,"FF,FF",WS_CLIENT|BS_FLAT); 
	m_lblStatus.MoveWindow(152,8,161,33); 
 
	//Pulser 
	AddControl(&m_lblPulserAddr,"脉冲器",0); 
	m_lblPulserAddr.MoveWindow(8,56,48,16); 
	AddControl(&m_edtPulserAddr,"0x100",WS_CLIENT|BS_FLAT); 
	m_edtPulserAddr.MoveWindow(64,48,81,33); 
	m_edtPulserAddr.m_nBackColor=RGB(255,255,255)|EdgeRGB(255,255,255); 
	m_edtPulserAddr.m_nForeColor=RGB(0,0,0); 
	AddControl(&m_lblPulserMask,"掩码",0); 
	m_lblPulserMask.MoveWindow(152,56,36,16); 
	AddControl(&m_edtPulserMask,"0x02",WS_CLIENT|BS_FLAT); 
	m_edtPulserMask.MoveWindow(192,48,57,33); 
	m_edtPulserMask.m_nBackColor=RGB(255,255,255)|EdgeRGB(255,255,255); 
	m_edtPulserMask.m_nForeColor=RGB(0,0,0); 
	AddControl(&m_btnPulserFreq,"500 Hz",0); 
	m_btnPulserFreq.MoveWindow(256,48,57,33); 
 
	//Counter 
	AddControl(&m_lblCounterAddr,"计数器",0); 
	m_lblCounterAddr.MoveWindow(8,96,48,16); 
	AddControl(&m_edtCounterAddr,"0x100",WS_CLIENT|BS_FLAT); 
	m_edtCounterAddr.MoveWindow(64,88,81,33); 
	m_edtCounterAddr.m_nBackColor=RGB(255,255,255)|EdgeRGB(255,255,255); 
	m_edtCounterAddr.m_nForeColor=RGB(0,0,0); 
	AddControl(&m_lblCounterMask,"掩码",0); 
	m_lblCounterMask.MoveWindow(152,96,36,16); 
	AddControl(&m_edtCounterMask,"0x02",WS_CLIENT|BS_FLAT); 
	m_edtCounterMask.MoveWindow(192,88,57,33); 
	m_edtCounterMask.m_nBackColor=RGB(255,255,255)|EdgeRGB(255,255,255); 
	m_edtCounterMask.m_nForeColor=RGB(0,0,0); 
	AddControl(&m_btnCounterFreq,"0)频率",0); 
	m_btnCounterFreq.MoveWindow(256,88,57,33); 
 
	//AD频率 
	AddControl(&m_lblADFreq,"AD频率",0); 
	m_lblADFreq.MoveWindow(8,136,48,16); 
	AddControl(&m_edtADFreq,"10000",WS_CLIENT|BS_FLAT); 
	m_edtADFreq.MoveWindow(64,128,81,33); 
	m_edtADFreq.m_nBackColor=RGB(255,255,255)|EdgeRGB(255,255,255); 
	m_edtADFreq.m_nForeColor=RGB(0,0,0); 
	AddControl(&m_btnADStart,"A0.00 V0.00 P0.00",0); 
	m_btnADStart.MoveWindow(152,128,161,33); 
 
	//动作 
	AddControl(&m_lblAction,"动作",0); 
	m_lblAction.MoveWindow(8,176,32,16); 
	AddControl(&m_edtAction,"ff,ff,ff",WS_CLIENT|BS_FLAT); 
	m_edtAction.MoveWindow(64,168,185,33); 
	m_edtAction.m_nBackColor=RGB(255,255,255)|EdgeRGB(255,255,255); 
	m_edtAction.m_nForeColor=RGB(0,0,0); 
	AddControl(&m_btnActionStart,"发送",0); 
	m_btnActionStart.MoveWindow(256,168,57,33); 
} 
 
//extern int nHalFreq; 
void CGenIO::OnPulserFreq() 
{ 
	OnEdit(&m_btnPulserFreq); 
//	nHalFreq=m_btnPulserFreq.m_strText.toInt(); 
} 
 
void CGenIO::OnCounterFreq() 
{ 
	if(m_btnCounterFreq.m_strText[0]=='0') 
	{ 
		m_btnCounterFreq.m_strText="1)电平"; 
	} 
	else 
	{ 
		m_btnCounterFreq.m_strText="0)频率"; 
	} 
	m_btnCounterFreq.PostMessage(WM_PAINT,-1,-1); 
} 
 
void CGenIO::OnADStart() 
{ 
	static BOOL bRun=FALSE; 
	if(bRun) 
	{ 
		bRun=FALSE; 
		m_btnADStart.m_strText="开始"; 
		m_btnADStart.PostMessage(WM_PAINT,ODA_CLIENT,-1); 
	} 
	else 
	{ 
		bRun=TRUE; 
		while(bRun) 
		{ 
			DWORD i,nTick=GetTickCount()+500; 
			double dValue=0; 
			for(i=0;i<20;i++) 
			{ 
				Sleep(1); 
			} 
			dValue*=2.50/1024/i; 
			m_btnADStart.m_strText.Format("T=%d V=%4g",GetTickCount(),dValue); 
			m_btnADStart.PostMessage(WM_PAINT,ODA_CLIENT,-1); 
			while(GetTickCount()