📄 test.cpp
字号:
// 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 + -