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

📄 setparam.cpp

📁 高速公路收费系统车道软件. 功能: 1 检测公路过往车辆 2 收费过程控制和数据采集 3 车辆信息和图片上传服务器.
💻 CPP
📖 第 1 页 / 共 2 页
字号:
{
	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);
	DrawScreen();
}

//	绘制参数1窗口
void CSetParam::DrawParam1()
{
	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("参数设置",CRect(nLeft,nTop,nRight,nButtom),DT_TOP|DT_CENTER);
	nTop=nScreenY*3/4;
	theApp.memDC.DrawText("确认键 ---> 保存返回  取消---> 不保存返回",CRect(nLeft,nTop,nRight,nButtom),DT_TOP|DT_CENTER);
	nLeft=nScreenX/24;
	nTop=nScreenY*3/8;
	theApp.memDC.DrawText("车道号码                [01-99]: ",CRect(nLeft,nTop,nRight,nButtom),DT_TOP|DT_LEFT);
	nTop=nScreenY*5/12;
	theApp.memDC.DrawText("车道地址                [01-99]: ",CRect(nLeft,nTop,nRight,nButtom),DT_TOP|DT_LEFT);
	nTop=nScreenY*11/24;
	theApp.memDC.DrawText("收费站号码               [01-99]: ",CRect(nLeft,nTop,nRight,nButtom),DT_TOP|DT_LEFT);
	nTop=nScreenY/2;
	theApp.memDC.DrawText("本地端口号           [0000-9999]: ",CRect(nLeft,nTop,nRight,nButtom),DT_TOP|DT_LEFT);
	nTop=nScreenY*13/24;
	theApp.memDC.DrawText("消息服务器端口号       [0000-9999]: ",CRect(nLeft,nTop,nRight,nButtom),DT_TOP|DT_LEFT);
	nTop=nScreenY*7/12;
	theApp.memDC.DrawText("消息服务器IP地址 [XXX.XXX.XXX.XXX]: ",CRect(nLeft,nTop,nRight,nButtom),DT_TOP|DT_LEFT);
	nTop=nScreenY*5/8;
	theApp.memDC.DrawText("图象服务器IP地址 [XXX.XXX.XXX.XXX]: ",CRect(nLeft,nTop,nRight,nButtom),DT_TOP|DT_LEFT);
	nTop=nScreenY*2/3;
	theApp.memDC.DrawText("车道数据保存时间         [00-99]: ",CRect(nLeft,nTop,nRight,nButtom),DT_TOP|DT_LEFT);
	memset(strParam,0,128);
	CLaneInfo m_clsLane;
	sprintf(strParam,"%.2d",m_clsLane.LaneNO());
	sprintf(strParam+16,"%.2d",m_clsLane.LaneAddr());
	sprintf(strParam+2*16,"%.2d",m_clsLane.PlazaNO());
	sprintf(strParam+3*16,"%.4d",m_clsLane.LocalPort());
	sprintf(strParam+4*16,"%.4d",m_clsLane.MessagePort());
	m_clsLane.GetMessageIP(strParam+5*16);
	m_clsLane.GetPictureIP(strParam+6*16);
	sprintf(strParam+7*16,"%.2d",m_clsLane.BackupTime());
	nLine=0;
	DrawParamValue();
}

//	绘制参数值
void CSetParam::DrawParamValue()
{
	int nScreenX=theApp.nScreenX;
	int nScreenY=theApp.nScreenY;
		//虚函数并不调用父类的构造函数,故需显式的设置绘图环境
	int nLeft,nTop;
	int nRight=nScreenX;
	int nButtom=nScreenY;
	for(UINT i=0;i<8;i++){
		nTop=nScreenY*(i+9)/24;
		nLeft=nScreenX*7/16;
		if(i==nLine){	//当前行使用黑字白底
			theApp.memDC.SetTextColor(RGB(0,0,0));
			theApp.memDC.SetBkColor(RGB(255,255,255));
			theApp.memDC.DrawText(strParam+i*16,CRect(nLeft,nTop,nRight,nButtom),DT_TOP|DT_LEFT);
			theApp.memDC.SetTextColor(RGB(255,255,255));
			theApp.memDC.SetBkColor(RGB(0,0,0));
		} else {			//非当前行使用缺省的白字黑底
			theApp.memDC.DrawText(strParam+i*16,CRect(nLeft,nTop,nRight,nButtom),DT_TOP|DT_LEFT);
		}
	}
	DrawScreen();
}

//	保存参数设置窗口一数据。本窗口显示的配置参数并非全部配置参数,
//	因此在保存本窗口配置参数时,其他未在本窗口显示的配置参数不能
//	被改变。
void CSetParam::UpdateParam1(char *pStr)
{
//	以下保存本窗口上显示出来的配置参数
	char str1[16];
	memset(str1,0,16);
//	为了防止操作员输入车道信息时只输入1位(如:应输入02,实际输入2)
//	导致车道参数出错,将输入信息先换为整数然后再转为字符串
	sprintf(str1,"%.2d",atoi(strParam));
	memmove(pStr+PARAM_LANE_NO,str1,2);		//更新车道号码
	memset(str1,0,16);
	sprintf(str1,"%.2d",atoi(strParam+16));	//更新车道地址
	memmove(pStr+PARAM_LANE_ADDR,str1,2);
	memset(str1,0,16);
	sprintf(str1,"%.2d",atoi(strParam+16*2));//收费站编码
	memmove(pStr+PARAM_PLAZA_NO,str1,2);
	memset(str1,0,16);
	sprintf(str1,"%.4d",atoi(strParam+16*3));//本地端口号
	memmove(pStr+PARAM_LOCAL_PORT,str1,4);	
	memset(str1,0,16);
	sprintf(str1,"%.4d",atoi(strParam+16*4));//消息服务器端口号
	memmove(pStr+PARAM_MESSAGE_PORT,str1,4);
	memmove(pStr+PARAM_MESSAGE_IP,strParam+16*5,15);
											//消息服务器IP地址
	memmove(pStr+PARAM_PICTURE_IP,strParam+16*6,15);
											//图像服务器IP地址
	memset(str1,0,16);
	sprintf(str1,"%.2d",atoi(strParam+16*7));//车道数据备份时间
	memmove(pStr+PARAM_BACKUP_TIME,str1,2);
}

//	获取用户的设定值
CSetParam::UpdateParam(char *pStr)
{
	switch(nStatus){
	case SHOW_SET_PARAM1:
	case SHOW_SET_PARAM2:
		UpdateParam1(pStr);
		break;
	}
}

UINT CSetParam::SelectItem()
{
	return nSelectItem;
}

CSetIP::CSetIP()
{
}

//	处理按键
CSetIP::ProcessKeyboard(UINT nChar)
{
	return CSetParam::ProcessKeyAtParam1(nChar);
}

//	绘制工作窗口
CSetIP::DrawWorkInfo(UINT nSlaveStatus)
{
	CSetParam::DrawParam1();
}

//	获取修改后的参数
CSetIP::UpdateParam(char *pRetStr)
{
	CSetParam::UpdateParam1(pRetStr);
}

CSendFile::CSendFile()
{
}

//	处理按键
BOOL CSendFile::ProcessKeyboard(UINT nChar)
{
	BOOL bLegalityFlag=FALSE;
	if(CScreen::ProcessKeyboard(nChar))
		bLegalityFlag=TRUE;
	return bLegalityFlag;
}

//	绘制工作窗口
CSendFile::DrawWorkInfo(UINT nSlaveStatus)
{
	switch(nSlaveStatus){
	case SHOW_SEND_MENU:
		DrawSendMenu();
	}
}

//	绘制文件传送菜单
void CSendFile::DrawSendMenu()
{
}

CReceiveFile::CReceiveFile()
{
}

//	绘制参数窗口
CReceiveFile::DrawWorkInfo(UINT nSlaveStatus)
{
	switch(nSlaveStatus){
	case SHOW_FILE_STATUS:
		DrawFileStatus();
		break;
	}
}

//	绘制文件状态:文件状态从CLaneInfo类中获取
void CReceiveFile::DrawFileStatus()
{
	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("检查运行参数文件",CRect(nLeft,nTop,nRight,nButtom),DT_TOP|DT_CENTER);
	nTop=nScreenY*3/4;
	theApp.memDC.DrawText("等待下传文件......",CRect(nLeft,nTop,nRight,nButtom),DT_TOP|DT_CENTER);
	nLeft=nScreenX/16;
	nTop=nScreenY/3;
	theApp.memDC.DrawText("价格表       TFRMB       ............  ",CRect(nLeft,nTop,nRight,nButtom),DT_LEFT|DT_TOP);
	nTop=nScreenY*3/8;
	theApp.memDC.DrawText("新价格表     TFRMB.NEW   ............  ",CRect(nLeft,nTop,nRight,nButtom),DT_LEFT|DT_TOP);
	nTop=nScreenY*5/12;
	theApp.memDC.DrawText("操作员表     COLLECOD    ............  ",CRect(nLeft,nTop,nRight,nButtom),DT_LEFT|DT_TOP);
	nTop=nScreenY*11/24;
	theApp.memDC.DrawText("黑名单操作员 BLACKCOL    ............  ",CRect(nLeft,nTop,nRight,nButtom),DT_LEFT|DT_TOP);
	nTop=nScreenY/2;
	theApp.memDC.DrawText("违章车黑名单 BLACKCAR    ............  ",CRect(nLeft,nTop,nRight,nButtom),DT_LEFT|DT_TOP);
	nTop=nScreenY*13/24;
	theApp.memDC.DrawText("月票车表     MONTHCAR    ............  ",CRect(nLeft,nTop,nRight,nButtom),DT_LEFT|DT_TOP);
	nTop=nScreenY*7/12;
	theApp.memDC.DrawText("免征车表     FREECAR     ............  ",CRect(nLeft,nTop,nRight,nButtom),DT_LEFT|DT_TOP);
	nTop=nScreenY*5/8;
	theApp.memDC.DrawText("延迟表       DELAYS      ............  ",CRect(nLeft,nTop,nRight,nButtom),DT_LEFT|DT_TOP);
	nTop=nScreenY*2/3;
	theApp.memDC.DrawText("收费站名称   PLAZANAM    ............  ",CRect(nLeft,nTop,nRight,nButtom),DT_LEFT|DT_TOP);
	nLeft=nScreenX/2;
	for(int i=TFRMB_INDEX;i<FILE_NUMBER;i++){
		CLaneInfo m_clsLane;
		nTop=nScreenY/3+i*nScreenY/24;
		if(m_clsLane.FileReadyFlag(i)){
			theApp.memDC.DrawText("OK     ",CRect(nLeft,nTop,nRight,nButtom),DT_TOP|DT_LEFT);
		} else {
			theApp.memDC.DrawText("Missing",CRect(nLeft,nTop,nRight,nButtom),DT_TOP|DT_LEFT);
		}
	}
	DrawScreen();
}

⌨️ 快捷键说明

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