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

📄 configdlg.cpp

📁 本程序是2005年参加中国机器人大赛的比赛程序
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// ConfigDlg.cpp : implementation file
//

#include "stdafx.h"
#include "Robocup.h"
#include "ConfigDlg.h"
#include "VideoDlg.h"

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

/////////////////////////////////////////////////////////////////////////////
// CConfigDlg dialog


CConfigDlg::CConfigDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CConfigDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CConfigDlg)
	m_bCheckGetFieldRect = FALSE;
	m_bCheckDisplayField = FALSE;
	m_RadioSelectObject = 1;
	m_bCheckCapRect = FALSE;
	m_rect_sample = FALSE;
	m_red = 0;
	m_green = 0;
	m_blue = 0;
	m_bMY_door = FALSE;
	m_bTh_door = FALSE;
	//}}AFX_DATA_INIT
	isSample=false;
}


void CConfigDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CConfigDlg)
	DDX_Control(pDX, IDC_rbsample, m_sample);
	DDX_Control(pDX, IDC_GETRESULT_BUTTON, m_GetResultButton);
	DDX_Control(pDX, IDC_MEANRGB_STATIC, m_MeanRGBInfo);
	DDX_Control(pDX, IDC_COOR_STATIC, m_CoorInfo);
	DDX_Control(pDX, IDC_COLORINFO_STATIC, m_ColorInfo);
	DDX_Check(pDX, IDC_CHECK_FIELDRECT, m_bCheckGetFieldRect);
	DDX_Check(pDX, IDC_CHECK_DISPLAYFIELD, m_bCheckDisplayField);
	DDX_Radio(pDX, IDC_RADIO_MYTEAM, m_RadioSelectObject);
	DDX_Check(pDX, IDC_CHECK_CAPRECT, m_bCheckCapRect);
	DDX_Check(pDX, IDC_RECK_SAMPLE, m_rect_sample);
	DDX_Check(pDX, IDC_MY_DOOR, m_bMY_door);
	DDX_Check(pDX, IDC_TH_DOOR, m_bTh_door);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CConfigDlg, CDialog)
	//{{AFX_MSG_MAP(CConfigDlg)
	ON_BN_CLICKED(IDC_CHECK_FIELDRECT, OnCheckFieldrect)
	ON_BN_CLICKED(IDC_CHECK_DISPLAYFIELD, OnCheckDisplayfield)
	ON_BN_CLICKED(IDC_CHECK_TEST, OnCheckTest)
	ON_NOTIFY(NM_CUSTOMDRAW, IDC_SLIDER_DIA, OnCustomdrawSliderDia)
	ON_NOTIFY(NM_CUSTOMDRAW, IDC_SLIDER_PERCENT, OnCustomdrawSliderPercent)
	ON_BN_CLICKED(IDC_GETRESULT_BUTTON, OnGetresultButton)
	ON_BN_CLICKED(ID_SAVE, OnSave)
	ON_BN_CLICKED(ID_LOAD, OnLoad)
	ON_BN_CLICKED(IDC_BUTTON_CLEARSAMPLE, OnButtonClearsample)
	ON_BN_CLICKED(IDC_CHECK_CAPRECT, OnCheckCaprect)
	ON_BN_CLICKED(IDC_rbsample, Onrbsample)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CConfigDlg message handlers

void CConfigDlg::OnCheckFieldrect() 
{
	UpdateData(TRUE);	
}

void CConfigDlg::OnCheckDisplayfield() 
{
	UpdateData(TRUE);	
}

void CConfigDlg::OnCheckTest() 
{
	UpdateData(TRUE);	
}

void CConfigDlg::OnCheckCaprect() 
{
	UpdateData(TRUE);	
}

void CConfigDlg::Init_Upper_Lower()
{
	for(int i = 0; i < 5; i++)
	{
		for(int j = 0; j < 3; j++)
		{
			m_upper_MyTeam[i][j] = 0;
			m_upper_TheirTeam[i][j] = 0;

			m_lower_MyTeam[i][j] =255;
			m_lower_TheirTeam[i][j] =255;

			m_MyTeam[i][j] = 0.0;
			m_TheirTeam[i][j] = 0.0;
		}
	}

	for(i = 0; i < 3; i++)
	{
		m_upper_Ball[i] = 0;
		m_upper_Field[i] = 0;
		m_upper_MyTeamLable[i] = 0;
		m_upper_TheirTeamLable[i] = 0;

		m_lower_Ball[i] = 255;
		m_lower_Field[i] = 255;
		m_lower_MyTeamLable[i] =255;
		m_lower_TheirTeamLable[i] = 255;
	}

	m_Ball[0] = 0.0;
	m_Ball[1] = 0.0;
}

BOOL CConfigDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();

	Init_Upper_Lower();

	m_bCheckCapRect=false;
	m_bCheckGetFieldRect=true;
	m_bCheckDisplayField=true;
	UpdateData(false);
	return TRUE;  
}



void CConfigDlg::OnCustomdrawSliderDia(NMHDR* pNMHDR, LRESULT* pResult) 
{
/*	m_ObjectDia = m_SliderDia.GetPos();

	CString str;
	str.Format("物体直径:%f", m_ObjectDia);
	m_DiaInfo.SetWindowText(str);
	
	*pResult = 0;*/
}

void CConfigDlg::OnCustomdrawSliderPercent(NMHDR* pNMHDR, LRESULT* pResult) 
{
/*	m_ObjectPercent = 0.001 * m_SliderPercent.GetPos();

	CString str;
	str.Format("像素比例:%2.1f%%", 100 * m_ObjectPercent);
	m_PercentInfo.SetWindowText(str);
	
	*pResult = 0;*/
}

void CConfigDlg::OnGetresultButton() 
{	
	UpdateData(true);
	CString str;
		switch(m_RadioSelectObject)
	{
	case 0://我队标志
		str.Format("球 X:%.2f, Y:%.2f", g_Ball.m_vPos.x, g_Ball.m_vPos.y);
		break;
	case 1://我队队员1
		str.Format("我队队员1 X:%.2f, Y:%.2f", m_pVideoDlg->My_CentreGravity[0][1], m_pVideoDlg->My_CentreGravity[0][0]);
		break;
	case 2://我队队员2	
		str.Format("我队队员2 X:%.2f, Y:%.2f", m_pVideoDlg->My_CentreGravity[1][1], m_pVideoDlg->My_CentreGravity[1][0]);
		break;
	case 3://我队队员3
		str.Format("我队队员3 X:%.2f, Y:%.2f", m_pVideoDlg->My_CentreGravity[2][1], m_pVideoDlg->My_CentreGravity[2][0]);
		break;
	case 4://我队队员4
		str.Format("我队队员4 X:%.2f, Y:%.2f", m_pVideoDlg->My_CentreGravity[3][1], m_pVideoDlg->My_CentreGravity[3][0]);
		break;
	case 5://我队队员5
		str.Format("我队队员5 X:%.2f, Y:%.2f", m_pVideoDlg->My_CentreGravity[4][1], m_pVideoDlg->My_CentreGravity[4][0]);
		break;
	case 6://他队标志
		str.Format("球 X:%.2f, Y:%.2f", g_Ball.m_vPos.x, g_Ball.m_vPos.y);
		break;
	case 7://他队队员1
		str.Format("他队队员1 X:%.2f, Y:%.2f", g_TheirTeam[0].m_vPos.x, g_TheirTeam[0].m_vPos.y);
		break;
	case 8://他队队员2
		str.Format("他队队员2 X:%.2f, Y:%.2f", g_TheirTeam[1].m_vPos.x, g_TheirTeam[1].m_vPos.y);
		break;
	case 9://他队队员3
		str.Format("他队队员3 X:%.2f, Y:%.2f", g_TheirTeam[2].m_vPos.x, g_TheirTeam[2].m_vPos.y);
		break;
	case 10://他队队员4
		str.Format("他队队员4 X:%.2f, Y:%.2f", g_TheirTeam[3].m_vPos.x, g_TheirTeam[3].m_vPos.y);
		break;
	case 11://他队队员5
		str.Format("他队队员5 X:%.2f, Y:%.2f", g_TheirTeam[4].m_vPos.x, g_TheirTeam[4].m_vPos.y);
		break;
	case 12://球
		str.Format("球 X:%.2f, Y:%.2f", g_Ball.m_vPos.x, g_Ball.m_vPos.y);
		break;
	case 13://场地	
		str.Format("球 X:%.2f, Y:%.2f", g_Ball.m_vPos.x, g_Ball.m_vPos.y);
		break;
	}	
	m_CoorInfo.SetWindowText(str);

	
}

void CConfigDlg::SetVideoDlg(CVideoDlg* pVideoDlg)
{
	m_pVideoDlg = pVideoDlg;
}

void CConfigDlg::OnSave() 
{
	FILE* pFile;

	pFile = fopen("sampling.txt", "w+");

	if(!pFile)
	{
		MessageBox("sampling文件无法打开!");
		return;
	}

	fprintf(pFile, "我队标志_red上限: %i\n", m_upper_MyTeamLable[2]);
	fprintf(pFile, "我队标志_green上限: %i\n", m_upper_MyTeamLable[1]);
	fprintf(pFile, "我队标志_RGBTotal上限: %i\n", m_upper_MyTeamLable[0]);

	fprintf(pFile, "\n");

	fprintf(pFile, "我队标志_red下限: %i\n", m_lower_MyTeamLable[2]);
	fprintf(pFile, "我队标志_green下限: %i\n", m_lower_MyTeamLable[1]);
	fprintf(pFile, "我队标志_RGBTotal下限: %i\n", m_lower_MyTeamLable[0]);

	fprintf(pFile, "\n");
	
	for(int i = 0; i < 5; i++)
	{
		fprintf(pFile, "我队队员%d_red上限: %i\n", i+1, m_upper_MyTeam[i][2]);
		fprintf(pFile, "我队队员%d_green上限: %i\n", i+1, m_upper_MyTeam[i][1]);
		fprintf(pFile, "我队队员%d_RGBTotal上限: %i\n", i+1, m_upper_MyTeam[i][0]);
	
		fprintf(pFile, "\n");
	
		fprintf(pFile, "我队队员%d_red下限: %i\n", i+1, m_lower_MyTeam[i][2]);
		fprintf(pFile, "我队队员%d_green下限: %i\n", i+1, m_lower_MyTeam[i][1]);
		fprintf(pFile, "我队队员%d_RGBTotal下限: %i\n", i+1, m_lower_MyTeam[i][0]);

		fprintf(pFile, "\n");
	}

	fprintf(pFile, "\n");

	fprintf(pFile, "他队标志_red上限: %i\n", m_upper_TheirTeamLable[2]);
	fprintf(pFile, "他队标志_green上限: %i\n", m_upper_TheirTeamLable[1]);
	fprintf(pFile, "他队标志_RGBTotal上限: %i\n", m_upper_TheirTeamLable[0]);
	
	fprintf(pFile, "\n");

	fprintf(pFile, "他队标志_red下限: %i\n", m_lower_TheirTeamLable[2]);
	fprintf(pFile, "他队标志_green下限: %i\n", m_lower_TheirTeamLable[1]);
	fprintf(pFile, "他队标志_RGBTotal下限: %i\n", m_lower_TheirTeamLable[0]);

	fprintf(pFile, "\n");

	for(i = 0; i < 5; i++)
	{
		fprintf(pFile, "他队队员%d_red上限: %i\n", i+1, m_upper_TheirTeam[i][2]);
		fprintf(pFile, "他队队员%d_green上限: %i\n", i+1, m_upper_TheirTeam[i][1]);
		fprintf(pFile, "他队队员%d_RGBTotal上限: %i\n", i+1, m_upper_TheirTeam[i][0]);

		fprintf(pFile, "\n");
	
		fprintf(pFile, "他队队员%d_red下限: %i\n", i+1, m_lower_TheirTeam[i][2]);
		fprintf(pFile, "他队队员%d_green下限: %i\n", i+1, m_lower_TheirTeam[i][1]);
		fprintf(pFile, "他队队员%d_RGBTotal下限: %i\n", i+1, m_lower_TheirTeam[i][0]);
	
		fprintf(pFile, "\n");
	}

	fprintf(pFile, "\n");

	fprintf(pFile, "球_red上限: %i\n", m_upper_Ball[2]);
	fprintf(pFile, "球_green上限: %i\n", m_upper_Ball[1]);
	fprintf(pFile, "球_RGBTotal上限: %i\n", m_upper_Ball[0]);

	fprintf(pFile, "\n");
	
	fprintf(pFile, "球_red下限: %i\n", m_lower_Ball[2]);
	fprintf(pFile, "球_green下限: %i\n", m_lower_Ball[1]);
	fprintf(pFile, "球_RGBTotal下限: %i\n", m_lower_Ball[0]);

	fprintf(pFile, "\n");

	fprintf(pFile, "场地_red上限: %i\n", m_upper_Field[2]);
	fprintf(pFile, "场地_green上限: %i\n", m_upper_Field[1]);
	fprintf(pFile, "场地_RGBTotal上限: %i\n", m_upper_Field[0]);

	fprintf(pFile, "\n");
	
	fprintf(pFile, "场地_red下限: %i\n", m_lower_Field[2]);
	fprintf(pFile, "场地_green下限: %i\n", m_lower_Field[1]);
	fprintf(pFile, "场地_RGBTotal下限: %i\n", m_lower_Field[0]);

	fclose(pFile);		
}

double CConfigDlg::ReadFile(FILE* pFile)
{
	char *endptr;
	char buffer[100];
	CString str;

	fscanf(pFile, "%s", buffer);
	fscanf(pFile, "%s", buffer);
	str = buffer;
	
	return strtod( str, &endptr );
}

void CConfigDlg::OnLoad() 
{
	FILE* pFile;

	pFile = fopen("sampling.txt", "r+");

	if(!pFile)
	{
		MessageBox("sampling文件无法打开!");
		return;
	}

	m_upper_MyTeamLable[2] = ReadFile(pFile);
	m_upper_MyTeamLable[1] = ReadFile(pFile);
	m_upper_MyTeamLable[0] = ReadFile(pFile);
	
	m_lower_MyTeamLable[2] = ReadFile(pFile);
	m_lower_MyTeamLable[1] = ReadFile(pFile);
	m_lower_MyTeamLable[0] = ReadFile(pFile);

	for(int i = 0; i < 5; i++)
	{
		m_upper_MyTeam[i][2] = ReadFile(pFile);
		m_upper_MyTeam[i][1] = ReadFile(pFile);
		m_upper_MyTeam[i][0] = ReadFile(pFile);
	
		m_lower_MyTeam[i][2] = ReadFile(pFile);	
		m_lower_MyTeam[i][1] = ReadFile(pFile);
		m_lower_MyTeam[i][0] = ReadFile(pFile);
	}

	m_upper_TheirTeamLable[2] = ReadFile(pFile);
	m_upper_TheirTeamLable[1] = ReadFile(pFile);
	m_upper_TheirTeamLable[0] = ReadFile(pFile);
	
	m_lower_TheirTeamLable[2] = ReadFile(pFile);
	m_lower_TheirTeamLable[1] = ReadFile(pFile);
	m_lower_TheirTeamLable[0] = ReadFile(pFile);

	for(i = 0; i < 5; i++)
	{
		m_upper_TheirTeam[i][2] = ReadFile(pFile);
		m_upper_TheirTeam[i][1] = ReadFile(pFile);
		m_upper_TheirTeam[i][0] = ReadFile(pFile);

		m_lower_TheirTeam[i][2] = ReadFile(pFile);
		m_lower_TheirTeam[i][1] = ReadFile(pFile);
		m_lower_TheirTeam[i][0] = ReadFile(pFile);
	}

	m_upper_Ball[2] = ReadFile(pFile);
	m_upper_Ball[1] = ReadFile(pFile);
	m_upper_Ball[0] = ReadFile(pFile);

	m_lower_Ball[2] = ReadFile(pFile);
	m_lower_Ball[1] = ReadFile(pFile);
	m_lower_Ball[0] = ReadFile(pFile);

	m_upper_Field[2] = ReadFile(pFile);
	m_upper_Field[1] = ReadFile(pFile);
	m_upper_Field[0] = ReadFile(pFile);

	m_lower_Field[2] = ReadFile(pFile);
	m_lower_Field[1] = ReadFile(pFile);
	m_lower_Field[0] = ReadFile(pFile);

	fclose(pFile);		
}

void CConfigDlg::OnButtonClearsample() 
{
	UpdateData(TRUE);
	
	for(int i = 0; i < 5; i++)
	{
		for(int j = 0; j < 3; j++)
		{
			if(i+1 == m_RadioSelectObject)
			{
				m_upper_MyTeam[i][j] = 0;
				m_lower_MyTeam[i][j] = 65535;
			}
			else if(7+i == m_RadioSelectObject)
			{
				m_upper_TheirTeam[i][j] =0;
				m_lower_TheirTeam[i][j] = 65535;
			}
		}
	}

	for(i = 0; i < 3; i++)
	{
		if(12 == m_RadioSelectObject)
		{//球
			m_upper_Ball[i] = 0;
			m_lower_Ball[i] = 65535;
		}
		else if(0 == m_RadioSelectObject)
		{//我队标志
			m_upper_MyTeamLable[i] = 0;
			m_lower_MyTeamLable[i] = 65535;
		}	
		else if(6 == m_RadioSelectObject)
		{//他队标志
			m_upper_TheirTeamLable[i] = 0;
			m_lower_TheirTeamLable[i] = 65535;
		}
		else if(13 == m_RadioSelectObject)
		{//场地
			m_upper_Field[i] = 0;
			m_lower_Field[i] = 65535;
		}
	}	
}
void CConfigDlg::showcolour(int r, int g, int b)
{
	CDC*pDC=GetDC(); 
	CRect rc(CPoint(100,90),CPoint(120,110));
	CBrush br(RGB(r,g,b));
	pDC->SelectObject(br);
	pDC->Rectangle(rc);
	ReleaseDC(pDC);
}

void CConfigDlg::Onrbsample() 
{
	isSample=!isSample;
	if (isSample)
	{

⌨️ 快捷键说明

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