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

📄 mdlsysoldlg.cpp

📁 free sources for gsm
💻 CPP
📖 第 1 页 / 共 3 页
字号:
// MdlSysolDlg.cpp : implementation file
//

#include "stdafx.h"
#include "MdlSysol.h"
#include "MdlSysolDlg.h"

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

extern CString gl_strModel;
/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About

class CAboutDlg : public CDialog
{
public:
	CAboutDlg();

// Dialog Data
	//{{AFX_DATA(CAboutDlg)
	enum { IDD = IDD_ABOUTBOX };
	//}}AFX_DATA

	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CAboutDlg)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:
	//{{AFX_MSG(CAboutDlg)
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
	//{{AFX_DATA_INIT(CAboutDlg)
	//}}AFX_DATA_INIT
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CAboutDlg)
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
	//{{AFX_MSG_MAP(CAboutDlg)
		// No message handlers
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMdlSysolDlg dialog

CMdlSysolDlg::CMdlSysolDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CMdlSysolDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CMdlSysolDlg)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32

	m_nProgress[0] = IDC_PROGRESS1;
	m_nProgress[1] = IDC_PROGRESS2;
	m_nProgress[2] = IDC_PROGRESS3;
	m_nProgress[3] = IDC_PROGRESS4;
	m_nProgress[4] = IDC_PROGRESS5;
	m_nProgress[5] = IDC_PROGRESS6;
	m_nProgress[6] = IDC_PROGRESS7;
	m_nProgress[7] = IDC_PROGRESS8;

	m_nDisp[0] = IDC_STATIC_DISP1;
	m_nDisp[1] = IDC_STATIC_DISP2;
	m_nDisp[2] = IDC_STATIC_DISP3;
	m_nDisp[3] = IDC_STATIC_DISP4;
	m_nDisp[4] = IDC_STATIC_DISP5;
	m_nDisp[5] = IDC_STATIC_DISP6;
	m_nDisp[6] = IDC_STATIC_DISP7;
	m_nDisp[7] = IDC_STATIC_DISP8;

	m_nDispText[0] = IDC_STATIC_PORT1;
	m_nDispText[1] = IDC_STATIC_PORT2;
	m_nDispText[2] = IDC_STATIC_PORT3;
	m_nDispText[3] = IDC_STATIC_PORT4;
	m_nDispText[4] = IDC_STATIC_PORT5;
	m_nDispText[5] = IDC_STATIC_PORT6;
	m_nDispText[6] = IDC_STATIC_PORT7;
	m_nDispText[7] = IDC_STATIC_PORT8;

	m_nBtn[0] = IDC_BUTTON_1;
	m_nBtn[1] = IDC_BUTTON_2;
	m_nBtn[2] = IDC_BUTTON_3;
	m_nBtn[3] = IDC_BUTTON_4;
	m_nBtn[4] = IDC_BUTTON_5;
	m_nBtn[5] = IDC_BUTTON_6;
	m_nBtn[6] = IDC_BUTTON_7;
	m_nBtn[7] = IDC_BUTTON_8;

	m_nBtnBinOpen	= IDC_BUTTON_BINOPEN;
	m_nBtnTfsOpen	= IDC_BUTTON_TFSOPEN;
	m_nBtnAppCfg	= IDC_BUTTON_APPLYCFG;
	m_nBtnChangeCfg = IDC_BUTTON_CHANGECFG;
	m_nBtnDall		= IDC_BUTTON_DLALL;
	m_nBtnSall		= IDC_BUTTON_SELECTALL;
	m_nBtnAuto		= IDC_RADIO_AUTO;

	m_nCheck[0] = IDC_CHECK1;
	m_nCheck[1] = IDC_CHECK2;
	m_nCheck[2] = IDC_CHECK3;
	m_nCheck[3] = IDC_CHECK4;
	m_nCheck[4] = IDC_CHECK5;
	m_nCheck[5] = IDC_CHECK6;
	m_nCheck[6] = IDC_CHECK7;
	m_nCheck[7] = IDC_CHECK8;

	m_nGoStop[0] = DLG_BTN_TEXT_GO;
	m_nGoStop[1] = DLG_BTN_TEXT_GO;
	m_nGoStop[2] = DLG_BTN_TEXT_GO;
	m_nGoStop[3] = DLG_BTN_TEXT_GO;
	m_nGoStop[4] = DLG_BTN_TEXT_GO;
	m_nGoStop[5] = DLG_BTN_TEXT_GO;
	m_nGoStop[6] = DLG_BTN_TEXT_GO;
	m_nGoStop[7] = DLG_BTN_TEXT_GO;

	m_nElapsed[0] = IDC_STATIC_ELAPSE_1;
	m_nElapsed[1] = IDC_STATIC_ELAPSE_2;
	m_nElapsed[2] = IDC_STATIC_ELAPSE_3;
	m_nElapsed[3] = IDC_STATIC_ELAPSE_4;
	m_nElapsed[4] = IDC_STATIC_ELAPSE_5;
	m_nElapsed[5] = IDC_STATIC_ELAPSE_6;
	m_nElapsed[6] = IDC_STATIC_ELAPSE_7;
	m_nElapsed[7] = IDC_STATIC_ELAPSE_8;

	m_nOpenFile = 0;

	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CMdlSysolDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CMdlSysolDlg)
	DDX_Control(pDX, IDC_STATIC_DISP8, m_LabelDisp8);
	DDX_Control(pDX, IDC_STATIC_DISP7, m_LabelDisp7);
	DDX_Control(pDX, IDC_STATIC_DISP6, m_LabelDisp6);
	DDX_Control(pDX, IDC_STATIC_DISP5, m_LabelDisp5);
	DDX_Control(pDX, IDC_STATIC_DISP4, m_LabelDisp4);
	DDX_Control(pDX, IDC_STATIC_DISP3, m_LabelDisp3);
	DDX_Control(pDX, IDC_STATIC_DISP2, m_LabelDisp2);
	DDX_Control(pDX, IDC_STATIC_DISP1, m_LabelDisp1);
	DDX_Text(pDX, IDC_STATIC_BIN_NAME, m_FileNameBin);
	DDX_Text(pDX, IDC_STATIC_TFS_NAME, m_FileNameTfs);
	DDX_Text(pDX, IDC_STATIC_BINSIZE, m_BinSize);
	DDX_Text(pDX, IDC_STATIC_BINCHECKSUM, m_BinCheckSum);
	DDX_Text(pDX, IDC_STATIC_TFSSIZE, m_TfsSize);
	DDX_Text(pDX, IDC_STATIC_TFSCHECKSUM, m_TfsCheckSum);
	DDX_Control(pDX, IDC_COMBO_DOWNMODE, m_DownMode);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CMdlSysolDlg, CDialog)
	//{{AFX_MSG_MAP(CMdlSysolDlg)
	ON_WM_SYSCOMMAND()
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	ON_CBN_SELCHANGE(IDC_COMBO_DOWNMODE, OnSelchangeDownMode)
	ON_BN_CLICKED(IDC_BUTTON_BINOPEN, OnBinOpen)
	ON_BN_CLICKED(IDC_BUTTON_TFSOPEN, OnTfsOpen)
	ON_BN_CLICKED(IDC_BUTTON_APPLYCFG, OnButtonApplycfg)
	ON_BN_CLICKED(IDC_BUTTON_CHANGECFG, OnButtonChangecfg)
	ON_BN_CLICKED(IDC_BUTTON_EXIT, OnButtonExit)
	ON_BN_CLICKED(IDC_BUTTON_SELECTALL, OnButtonSelectall)
	ON_BN_CLICKED(IDC_CHECK1, OnCheck1)
	ON_BN_CLICKED(IDC_CHECK2, OnCheck2)
	ON_BN_CLICKED(IDC_CHECK3, OnCheck3)
	ON_BN_CLICKED(IDC_CHECK4, OnCheck4)
	ON_BN_CLICKED(IDC_CHECK5, OnCheck5)
	ON_BN_CLICKED(IDC_CHECK6, OnCheck6)
	ON_BN_CLICKED(IDC_CHECK7, OnCheck7)
	ON_BN_CLICKED(IDC_CHECK8, OnCheck8)
	ON_BN_CLICKED(IDC_BUTTON_1, OnButton1)
	ON_BN_CLICKED(IDC_BUTTON_2, OnButton2)
	ON_BN_CLICKED(IDC_BUTTON_3, OnButton3)
	ON_BN_CLICKED(IDC_BUTTON_4, OnButton4)
	ON_BN_CLICKED(IDC_BUTTON_5, OnButton5)
	ON_BN_CLICKED(IDC_BUTTON_6, OnButton6)
	ON_BN_CLICKED(IDC_BUTTON_7, OnButton7)
	ON_BN_CLICKED(IDC_BUTTON_8, OnButton8)
	ON_BN_CLICKED(IDC_BUTTON_DLALL, OnButtonDlall)
	ON_BN_CLICKED(IDC_RADIO_AUTO, OnRadioAuto)
	ON_BN_CLICKED(IDC_RADIO_MANUAL, OnRadioManual)
	ON_WM_TIMER()
	ON_MESSAGE(DL_MSG_WORK_GO, OnDloadMsgWorkGo)
	ON_MESSAGE(DL_MSG_TARGETDETECT, OnDloadMsgTargetDetect)
	ON_MESSAGE(DL_MSG_DLLOADER, OnDloadMsgDLloader)
	ON_MESSAGE(DL_MSG_PROGRESS, OnDloadMsgProgress)
	ON_MESSAGE(DL_MSG_ERR, OnDloadErrMsg)
	ON_MESSAGE(DL_MSG_WORK_CANCEL, OnDloadMsgWorkCancel)
	ON_MESSAGE(DL_MSG_WORK_DONE, OnDloadMsgWorkDone)
	ON_MESSAGE(DL_MSG_THREAD_EXIT, OnDloadMsgThreadExit)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMdlSysolDlg message handlers

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

	// Add "About..." menu item to system menu.

	// IDM_ABOUTBOX must be in the system command range.
	ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
	ASSERT(IDM_ABOUTBOX < 0xF000);

	CMenu* pSysMenu = GetSystemMenu(FALSE);
	if (pSysMenu != NULL)
	{
		CString strAboutMenu;
		strAboutMenu.LoadString(IDS_ABOUTBOX);
		if (!strAboutMenu.IsEmpty())
		{
			pSysMenu->AppendMenu(MF_SEPARATOR);
			pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
		}
	}

	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon
	
	// TODO: Add extra initialization here
	//SetWindowText("Multi Download for NEW Sysol Type - Ver 1.00 (2004.05.20)"); // 20040508 JYH for Start
	//SetWindowText("Multi Download for SYSOL III Type - Ver 1.01 (2004.06.30)"); // 20040628 kskim - E330, D488 ADD
	//SetWindowText("Multi Download for SYSOL III Type - Ver 1.02 (2004.08.23)"); // 20040823 JYH - TFS Download CheckSum Receive Process Change.
	//SetWindowText("Multi Download for SYSOL III Type - Ver 1.03 (2004.09.21)"); // 20040921 JYH - E800/E808 JAVA GAME 柄瘤绰巩力 荐沥.
	SetWindowText("Multi Download for SYSOL III Type - Ver 1.04 (2004.10.09)"); // 20041009 JYH - E630 促款肺靛饶 府悸泅惑 饶沥(促款肺靛 辆丰 CMD昏力)

	//################# OS Version Check ######################//
	OSVERSIONINFO	OsVer;
	OsVer.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
	GetVersionEx(&OsVer);
	switch(OsVer.dwPlatformId)
	{
	case VER_PLATFORM_WIN32_WINDOWS :
		m_uiOSType = WINDOW_TYPE_98;
		break;
		
	case VER_PLATFORM_WIN32_NT :
		m_uiOSType = WINDOW_TYPE_00;
		break;

	default :
		m_uiOSType = UNKNOWN_TYPE;
		break;
	}

	//############################################################//

	// ###### Check if Board is ISA or PCI ###### //
#ifdef	__MDLOADER_SERVICE__
	m_nDioBoardType = BD_DIO_PCI;
#else
	m_nDioBoardType = m_Dio.IsPCIorISA();
	if((m_uiOSType == WINDOW_TYPE_98) || (m_nDioBoardType == BD_DIO_PCI))
	{
		m_Dio.InitVariable(m_nDioBoardType);
	}
#endif
	// ########################################## //

	m_nMode = DLG_MODE_MANUAL;
	((CButton*)GetDlgItem(IDC_RADIO_MANUAL))->SetCheck(TRUE);

	TotalPortStatus = 0x00;

	for(int i=0; i<DLG_MAX_PORT; i++)
	{
		CString dispText;

		m_pDload[i] = (CDownloadThread*)AfxBeginThread(RUNTIME_CLASS(CDownloadThread),
															THREAD_PRIORITY_NORMAL,
															0,
															0, //CREATE_SUSPENDED,
															NULL);
		m_pDload[i]->ResumeThread();

		(CButton*)GetDlgItem(m_nCheck[i])->EnableWindow(FALSE);
		((CProgressCtrl*)GetDlgItem(m_nProgress[i]))->SetRange(0,100);
		((CButton*)GetDlgItem(m_nBtn[i]))->EnableWindow(FALSE);

		((CLabel*)GetDlgItem(m_nDisp[i]))->SetFontSize(13);
		((CLabel*)GetDlgItem(m_nDisp[i]))->SetFontBold(TRUE);
		((CLabel*)GetDlgItem(m_nDisp[i]))->SetTextColor(RGB(128,255,255));
		((CLabel*)GetDlgItem(m_nDisp[i]))->SetBkColor(RGB(0,64,128));

		dispText.Format("Port %d", i+1);
		SetDlgItemText(m_nDispText[i], dispText);

		dispText.Format("GO%d", i+1);
		SetDlgItemText(m_nBtn[i], dispText);
	}

	((CButton*)GetDlgItem(m_nBtnDall))->EnableWindow(FALSE);
	((CButton*)GetDlgItem(m_nBtnAuto))->EnableWindow(FALSE);
	((CButton*)GetDlgItem(m_nBtnSall))->EnableWindow(FALSE);
	((CButton*)GetDlgItem(m_nBtnAppCfg))->EnableWindow(FALSE);
	((CButton*)GetDlgItem(m_nBtnChangeCfg))->EnableWindow(FALSE);

	((CComboBox*)GetDlgItem(IDC_COMBO_PORT))->SetCurSel(0);
	((CComboBox*)GetDlgItem(IDC_COMBO_BAUDRATE))->SetCurSel(2);
	((CComboBox*)GetDlgItem(IDC_COMBO_DOWNMODE))->SetCurSel(0);

	((CComboBox*)GetDlgItem(IDC_COMBO_MODEL))->SetCurSel(0);

#ifndef	__MDLOADER_SERVICE__
	
	if((m_nDioBoardType == BD_DIO_ISA) && (m_uiOSType == WINDOW_TYPE_98))
	{
		m_Dio.Write(0x300, 0x00);
		Sleep(300);
		m_Dio.Write(0x302, 0x00);
		Sleep(300);
		m_Dio.Write(0x304, 0x00);
		Sleep(300);
		m_Dio.Write(0x306, 0x00);
		Sleep(300);
	}
	else if(m_nDioBoardType == BD_DIO_PCI)
	{
		m_Dio.Write_PCI(0, 0x0000);
		Sleep(300);
		m_Dio.Write_PCI(1, 0x0000);
		Sleep(300);
	}
	
#endif

	return TRUE;  // return TRUE  unless you set the focus to a control
}

void CMdlSysolDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
	if ((nID & 0xFFF0) == IDM_ABOUTBOX)
	{
		CAboutDlg dlgAbout;
		dlgAbout.DoModal();
	}
	else
	{
		CDialog::OnSysCommand(nID, lParam);
	}
}

// If you add a minimize button to your dialog, you will need the code below
//  to draw the icon.  For MFC applications using the document/view model,
//  this is automatically done for you by the framework.

void CMdlSysolDlg::OnPaint() 
{
	if (IsIconic())
	{
		CPaintDC dc(this); // device context for painting

		SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

		// Center icon in client rectangle
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;

		// Draw the icon
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CDialog::OnPaint();
	}
}

// The system calls this to obtain the cursor to display while the user drags
//  the minimized window.
HCURSOR CMdlSysolDlg::OnQueryDragIcon()
{
	return (HCURSOR) m_hIcon;
}

void CMdlSysolDlg::OnSelchangeDownMode()
{
	switch(m_nDownMode = m_DownMode.GetCurSel())
	{
	case 0:
		((CButton*)GetDlgItem(m_nBtnBinOpen))->EnableWindow(TRUE);
		((CButton*)GetDlgItem(m_nBtnTfsOpen))->EnableWindow(TRUE);
		break;
	case 1:
		((CButton*)GetDlgItem(m_nBtnBinOpen))->EnableWindow(TRUE);
		((CButton*)GetDlgItem(m_nBtnTfsOpen))->EnableWindow(FALSE);
		break;
	case 2:
		((CButton*)GetDlgItem(m_nBtnBinOpen))->EnableWindow(FALSE);
		((CButton*)GetDlgItem(m_nBtnTfsOpen))->EnableWindow(TRUE);
		break;
	}

	if(!m_DownMode.GetCurSel() && m_nOpenFile > 1)
	{
		((CButton*)GetDlgItem(m_nBtnAppCfg))->EnableWindow(TRUE);
	}
	else if(m_DownMode.GetCurSel() && m_nOpenFile == 1)
	{
		((CButton*)GetDlgItem(m_nBtnAppCfg))->EnableWindow(TRUE);
	}
	else
	{
		((CButton*)GetDlgItem(m_nBtnAppCfg))->EnableWindow(FALSE);
	}

	UpdateData(FALSE);
}

void CMdlSysolDlg::OnBinOpen()
{
	char szFilter[100];
	char szBinPath[255];

	strcpy(szFilter, "Bianry File(*.bin,*.cla)|*.bin;*.cla|*.*|*.*||");
	strcpy(szBinPath, m_FileNameBin);
	m_FileNameBin.Format("%s", szBinPath);

	CFileDialog dlg(TRUE, NULL, m_FileNameBin, OFN_HIDEREADONLY | OFN_NOCHANGEDIR, szFilter);

	if(dlg.DoModal() == IDOK)
	{
		CString strFilterExt;

		strFilterExt = dlg.GetFileExt();

		strFilterExt.MakeLower();

		m_FileNameBin = dlg.GetPathName();

		CalculationChecksum(m_FileNameBin,0);
		ShowFileSize(m_FileNameBin, 0);

		m_nOpenFile++;

		UpdateData(FALSE);
	}

	if(!m_DownMode.GetCurSel() && m_nOpenFile > 1)
	{
		((CButton*)GetDlgItem(m_nBtnAppCfg))->EnableWindow(TRUE);
	}
	else if(m_DownMode.GetCurSel() && m_nOpenFile == 1)
	{
		((CButton*)GetDlgItem(m_nBtnAppCfg))->EnableWindow(TRUE);
	}
	else
	{
		((CButton*)GetDlgItem(m_nBtnAppCfg))->EnableWindow(FALSE);
	}
}

void CMdlSysolDlg::OnTfsOpen()
{
	char szFilter[100];
	char szTfsPath[255];

	strcpy(szFilter, "TFS File(*.tfs)|*.tfs|*.*|*.*||");
	strcpy(szTfsPath, m_FileNameTfs);
	m_FileNameTfs.Format("%s", szTfsPath);

	CFileDialog dlg(TRUE, NULL, m_FileNameTfs, OFN_HIDEREADONLY | OFN_NOCHANGEDIR, szFilter);

⌨️ 快捷键说明

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