BlueFlashTool.cpp 14.2 KB
// BlueFlashTool.cpp : Defines the class behaviors for the application.
//

#include "stdafx.h"
#include "BlueFlashTool.h"
#include "BlueFlashToolDlg.h"

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

/////////////////////////////////////////////////////////////////////////////
// CBlueFlashToolApp

BEGIN_MESSAGE_MAP(CBlueFlashToolApp, CWinApp)
	//{{AFX_MSG_MAP(CBlueFlashToolApp)
		// NOTE - the ClassWizard will add and remove mapping macros here.
		//    DO NOT EDIT what you see in these blocks of generated code!
	//}}AFX_MSG
	ON_COMMAND(ID_HELP, CWinApp::OnHelp)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CBlueFlashToolApp construction

CBlueFlashToolApp::CBlueFlashToolApp()
{
	// TODO: add construction code here,
	// Place all significant initialization in InitInstance
}

/////////////////////////////////////////////////////////////////////////////
// The one and only CBlueFlashToolApp object
//---------------全局变量定义区
	CBlueFlashToolApp theApp;
	CBlueFlashToolApp *g_pmainapp;
	app_main_data_struct g_AppMainData;
	//CByteArray g_pBufferBinFile[20];
	CIniFile g_globalini;
//---------------全局变量定义区


CString GetCurrPath();




/////////////////////////////////////////////////////////////////////////////
// CBlueFlashToolApp initialization

BOOL CBlueFlashToolApp::InitInstance()
{
	CString strglobalpath;
	AfxEnableControlContainer();

	// Standard initialization
	// If you are not using these features and wish to reduce the size
	//  of your final executable, you should remove from the following
	//  the specific initialization routines you do not need.

#ifdef _AFXDLL
	//Enable3dControls();			// Call this when using MFC in a shared DLL
#else
	Enable3dControlsStatic();	// Call this when linking to MFC statically
#endif
	g_pmainapp = this;

	strglobalpath = GetCurrPath() + "Global";
	g_globalini.SetIniFileName(strglobalpath);
	LoadConfigs();

	//--------------------------------------------------------数据初始化
	


	CBlueFlashToolDlg dlg;
	m_pMainWnd = &dlg;
	int nResponse = dlg.DoModal();
	if (nResponse == IDOK)
	{
		// TODO: Place code here to handle when the dialog is
		//  dismissed with OK
	}
	else if (nResponse == IDCANCEL)
	{
		// TODO: Place code here to handle when the dialog is
		//  dismissed with Cancel
	}

	// Since the dialog has been closed, return FALSE so that we exit the
	//  application, rather than start the application's message pump.
	return FALSE;
}



//获取应用程序的根目录
//return value:应用程序的根目录
CString GetCurrPath()
{
	CString strPath ="";
	char cCurDirectory[_MAX_PATH];
	memset(cCurDirectory,'\0',_MAX_PATH);
	::GetModuleFileName(NULL,  cCurDirectory,   _MAX_PATH); 
	//GetCurrentDirectory(256, cCurDirectory); //不能使用这个函数,如果中间你调用文件对话框,对改变你的当前路径
	strPath.Format(cCurDirectory);
	CString strAppName =AfxGetApp()->m_pszAppName; 
	strAppName+=".exe";
	//把最后的exe文件名去掉 
	int length1,length2; 
	length1=strPath.GetLength(); 
	length2=strAppName.GetLength(); 
	strPath.Delete(length1-length2,length2); 
	//strPath.Replace("\\","\\\\");
	return strPath;
}
//判断某文件是否存在
//return value: ture:存在,false:不存在!
//Parameters:
//strAbsolutefilePath:文件的绝对路径
bool IsExistFile(CString strAbsolutefilePath)
{
	CFileFind findFile;
	//BOOL iFlag = false;
	BOOL iFlag = findFile.FindFile(strAbsolutefilePath);
	return (bool)iFlag;
}


BOOL QuerySingleSerialPortEx(int nPort)
{
	CString strComm;
	strComm.Format("COM%d",nPort);
	if (nPort >= 10)
	{//微软的技术手册规定打开端口号大于9的串口时应该使用"\\.\COM10"格式的文件名,更多的信息请参考msdn。
		strComm.Format("\\\\.\\COM%d",nPort);	
	}
	BOOL bValid = TRUE;
	HANDLE hComm;

	hComm = CreateFile(strComm,GENERIC_READ | GENERIC_WRITE,0,NULL,\
	OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL| FILE_FLAG_OVERLAPPED, NULL); 
	int nError = GetLastError();

	if(INVALID_HANDLE_VALUE == hComm)     
	{//***********如果没有该设备,或者被其他应用程序占用********
		if(2 == nError)
			bValid = -1;
		else if(5 == nError)
			bValid = FALSE;
		else
			bValid = FALSE;
	}
	CloseHandle(hComm); //重要 关闭文件句柄 = 关闭串口
	return bValid;
}

// 加载程序默认配置
bool CBlueFlashToolApp::LoadConfigs(void)
{
	g_AppMainData.if_same_sn = g_globalini.ReadBool("SN_Config","SN_same");
	g_AppMainData.SN_head = g_globalini.ReadString("SN_Config","SN_head");
	g_AppMainData.SN_start = g_globalini.ReadInt("SN_Config","SN_start");
	g_AppMainData.SN_end = g_globalini.ReadInt("SN_Config","SN_end");
	g_AppMainData.SN_cur = g_globalini.ReadInt("SN_Config","SN_cur");

	g_AppMainData.com_config.aBandrate = g_globalini.ReadInt("UART_Config","波特率");
	g_AppMainData.com_config.bcheck = g_globalini.ReadInt("UART_Config","校验位");
	g_AppMainData.com_config.cdatabit = g_globalini.ReadInt("UART_Config","数据位");
	g_AppMainData.com_config.dstopbit = g_globalini.ReadInt("UART_Config","停止??");
	g_AppMainData.com_config.estreambit = g_globalini.ReadInt("UART_Config","流控制");

	g_AppMainData.ary_myComPort[BLUE_TYPE_EAR][0] = g_globalini.ReadInt("UART_Config","ear_port1");
	g_AppMainData.ary_myComPort[BLUE_TYPE_EAR][1] = g_globalini.ReadInt("UART_Config","ear_port2");
	g_AppMainData.ary_myComPort[BLUE_TYPE_EAR][2] = g_globalini.ReadInt("UART_Config","ear_port3");
	g_AppMainData.ary_myComPort[BLUE_TYPE_EAR][3] = g_globalini.ReadInt("UART_Config","ear_port4");
	g_AppMainData.ary_myComPort[BLUE_TYPE_EAR][4] = g_globalini.ReadInt("UART_Config","ear_port5");
	g_AppMainData.ary_myComPort[BLUE_TYPE_EAR][5] = g_globalini.ReadInt("UART_Config","ear_port6");
	g_AppMainData.ary_myComPort[BLUE_TYPE_EAR][6] = g_globalini.ReadInt("UART_Config","ear_port7");
	g_AppMainData.ary_myComPort[BLUE_TYPE_EAR][7] = g_globalini.ReadInt("UART_Config","ear_port8");
	g_AppMainData.ary_myComPort[BLUE_TYPE_EAR][8] = g_globalini.ReadInt("UART_Config","ear_port9");
	g_AppMainData.ary_myComPort[BLUE_TYPE_EAR][9] = g_globalini.ReadInt("UART_Config","ear_port10");
	g_AppMainData.ary_myComPort[BLUE_TYPE_USB][0] = g_globalini.ReadInt("UART_Config","usb_port1");
	g_AppMainData.ary_myComPort[BLUE_TYPE_USB][1] = g_globalini.ReadInt("UART_Config","usb_port2");
	g_AppMainData.ary_myComPort[BLUE_TYPE_USB][2] = g_globalini.ReadInt("UART_Config","usb_port3");
	g_AppMainData.ary_myComPort[BLUE_TYPE_USB][3] = g_globalini.ReadInt("UART_Config","usb_port4");
	g_AppMainData.ary_myComPort[BLUE_TYPE_USB][4] = g_globalini.ReadInt("UART_Config","usb_port5");
	g_AppMainData.ary_myComPort[BLUE_TYPE_USB][5] = g_globalini.ReadInt("UART_Config","usb_port6");
	g_AppMainData.ary_myComPort[BLUE_TYPE_USB][6] = g_globalini.ReadInt("UART_Config","usb_port7");
	g_AppMainData.ary_myComPort[BLUE_TYPE_USB][7] = g_globalini.ReadInt("UART_Config","usb_port8");
	g_AppMainData.ary_myComPort[BLUE_TYPE_USB][8] = g_globalini.ReadInt("UART_Config","usb_port9");
	g_AppMainData.ary_myComPort[BLUE_TYPE_USB][9] = g_globalini.ReadInt("UART_Config","usb_port10");
	g_AppMainData.FilePathEar= g_globalini.ReadString("BinFilePath","EarBin");
	g_AppMainData.FilePathUsb= g_globalini.ReadString("BinFilePath","UsbBin");


	g_AppMainData.if_flash[BLUE_TYPE_EAR][0] = g_globalini.ReadBool("Other_Config","ear_enable1");
	g_AppMainData.if_flash[BLUE_TYPE_EAR][1] = g_globalini.ReadBool("Other_Config","ear_enable2");
	g_AppMainData.if_flash[BLUE_TYPE_EAR][2] = g_globalini.ReadBool("Other_Config","ear_enable3");
	g_AppMainData.if_flash[BLUE_TYPE_EAR][3] = g_globalini.ReadBool("Other_Config","ear_enable4");
	g_AppMainData.if_flash[BLUE_TYPE_EAR][4] = g_globalini.ReadBool("Other_Config","ear_enable5");
	g_AppMainData.if_flash[BLUE_TYPE_EAR][5] = g_globalini.ReadBool("Other_Config","ear_enable6");
	g_AppMainData.if_flash[BLUE_TYPE_EAR][6] = g_globalini.ReadBool("Other_Config","ear_enable7");
	g_AppMainData.if_flash[BLUE_TYPE_EAR][7] = g_globalini.ReadBool("Other_Config","ear_enable8");
	g_AppMainData.if_flash[BLUE_TYPE_EAR][8] = g_globalini.ReadBool("Other_Config","ear_enable9");
	g_AppMainData.if_flash[BLUE_TYPE_EAR][9] = g_globalini.ReadBool("Other_Config","ear_enable10");
	g_AppMainData.if_flash[BLUE_TYPE_USB][0] = g_globalini.ReadBool("Other_Config","usb_enable1");
	g_AppMainData.if_flash[BLUE_TYPE_USB][1] = g_globalini.ReadBool("Other_Config","usb_enable2");
	g_AppMainData.if_flash[BLUE_TYPE_USB][2] = g_globalini.ReadBool("Other_Config","usb_enable3");
	g_AppMainData.if_flash[BLUE_TYPE_USB][3] = g_globalini.ReadBool("Other_Config","usb_enable4");
	g_AppMainData.if_flash[BLUE_TYPE_USB][4] = g_globalini.ReadBool("Other_Config","usb_enable5");
	g_AppMainData.if_flash[BLUE_TYPE_USB][5] = g_globalini.ReadBool("Other_Config","usb_enable6");
	g_AppMainData.if_flash[BLUE_TYPE_USB][6] = g_globalini.ReadBool("Other_Config","usb_enable7");
	g_AppMainData.if_flash[BLUE_TYPE_USB][7] = g_globalini.ReadBool("Other_Config","usb_enable8");
	g_AppMainData.if_flash[BLUE_TYPE_USB][8] = g_globalini.ReadBool("Other_Config","usb_enable9");
	g_AppMainData.if_flash[BLUE_TYPE_USB][9] = g_globalini.ReadBool("Other_Config","usb_enable10");




	return true;
}

bool CBlueFlashToolApp::SaveConfigs(void)
{
	// 	g_AppMainData.if_same_sn = TRUE;
	// 	strcpy(g_AppMainData.SN_head,	"T");
	// 	g_AppMainData.SN_start = 0;
	// 	g_AppMainData.SN_end = 0;
	// 	g_AppMainData.SN_cur = 0;
	// 	g_AppMainData.com_config.aBandrate = 115200;
	// 	g_AppMainData.com_config.bcheck = 0;
	// 	g_AppMainData.com_config.cdatabit = 8;
	// 	g_AppMainData.com_config.dstopbit=1;
	// 	g_AppMainData.com_config.estreambit=0;
	// 
	// 	for (int i = 0; i < 10; i++)
	// 	{
	// 		g_AppMainData.ary_myComPort[BLUE_TYPE_EAR][i]=-1;
	// 		g_AppMainData.ary_myComPort[BLUE_TYPE_USB][i]=-1;
	// 	}
	// 	//--------------------------------------------------------数据初始化

	g_globalini.WriteBool("SN_Config","SN_same",g_AppMainData.if_same_sn);
	g_globalini.WriteString("SN_Config","SN_head",g_AppMainData.SN_head);
	g_globalini.WriteInt("SN_Config","SN_start",g_AppMainData.SN_start);
	g_globalini.WriteInt("SN_Config","SN_end",g_AppMainData.SN_end);
	g_globalini.WriteInt("SN_Config","SN_cur",g_AppMainData.SN_cur);

	g_globalini.WriteInt("UART_Config","波特率",g_AppMainData.com_config.aBandrate);
	g_globalini.WriteInt("UART_Config","校验位",g_AppMainData.com_config.bcheck);
	g_globalini.WriteInt("UART_Config","数据位",g_AppMainData.com_config.cdatabit);
	g_globalini.WriteInt("UART_Config","停止位",g_AppMainData.com_config.dstopbit);
	g_globalini.WriteInt("UART_Config","流控制",g_AppMainData.com_config.estreambit);

	g_globalini.WriteInt("UART_Config","ear_port1",g_AppMainData.ary_myComPort[BLUE_TYPE_EAR][0]);
	g_globalini.WriteInt("UART_Config","ear_port2",g_AppMainData.ary_myComPort[BLUE_TYPE_EAR][1]);
	g_globalini.WriteInt("UART_Config","ear_port3",g_AppMainData.ary_myComPort[BLUE_TYPE_EAR][2]);
	g_globalini.WriteInt("UART_Config","ear_port4",g_AppMainData.ary_myComPort[BLUE_TYPE_EAR][3]);
	g_globalini.WriteInt("UART_Config","ear_port5",g_AppMainData.ary_myComPort[BLUE_TYPE_EAR][4]);
	g_globalini.WriteInt("UART_Config","ear_port6",g_AppMainData.ary_myComPort[BLUE_TYPE_EAR][5]);
	g_globalini.WriteInt("UART_Config","ear_port7",g_AppMainData.ary_myComPort[BLUE_TYPE_EAR][6]);
	g_globalini.WriteInt("UART_Config","ear_port8",g_AppMainData.ary_myComPort[BLUE_TYPE_EAR][7]);
	g_globalini.WriteInt("UART_Config","ear_port9",g_AppMainData.ary_myComPort[BLUE_TYPE_EAR][8]);
	g_globalini.WriteInt("UART_Config","ear_port10",g_AppMainData.ary_myComPort[BLUE_TYPE_EAR][9]);
	g_globalini.WriteInt("UART_Config","usb_port1",g_AppMainData.ary_myComPort[BLUE_TYPE_USB][0]);
	g_globalini.WriteInt("UART_Config","usb_port2",g_AppMainData.ary_myComPort[BLUE_TYPE_USB][1]);
	g_globalini.WriteInt("UART_Config","usb_port3",g_AppMainData.ary_myComPort[BLUE_TYPE_USB][2]);
	g_globalini.WriteInt("UART_Config","usb_port4",g_AppMainData.ary_myComPort[BLUE_TYPE_USB][3]);
	g_globalini.WriteInt("UART_Config","usb_port5",g_AppMainData.ary_myComPort[BLUE_TYPE_USB][4]);
	g_globalini.WriteInt("UART_Config","usb_port6",g_AppMainData.ary_myComPort[BLUE_TYPE_USB][5]);
	g_globalini.WriteInt("UART_Config","usb_port7",g_AppMainData.ary_myComPort[BLUE_TYPE_USB][6]);
	g_globalini.WriteInt("UART_Config","usb_port8",g_AppMainData.ary_myComPort[BLUE_TYPE_USB][7]);
	g_globalini.WriteInt("UART_Config","usb_port9",g_AppMainData.ary_myComPort[BLUE_TYPE_USB][8]);
	g_globalini.WriteInt("UART_Config","usb_port10",g_AppMainData.ary_myComPort[BLUE_TYPE_USB][9]);

	g_globalini.WriteString("BinFilePath","EarBin",g_AppMainData.FilePathEar);
	g_globalini.WriteString("BinFilePath","UsbBin",g_AppMainData.FilePathUsb);


	
	g_globalini.WriteBool("Other_Config","ear_enable1",g_AppMainData.if_flash[BLUE_TYPE_EAR][0]);
	g_globalini.WriteBool("Other_Config","ear_enable2",g_AppMainData.if_flash[BLUE_TYPE_EAR][1]);
	g_globalini.WriteBool("Other_Config","ear_enable3",g_AppMainData.if_flash[BLUE_TYPE_EAR][2]);
	g_globalini.WriteBool("Other_Config","ear_enable4",g_AppMainData.if_flash[BLUE_TYPE_EAR][3]);
	g_globalini.WriteBool("Other_Config","ear_enable5",g_AppMainData.if_flash[BLUE_TYPE_EAR][4]);
	g_globalini.WriteBool("Other_Config","ear_enable6",g_AppMainData.if_flash[BLUE_TYPE_EAR][5]);
	g_globalini.WriteBool("Other_Config","ear_enable7",g_AppMainData.if_flash[BLUE_TYPE_EAR][6]);
	g_globalini.WriteBool("Other_Config","ear_enable8",g_AppMainData.if_flash[BLUE_TYPE_EAR][7]);
	g_globalini.WriteBool("Other_Config","ear_enable9",g_AppMainData.if_flash[BLUE_TYPE_EAR][8]);
	g_globalini.WriteBool("Other_Config","ear_enable10",g_AppMainData.if_flash[BLUE_TYPE_EAR][9]);
	g_globalini.WriteBool("Other_Config","usb_enable1",g_AppMainData.if_flash[BLUE_TYPE_USB][0]);
	g_globalini.WriteBool("Other_Config","usb_enable2",g_AppMainData.if_flash[BLUE_TYPE_USB][1]);
	g_globalini.WriteBool("Other_Config","usb_enable3",g_AppMainData.if_flash[BLUE_TYPE_USB][2]);
	g_globalini.WriteBool("Other_Config","usb_enable4",g_AppMainData.if_flash[BLUE_TYPE_USB][3]);
	g_globalini.WriteBool("Other_Config","usb_enable5",g_AppMainData.if_flash[BLUE_TYPE_USB][4]);
	g_globalini.WriteBool("Other_Config","usb_enable6",g_AppMainData.if_flash[BLUE_TYPE_USB][5]);
	g_globalini.WriteBool("Other_Config","usb_enable7",g_AppMainData.if_flash[BLUE_TYPE_USB][6]);
	g_globalini.WriteBool("Other_Config","usb_enable8",g_AppMainData.if_flash[BLUE_TYPE_USB][7]);
	g_globalini.WriteBool("Other_Config","usb_enable9",g_AppMainData.if_flash[BLUE_TYPE_USB][8]);
	g_globalini.WriteBool("Other_Config","usb_enable10",g_AppMainData.if_flash[BLUE_TYPE_USB][9]);

	return true;
}