📄 mdlsysoldlg.cpp
字号:
// 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 + -