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

📄 genio.cpp

📁 一个简单而又高效的嵌入式操作系统.包括GUI及文件系统.仿Windows设计,类似于MFC风格
💻 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()<nTick)
			{
				DoEvents();
			}
		}
	}
}

void CGenIO::OnActionStart()
{

}

void CGenIO::OnIdle()
{
	if(GetTickCount()%100)return;
	m_lblStatus.PostMessage(WM_PAINT,ODA_CLIENT,-1);
}

⌨️ 快捷键说明

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