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

📄 test.cpp

📁 高速公路收费系统车道软件. 功能: 1 检测公路过往车辆 2 收费过程控制和数据采集 3 车辆信息和图片上传服务器.
💻 CPP
📖 第 1 页 / 共 3 页
字号:
// Test.cpp: implementation of the CTest class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "lane_new.h"
#include "Test.h"

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

extern CLane_newApp theApp;
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
UINT CTestMenu::nStatus;
UINT CTestMenu::nTestItem;
CTestMenu::CTestMenu()
{
}

//	处理按键
BOOL CTestMenu::ProcessKeyboard(UINT nChar)
{
	BOOL bLegalityFlag=FALSE;
	switch(nStatus){
	case SHOW_TEST_MENU:
		bLegalityFlag=ProcessKeyOfMenu(nChar);
		break;
	}
	if(CScreen::ProcessKeyboard(nChar))
		bLegalityFlag=TRUE;
	return bLegalityFlag;
}

//	处理按键
BOOL CTestMenu::ProcessKeyOfMenu(UINT nChar)
{
	BOOL bLegalityFlag=FALSE;
	switch(nChar){
	case ONE_KEY:
		bLegalityFlag=TRUE;
		nTestItem=TEST_CXP;
		SendMessage(theApp.m_pMainWnd->m_hWnd,WM_OPTION_FINISH,TEST_MENU_SELECT_OK,0);
		break;
	case TWO_KEY:
		bLegalityFlag=TRUE;
		nTestItem=TEST_KEY;
		SendMessage(theApp.m_pMainWnd->m_hWnd,WM_OPTION_FINISH,TEST_MENU_SELECT_OK,0);
		break;
	case THREE_KEY:
		bLegalityFlag=TRUE;
		nTestItem=TEST_TFI;
		SendMessage(theApp.m_pMainWnd->m_hWnd,WM_OPTION_FINISH,TEST_MENU_SELECT_OK,0);
		break;
	case FOUR_KEY:
		bLegalityFlag=TRUE;
		nTestItem=TEST_PRINTER;
		SendMessage(theApp.m_pMainWnd->m_hWnd,WM_OPTION_FINISH,TEST_MENU_SELECT_OK,0);
		break;
	case FIVE_KEY:
		bLegalityFlag=TRUE;
		nTestItem=TEST_OVERLAY;
		SendMessage(theApp.m_pMainWnd->m_hWnd,WM_OPTION_FINISH,TEST_MENU_SELECT_OK,0);
		break;
	case END_KEY:
		bLegalityFlag=TRUE;
		SendMessage(theApp.m_pMainWnd->m_hWnd,WM_OPTION_FINISH,END_SHIFT_PRESS,0);
		break;
	}
	return bLegalityFlag;
}

//	绘制工作窗口
CTestMenu::DrawWorkInfo(UINT nSlaveStatus)
{
	nStatus=nSlaveStatus;
	switch(nSlaveStatus){
	case SHOW_TEST_MENU:
		DrawTestMenu();
		break;
	}
}

//	绘制测试菜单
void CTestMenu::DrawTestMenu()
{
	int nScreenX=theApp.nScreenX;
	int nScreenY=theApp.nScreenY;
		//虚函数并不调用父类的构造函数,故需显式的设置绘图环境
	ClearWorkRange();
	int nLeft=nScreenX/64;
	int nTop=nScreenY*4/15;
	int nButtom=nScreenY*4/5;
	int	nRight=nScreenX*5/8;
	theApp.memDC.Rectangle(CRect(nLeft,nTop,nRight,nButtom));
	nTop=nScreenY/3;
	theApp.memDC.DrawText("测试模式菜单",CRect(nLeft,nTop,nRight,nButtom),DT_CENTER|DT_TOP);
	nLeft=nScreenX/12;
	nTop=nScreenY*5/12;
	theApp.memDC.DrawText("1 - 测试输入 / 输出设备",CRect(nLeft,nTop,nRight,nButtom),DT_LEFT|DT_TOP);
	nTop=nScreenY*11/24;
	theApp.memDC.DrawText("2 - 测试专用键盘",CRect(nLeft,nTop,nRight,nButtom),DT_LEFT|DT_TOP);
	nTop=nScreenY/2;
	theApp.memDC.DrawText("3 - 测试费额显示牌",CRect(nLeft,nTop,nRight,nButtom),DT_LEFT|DT_TOP);
	nTop=nScreenY*13/24;
	theApp.memDC.DrawText("4 - 测试票据打印机",CRect(nLeft,nTop,nRight,nButtom),DT_LEFT|DT_TOP);
	nTop=nScreenY*7/12;
	theApp.memDC.DrawText("5 - 测试字符叠加器",CRect(nLeft,nTop,nRight,nButtom),DT_LEFT|DT_TOP);
	DrawScreen();
	nTestItem=0;
}

//	获取要测试的项目
UCHAR CTestMenu::TestItem()
{
	return nTestItem;
}

UINT CTestCxp::nStatus;
UINT CTestCxp::nTestItem;
char CTestCxp::strOutputStatus[14];
CTestCxp::CTestCxp()
{
}

//	处理按键
BOOL CTestCxp::ProcessKeyboard(UINT nChar)
{
	BOOL bLegalityFlag=FALSE;
	switch(nStatus){
	case SHOW_CXP_MENU:
		bLegalityFlag=ProcessKeyOfMenu(nChar);
		break;
	case SHOW_INPUT_DEVICE:
		bLegalityFlag=ProcessKeyOfInputDevice(nChar);
		break;
	case SHOW_OUTPUT_DEVICE:
		bLegalityFlag=ProcessKeyOfOutputDevice(nChar);
		break;
	}
	if(CScreen::ProcessKeyboard(nChar))
		bLegalityFlag=TRUE;
	return bLegalityFlag;
}

BOOL CTestCxp::ProcessKeyOfMenu(UINT nChar)
{
	BOOL bLegalityFlag=FALSE;
	switch(nChar){
	case ONE_KEY:
		nTestItem=TEST_CXP_INPUT;
		bLegalityFlag=TRUE;
		SendMessage(theApp.m_pMainWnd->m_hWnd,WM_OPTION_FINISH,CXP_TEST_MENU_OK,0);
		break;
	case TWO_KEY:
		nTestItem=TEST_CXP_OUTPUT;
		bLegalityFlag=TRUE;
		SendMessage(theApp.m_pMainWnd->m_hWnd,WM_OPTION_FINISH,CXP_TEST_MENU_OK,0);
		break;
	case CANCEL_KEY:
		bLegalityFlag=TRUE;
		SendMessage(theApp.m_pMainWnd->m_hWnd,WM_OPTION_FINISH,CXP_TEST_MENU_CANCEL,0);
		break;
	}
	return bLegalityFlag;
}

BOOL CTestCxp::ProcessKeyOfInputDevice(UINT nChar)
{
	BOOL bLegalityFlag=FALSE;
	switch(nChar){
	case CANCEL_KEY:
		bLegalityFlag=TRUE;
		SendMessage(theApp.m_pMainWnd->m_hWnd,WM_OPTION_FINISH,CXP_INPUT_CANCEL,0);
		break;
	}
	return bLegalityFlag;
}

BOOL CTestCxp::ProcessKeyOfOutputDevice(UINT nChar)
{
	BOOL bLegalityFlag=FALSE;
	static nIndex=0;
	switch(nChar){
	case MODIFY_KEY:
		ChangeOutputStatus(nIndex);
		break;
	case CANCEL_KEY:
		nIndex=0;
		bLegalityFlag=TRUE;
		SendMessage(theApp.m_pMainWnd->m_hWnd,WM_OPTION_FINISH,CXP_OUTPUT_CANCEL,0);
		break;
	case UP_KEY:
		bLegalityFlag=TRUE;
		if((nIndex<=0)||(nIndex>11))
			nIndex=11;
		else
			nIndex--;
		ChangeCursorItem(nIndex);
		break;
	case DOWN_KEY:
		bLegalityFlag=TRUE;
		if((nIndex<0)||(nIndex>=11))
			nIndex=0;
		else
			nIndex++;
		ChangeCursorItem(nIndex);
		break;
	}
	return bLegalityFlag;
}

//	绘制工作窗口
CTestCxp::DrawWorkInfo(UINT nSlaveStatus)
{
	nStatus=nSlaveStatus;
	switch(nSlaveStatus){
	case SHOW_CXP_MENU:
		DrawCxpMenu();
		break;
	case SHOW_INPUT_DEVICE:
		DrawInputDevice();
		break;
	case SHOW_OUTPUT_DEVICE:
		DrawOutputDevice();
		break;
	}
}

//	绘制CXP菜单
void CTestCxp::DrawCxpMenu()
{
	int nScreenX=theApp.nScreenX;
	int nScreenY=theApp.nScreenY;
	ClearWorkRange();
	int nLeft=nScreenX/64;
	int nTop=nScreenY*4/15;
	int nButtom=nScreenY*4/5;
	int	nRight=nScreenX*5/8;
	theApp.memDC.Rectangle(CRect(nLeft,nTop,nRight,nButtom));
	nTop=nScreenY/3;
	theApp.memDC.DrawText("输入 / 输出测试菜单",CRect(nLeft,nTop,nRight,nButtom),DT_CENTER|DT_TOP);
	nLeft=nScreenX/12;
	nTop=nScreenY*5/12;
	theApp.memDC.DrawText("1 - 输入测试",CRect(nLeft,nTop,nRight,nButtom),DT_LEFT|DT_TOP);
	nTop=nScreenY/2;
	theApp.memDC.DrawText("2 - 输出测试",CRect(nLeft,nTop,nRight,nButtom),DT_LEFT|DT_TOP);
	nLeft=nScreenX/8;
	nTop=nScreenY*17/24;
	theApp.memDC.DrawText("取消键 / Esc 键 ---> 返回主菜单",CRect(nLeft,nTop,nRight,nButtom),DT_LEFT|DT_TOP);
	DrawScreen();
	nTestItem=0;
}

//	绘制输入设备状态
void CTestCxp::DrawInputDevice()
{
	int nScreenX=theApp.nScreenX;
	int nScreenY=theApp.nScreenY;
		//虚函数并不调用父类的构造函数,故需显式的设置绘图环境
	ClearWorkRange();
	int nLeft=nScreenX/64;
	int nTop=nScreenY*4/15;
	int nButtom=nScreenY*4/5;
	int	nRight=nScreenX*5/8;
	theApp.memDC.Rectangle(CRect(nLeft,nTop,nRight,nButtom));
	nTop=nScreenY/3;
	theApp.memDC.DrawText("CXP 测试",CRect(nLeft,nTop,nRight,nButtom),DT_CENTER|DT_TOP);
	nTop=nScreenY*5/12;
	theApp.memDC.DrawText("输入状态测试",CRect(nLeft,nTop,nRight,nButtom),DT_CENTER|DT_TOP);
	nLeft=nScreenX/12;
	nTop=nScreenY/2;
	theApp.memDC.DrawText("检测线圈        备用",CRect(nLeft,nTop,nRight,nButtom),DT_LEFT|DT_TOP);
	nTop=nScreenY*13/24;
	theApp.memDC.DrawText("抓拍线圈        备用",CRect(nLeft,nTop,nRight,nButtom),DT_LEFT|DT_TOP);
	nTop=nScreenY*7/12;
	theApp.memDC.DrawText("备用          备用",CRect(nLeft,nTop,nRight,nButtom),DT_LEFT|DT_TOP);
	nLeft=nScreenX/6;
	nTop=nScreenY*3/4;
	theApp.memDC.DrawText("取消键 / Esc 键 ---> 返回主菜单",CRect(nLeft,nTop,nRight,nButtom),DT_LEFT|DT_TOP);
	DrawInputStatus();
}

//	绘制输入设备状态
void CTestCxp::DrawInputStatus()
{
	int nScreenX=theApp.nScreenX;
	int nScreenY=theApp.nScreenY;
		//虚函数并不调用父类的构造函数,故需显式的设置绘图环
	int nButtom=nScreenY*4/5;
	int	nLeft=nScreenX/4;
	int	nTop=nScreenY/2;
	int	nRight=nScreenX*5/8;
	CCxpInfo m_clsCxp;
	if(m_clsCxp.LeaveStatus()=='0')
		theApp.memDC.DrawText("关",CRect(nLeft,nTop,nRight,nButtom),DT_LEFT|DT_TOP);
	else
		theApp.memDC.DrawText("开",CRect(nLeft,nTop,nRight,nButtom),DT_LEFT|DT_TOP);
	nTop=nScreenY*13/24;
	if(m_clsCxp.PictureStatus()=='0')
		theApp.memDC.DrawText("关",CRect(nLeft,nTop,nRight,nButtom),DT_LEFT|DT_TOP);
	else
		theApp.memDC.DrawText("开",CRect(nLeft,nTop,nRight,nButtom),DT_LEFT|DT_TOP);
	nTop=nScreenY*7/12;
	if(m_clsCxp.SpareInput1()=='0')
		theApp.memDC.DrawText("关",CRect(nLeft,nTop,nRight,nButtom),DT_LEFT|DT_TOP);
	else
		theApp.memDC.DrawText("开",CRect(nLeft,nTop,nRight,nButtom),DT_LEFT|DT_TOP);
	nLeft=nScreenX/2;
	nTop=nScreenY/2;
	if(m_clsCxp.SpareInput2()=='0')
		theApp.memDC.DrawText("关",CRect(nLeft,nTop,nRight,nButtom),DT_LEFT|DT_TOP);
	else
		theApp.memDC.DrawText("开",CRect(nLeft,nTop,nRight,nButtom),DT_LEFT|DT_TOP);
	nTop=nScreenY*13/24;
	if(m_clsCxp.SpareInput3()=='0')
		theApp.memDC.DrawText("关",CRect(nLeft,nTop,nRight,nButtom),DT_LEFT|DT_TOP);
	else
		theApp.memDC.DrawText("开",CRect(nLeft,nTop,nRight,nButtom),DT_LEFT|DT_TOP);
	nTop=nScreenY*7/12;
	if(m_clsCxp.SpareInput4()=='0')
		theApp.memDC.DrawText("关",CRect(nLeft,nTop,nRight,nButtom),DT_LEFT|DT_TOP);
	else
		theApp.memDC.DrawText("开",CRect(nLeft,nTop,nRight,nButtom),DT_LEFT|DT_TOP);
	DrawScreen();
}

//	绘制输出设备状态
void CTestCxp::DrawOutputDevice()
{
	int nScreenX=theApp.nScreenX;
	int nScreenY=theApp.nScreenY;
	ClearWorkRange();
	int nLeft=nScreenX/64;
	int nTop=nScreenY*4/15;
	int nButtom=nScreenY*4/5;
	int	nRight=nScreenX*5/8;
	theApp.memDC.Rectangle(CRect(nLeft,nTop,nRight,nButtom));
	nTop=nScreenY*7/24;
	theApp.memDC.DrawText("CXP 测试",CRect(nLeft,nTop,nRight,nButtom),DT_CENTER|DT_TOP);
	nTop=nScreenY/3;
	theApp.memDC.DrawText("输出设备测试",CRect(nLeft,nTop,nRight,nButtom),DT_CENTER|DT_TOP);
	nLeft=nScreenX/12;
	nTop=nScreenY*3/8;
	theApp.memDC.DrawText("自动栏杆开       备用",CRect(nLeft,nTop,nRight,nButtom),DT_LEFT|DT_TOP);
	nTop=nScreenY*5/12;
	theApp.memDC.DrawText("自动栏杆关       备用",CRect(nLeft,nTop,nRight,nButtom),DT_LEFT|DT_TOP);
	nTop=nScreenY*11/24;
	theApp.memDC.DrawText("通行指示红灯      雨棚红灯",CRect(nLeft,nTop,nRight,nButtom),DT_LEFT|DT_TOP);
	nTop=nScreenY/2;
	theApp.memDC.DrawText("通行指示绿灯      雨棚绿灯",CRect(nLeft,nTop,nRight,nButtom),DT_LEFT|DT_TOP);
	nTop=nScreenY*13/24;
	theApp.memDC.DrawText("备用          报警灯",CRect(nLeft,nTop,nRight,nButtom),DT_LEFT|DT_TOP);
	nTop=nScreenY*7/12;
	theApp.memDC.DrawText("备用          备用",CRect(nLeft,nTop,nRight,nButtom),DT_LEFT|DT_TOP);
	nLeft=nScreenX/6;
	nTop=nScreenY*2/3;
	theApp.memDC.DrawText("更改键 ---> 改变状态",CRect(nLeft,nTop,nRight,nButtom),DT_LEFT|DT_TOP);
	nTop=nScreenY*17/24;
	theApp.memDC.DrawText("上箭头 / 下箭头 ---> 进入下一个",CRect(nLeft,nTop,nRight,nButtom),DT_LEFT|DT_TOP);
	nTop=nScreenY*3/4;
	theApp.memDC.DrawText("取消键 / Esc 键 ---> 返回主菜单",CRect(nLeft,nTop,nRight,nButtom),DT_LEFT|DT_TOP);
	DefineOutputStatus();
	ChangeCursorItem(0);
	DrawOutputStatus();
}

//	绘制输入外设状态
void CTestCxp::DrawOutputStatus()
{
	int nScreenX=theApp.nScreenX;
	int nScreenY=theApp.nScreenY;
		//虚函数并不调用父类的构造函数,故需显式的设置绘图环

⌨️ 快捷键说明

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