SysConfig.cpp 9.92 KB
// SysConfig.cpp : implementation file
//

#include "stdafx.h"
#include "BlueFlashTool.h"
#include "SysConfig.h"

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

/////////////////////////////////////////////////////////////////////////////
// CSysConfig dialog


CSysConfig::CSysConfig(CWnd* pParent /*=NULL*/)
	: CDialog(CSysConfig::IDD, pParent)
	, mystrSNHeader(_T(""))
	, myintBandrate(_T("921600"))
	, myAllowSave(true)
{
	//{{AFX_DATA_INIT(CSysConfig)
	mystrFilePathUsb = _T("");
	mystrFilePathEar = _T("");
	mystrSnEnd = _T("");
	mystrSnStart = _T("");
	//}}AFX_DATA_INIT
}


void CSysConfig::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CSysConfig)
	DDX_Control(pDX, IDC_COMPORT_EAR01, mylistEar01);
	DDX_Control(pDX, IDC_COMPORT_EAR02, mylistEar02);
	DDX_Control(pDX, IDC_COMPORT_EAR03, mylistEar03);
	DDX_Control(pDX, IDC_COMPORT_EAR04, mylistEar04);
	DDX_Control(pDX, IDC_COMPORT_EAR05, mylistEar05);
	DDX_Control(pDX, IDC_COMPORT_EAR06, mylistEar06);
	DDX_Control(pDX, IDC_COMPORT_EAR07, mylistEar07);
	DDX_Control(pDX, IDC_COMPORT_EAR08, mylistEar08);
	DDX_Control(pDX, IDC_COMPORT_EAR09, mylistEar09);
	DDX_Control(pDX, IDC_COMPORT_EAR10, mylistEar10);
	DDX_Control(pDX, IDC_COMPORT_USB01, mylistUsb01);
	DDX_Control(pDX, IDC_COMPORT_USB02, mylistUsb02);
	DDX_Control(pDX, IDC_COMPORT_USB03, mylistUsb03);
	DDX_Control(pDX, IDC_COMPORT_USB04, mylistUsb04);
	DDX_Control(pDX, IDC_COMPORT_USB05, mylistUsb05);
	DDX_Control(pDX, IDC_COMPORT_USB06, mylistUsb06);
	DDX_Control(pDX, IDC_COMPORT_USB07, mylistUsb07);
	DDX_Control(pDX, IDC_COMPORT_USB08, mylistUsb08);
	DDX_Control(pDX, IDC_COMPORT_USB09, mylistUsb09);
	DDX_Control(pDX, IDC_COMPORT_USB10, mylistUsb10);
	DDX_Control(pDX, IDC_COMBO_STEAM, mylistStreambit);
	DDX_Control(pDX, IDC_COMBO_STOPBIT, mylistStopbit);
	DDX_Control(pDX, IDC_COMBO_DATABIT, mylistDatabit);
	DDX_Control(pDX, IDC_COMBO_CHECK, mylistCheck);
	DDX_Control(pDX, IDC_CHECK_SAME_SN, myCheckSameSn);
	DDX_Text(pDX, IDC_EDIT_USB_PATH, mystrFilePathUsb);
	DDX_Text(pDX, IDC_EDIT_EAR_PATH, mystrFilePathEar);
	DDX_Text(pDX, IDC_EDIT_SN_END, mystrSnEnd);
	DDX_Text(pDX, IDC_EDIT_SN_START, mystrSnStart);
	//}}AFX_DATA_MAP
	DDX_Text(pDX, IDC_EDIT_SN_HEADER, mystrSNHeader);
	DDV_MaxChars(pDX, mystrSnStart, 5);
	DDV_MaxChars(pDX, mystrSnEnd, 5);
	DDX_CBString(pDX, IDC_COMBO_BAND, myintBandrate);
}


BEGIN_MESSAGE_MAP(CSysConfig, CDialog)
	//{{AFX_MSG_MAP(CSysConfig)
	ON_BN_CLICKED(IDC_CHECK_SAME_SN, OnCheckSameSn)
	ON_BN_CLICKED(IDC_BUTTON_SECPATH_EAR, OnButtonSecpathEar)
	ON_BN_CLICKED(IDC_BUTTON_SECPATH_USB, OnButtonSecpathUsb)
	//}}AFX_MSG_MAP
	ON_BN_CLICKED(IDOK, &CSysConfig::OnBnClickedOk)
	ON_CBN_SELCHANGE(IDC_COMPORT_EAR01, &CSysConfig::OnCbnSelchangeComportEarUsb)
	ON_CBN_SELCHANGE(IDC_COMPORT_EAR02, &CSysConfig::OnCbnSelchangeComportEarUsb)
	ON_CBN_SELCHANGE(IDC_COMPORT_EAR03, &CSysConfig::OnCbnSelchangeComportEarUsb)
	ON_CBN_SELCHANGE(IDC_COMPORT_EAR04, &CSysConfig::OnCbnSelchangeComportEarUsb)
	ON_CBN_SELCHANGE(IDC_COMPORT_EAR05, &CSysConfig::OnCbnSelchangeComportEarUsb)
	ON_CBN_SELCHANGE(IDC_COMPORT_EAR06, &CSysConfig::OnCbnSelchangeComportEarUsb)
	ON_CBN_SELCHANGE(IDC_COMPORT_EAR07, &CSysConfig::OnCbnSelchangeComportEarUsb)
	ON_CBN_SELCHANGE(IDC_COMPORT_EAR08, &CSysConfig::OnCbnSelchangeComportEarUsb)
	ON_CBN_SELCHANGE(IDC_COMPORT_EAR09, &CSysConfig::OnCbnSelchangeComportEarUsb)
	ON_CBN_SELCHANGE(IDC_COMPORT_EAR10, &CSysConfig::OnCbnSelchangeComportEarUsb)
	ON_CBN_SELCHANGE(IDC_COMPORT_USB01, &CSysConfig::OnCbnSelchangeComportEarUsb)
	ON_CBN_SELCHANGE(IDC_COMPORT_USB02, &CSysConfig::OnCbnSelchangeComportEarUsb)
	ON_CBN_SELCHANGE(IDC_COMPORT_USB03, &CSysConfig::OnCbnSelchangeComportEarUsb)
	ON_CBN_SELCHANGE(IDC_COMPORT_USB04, &CSysConfig::OnCbnSelchangeComportEarUsb)
	ON_CBN_SELCHANGE(IDC_COMPORT_USB05, &CSysConfig::OnCbnSelchangeComportEarUsb)
	ON_CBN_SELCHANGE(IDC_COMPORT_USB06, &CSysConfig::OnCbnSelchangeComportEarUsb)
	ON_CBN_SELCHANGE(IDC_COMPORT_USB07, &CSysConfig::OnCbnSelchangeComportEarUsb)
	ON_CBN_SELCHANGE(IDC_COMPORT_USB08, &CSysConfig::OnCbnSelchangeComportEarUsb)
	ON_CBN_SELCHANGE(IDC_COMPORT_USB09, &CSysConfig::OnCbnSelchangeComportEarUsb)
	ON_CBN_SELCHANGE(IDC_COMPORT_USB10, &CSysConfig::OnCbnSelchangeComportEarUsb)

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CSysConfig message handlers

void CSysConfig::OnCheckSameSn() 
{
	// TODO: Add your control notification handler code here
	g_AppMainData.if_same_sn = myCheckSameSn.GetCheck();
	GetDlgItem(IDC_EDIT_SN_START)->EnableWindow(!g_AppMainData.if_same_sn);
	GetDlgItem(IDC_EDIT_SN_END)->EnableWindow(!g_AppMainData.if_same_sn);
	GetDlgItem(IDC_EDIT_SN_HEADER)->EnableWindow(!g_AppMainData.if_same_sn);
}

BOOL CSysConfig::OnInitDialog() 
{
	int loop = 0,loop2 = 0;
	int total_coms = myStrAryNoneOpenedPort->GetSize();
	int index_inserted;
	CString strComname,strCommConfiged;
	CDialog::OnInitDialog();
	for (loop = 0;loop<10;loop++)
	{
		CComboBox *plistCom = (CComboBox *)GetDlgItem(IDC_COMPORT_EAR01+loop);
		plistCom->ResetContent();
		plistCom->AddString("NONE");
		strCommConfiged.Format("COM%d",g_AppMainData.ary_myComPort[BLUE_TYPE_EAR][loop]);
		for (loop2 = 1;loop2<total_coms;loop2++)
		{
			strComname = myStrAryNoneOpenedPort->GetAt(loop2);
			index_inserted = plistCom->AddString(strComname);	
			if (strComname == strCommConfiged)
				plistCom->SetCurSel(index_inserted);
		}
	}
	for (loop = 0;loop<10;loop++)
	{
		CComboBox *plistCom = (CComboBox *)GetDlgItem(IDC_COMPORT_USB01+loop);
		plistCom->ResetContent();
		plistCom->AddString("NONE");
		strCommConfiged.Format("COM%d",g_AppMainData.ary_myComPort[BLUE_TYPE_USB][loop]);
		for (loop2 = 1;loop2<total_coms;loop2++)
		{
			strComname = myStrAryNoneOpenedPort->GetAt(loop2);
			index_inserted = plistCom->AddString(strComname);			
			if (strComname == strCommConfiged)
				plistCom->SetCurSel(index_inserted);
		}
	}	 //数据初始化
	mystrSNHeader.Format("%s",g_AppMainData.SN_head);
	mystrSnStart.Format("%05d",g_AppMainData.SN_cur);
	mystrSnEnd.Format("%05d",g_AppMainData.SN_end);
	mylistCheck.SetCurSel(g_AppMainData.com_config.bcheck);
	mylistDatabit.SetCurSel(3);
	mylistStopbit.SetCurSel(0);
	mylistStreambit.SetCurSel(0);
	//UI 初始化
	myCheckSameSn.SetCheck(g_AppMainData.if_same_sn);
	GetDlgItem(IDC_EDIT_SN_START)->EnableWindow(!g_AppMainData.if_same_sn);
	GetDlgItem(IDC_EDIT_SN_END)->EnableWindow(!g_AppMainData.if_same_sn);
	GetDlgItem(IDC_EDIT_SN_HEADER)->EnableWindow(!g_AppMainData.if_same_sn);
	mylistCheck.EnableWindow(FALSE);
	mylistDatabit.EnableWindow(FALSE);
	mylistStopbit.EnableWindow(FALSE);
	mylistStreambit.EnableWindow(FALSE);
	mystrFilePathEar = g_AppMainData.FilePathEar;
	mystrFilePathUsb = g_AppMainData.FilePathUsb;

	UpdateData(FALSE);
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CSysConfig::OnButtonSecpathEar() 
{
    // TODO: Add your control notification handler code here
    char szFilter[]="bin files(*.*)|*.*";
    CFileDialog dlg(TRUE, NULL, NULL, OFN_FILEMUSTEXIST|OFN_EXPLORER|OFN_ENABLESIZING|0x10000000, szFilter, this);
    dlg.m_ofn.lpstrTitle = _T("选择耳机软件...");
    if(dlg.DoModal() == IDOK)
        mystrFilePathEar = dlg.GetPathName();
    CEdit* pEdit = (CEdit*)GetDlgItem(IDC_EDIT_EAR_PATH);
    pEdit->SetWindowText(mystrFilePathEar);
	
}

void CSysConfig::OnButtonSecpathUsb() 
{
    // TODO: Add your control notification handler code here
    char szFilter[]="bin files(*.*)|*.*";
    CFileDialog dlg(TRUE, NULL, NULL, OFN_FILEMUSTEXIST|OFN_EXPLORER|OFN_ENABLESIZING|0x10000000, szFilter, this);
    dlg.m_ofn.lpstrTitle = _T("选择发射器软件...");
    if(dlg.DoModal() == IDOK)
        mystrFilePathUsb = dlg.GetPathName();
    CEdit* pEdit = (CEdit*)GetDlgItem(IDC_EDIT_USB_PATH);
    pEdit->SetWindowText(mystrFilePathUsb);
	
}

void CSysConfig::OnBnClickedOk()
{
	int loop = 0;
	UpdateData(TRUE);
	if (myAllowSave == false)
	{
		MessageBox("请核对端口配置参数是否有误", "Warning");
		return;
	}
	if (!myCheckSameSn.GetCheck())
	{
		if (mystrSnStart.GetLength()<5 ||mystrSnEnd.GetLength()<5 )
		{
			MessageBox("序号太短", "Warning");
			return;
		}
		if (mystrSnStart == mystrSnEnd)
		{
			MessageBox("结束序号与起始序号不能相同", "Warning");
			return;
		}
		char *p_SnStart = mystrSnStart.GetBuffer(5);
		char *p_SnEnd = mystrSnEnd.GetBuffer(5);
		g_AppMainData.SN_start = atoi(p_SnStart);
		g_AppMainData.SN_end = atoi(p_SnEnd);
		g_AppMainData.SN_cur = g_AppMainData.SN_start;
		g_AppMainData.if_same_sn = TRUE;
	}
	else
	{
		g_AppMainData.if_same_sn = FALSE;
	}

	g_AppMainData.if_same_sn = myCheckSameSn.GetCheck();
	g_AppMainData.com_config.aBandrate=atoi(myintBandrate.GetBuffer(0));
	g_AppMainData.com_config.bcheck = mylistCheck.GetCurSel();
	g_AppMainData.com_config.cdatabit = mylistDatabit.GetCurSel();
	g_AppMainData.com_config.dstopbit = mylistStopbit.GetCurSel();
	g_AppMainData.com_config.estreambit = mylistStreambit.GetCurSel();
	if (mystrFilePathEar == "")
	{
		MessageBox("未选择耳机软件", "Warning");
		return;
	}
	if (mystrFilePathUsb == "")
	{
		MessageBox("未选择发射器软件", "Warning");
		return;
	}
	g_AppMainData.FilePathEar = mystrFilePathEar;
	g_AppMainData.FilePathUsb = mystrFilePathUsb;

	g_pmainapp->SaveConfigs();


	CDialog::OnOK();
}

void CSysConfig::OnCbnSelchangeComportEarUsb()
{
	int loop,indexComm,currentID;
	CComboBox *plist;
	CString strOfItem;
	char ascchar[4];
	memset(ascchar,0,4);
	currentID = GetFocus()->GetDlgCtrlID();
	plist =(CComboBox *)GetDlgItem(currentID);
	plist->GetLBText(plist->GetCurSel(),strOfItem);
	strcpy(ascchar,strOfItem.GetBuffer(0)+3);
	indexComm = atoi(ascchar);
	if ( indexComm== 1)
	{
		MessageBox("无效COM口", "Warning");
		myAllowSave = false;
		return;
	}
	if (currentID>=IDC_COMPORT_EAR01 && IDC_COMPORT_EAR01<=IDC_COMPORT_EAR10 )
	{
		g_AppMainData.ary_myComPort[BLUE_TYPE_EAR][currentID-IDC_COMPORT_EAR01] = indexComm;
	}
	else
		g_AppMainData.ary_myComPort[BLUE_TYPE_USB][currentID-IDC_COMPORT_USB01] = indexComm;
	myAllowSave = true;
}