📄 mdlsysoldlg.cpp
字号:
if(dlg.DoModal() == IDOK)
{
CString strFilterExt;
strFilterExt = dlg.GetFileExt();
strFilterExt.MakeLower();
m_FileNameTfs = dlg.GetPathName();
CalculationChecksum(m_FileNameTfs, 1);
ShowFileSize(m_FileNameTfs,1);
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::CalculationChecksum(CString Filename, UINT Mode)
{
CFile File;
DWORD Checksum = 0;
BYTE * buffer;
if(File.Open(Filename, CFile::modeRead | CFile::typeBinary | CFile::shareDenyNone))
{
DWORD i;
DWORD FileLength = File.GetLength();
buffer = new BYTE[FileLength];
File.ReadHuge(buffer,FileLength);
File.Close();
for( i=0; i < FileLength; i++ )
{
Checksum += buffer[i];
}
CString str;
str.Format("0x%lX",Checksum);
if(Mode == 0)
{
m_BinCheckSum = str;
for(i=0; i<DLG_MAX_PORT; i++)
{
if(m_pDload[i]->m_pFileClaData != NULL)
{
delete m_pDload[i]->m_pFileClaData;
m_pDload[i]->m_pFileClaData = new BYTE[FileLength];
}
else
{
m_pDload[i]->m_pFileClaData = new BYTE[FileLength];
}
memset(m_pDload[i]->m_pFileClaData, 0x00, FileLength);
memcpy(m_pDload[i]->m_pFileClaData, buffer, FileLength);
m_pDload[i]->m_dwBinLength = FileLength;
}
}
else
{
m_TfsCheckSum = str;
for(i=0; i<DLG_MAX_PORT; i++)
{
if(m_pDload[i]->m_pFileTFSData != NULL)
{
delete m_pDload[i]->m_pFileTFSData;
m_pDload[i]->m_pFileTFSData = new BYTE[FileLength];
}
else
{
m_pDload[i]->m_pFileTFSData = new BYTE[FileLength];
}
memset(m_pDload[i]->m_pFileTFSData, 0x00, FileLength);
memcpy(m_pDload[i]->m_pFileTFSData, buffer, FileLength);
m_pDload[i]->m_dwTfsLength = FileLength;
m_pDload[i]->InitTFSDescription(Filename);
}
}
UpdateData(FALSE);
delete buffer;
}
else
{
;
}
}
void CMdlSysolDlg::ShowFileSize(CString Filename, UINT Mode)
{
CFile File;
if(File.Open(Filename,CFile::modeRead | CFile::typeBinary | CFile::shareDenyNone))
{
DWORD FileLength = File.GetLength();
File.Close();
CString str;
str.Format("%ld",FileLength);
if(Mode == 0)
{
m_BinSize = str;
}
else
{
m_TfsSize = str;
}
UpdateData(FALSE);
}
else
{
;
}
}
void CMdlSysolDlg::OnButtonApplycfg()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
m_nPort = ((CComboBox*)GetDlgItem(IDC_COMBO_PORT))->GetCurSel();
m_nDownMode = ((CComboBox*)GetDlgItem(IDC_COMBO_DOWNMODE))->GetCurSel();
if(((CComboBox*)GetDlgItem(IDC_COMBO_BAUDRATE))->GetCurSel() == 0)
{
m_nBaudRate = 115200;
}
else if(((CComboBox*)GetDlgItem(IDC_COMBO_BAUDRATE))->GetCurSel() == 1)
{
m_nBaudRate = 230400;
}
else
{
m_nBaudRate = 460800;
}
int nPos = ((CComboBox*)GetDlgItem(IDC_COMBO_MODEL))->GetCurSel();
((CComboBox*)GetDlgItem(IDC_COMBO_MODEL))->GetLBText(nPos, gl_strModel);
for(int i=0; i<DLG_MAX_PORT; i++)
{
CString dispText;
m_pDload[i]->SetOwner((CWnd*)this);
m_pDload[i]->SetPort(m_nPort+1+i);
m_pDload[i]->SetDownloadMode(m_nDownMode);
m_pDload[i]->SetBaud(m_nBaudRate);
m_pDload[i]->SetBinPathName(m_FileNameBin);
m_pDload[i]->SetTfsPathName(m_FileNameTfs);
((CLabel*)GetDlgItem(m_nDisp[i]))->SetBkColor(RGB(0,64,128));
((CLabel*)GetDlgItem(m_nDisp[i]))->SetWindowText("DOWNLOADER READY");
dispText.Format("Port %d", i+1+m_nPort);
SetDlgItemText(m_nDispText[i], dispText);
dispText.Format("GO%d", i+1+m_nPort);
SetDlgItemText(m_nBtn[i], dispText);
((CButton*)GetDlgItem(m_nCheck[i]))->EnableWindow(TRUE);
if(((CButton*)GetDlgItem(m_nCheck[i]))->GetCheck())
((CButton*)GetDlgItem(m_nBtn[i]))->EnableWindow(TRUE);
m_pDload[i]->InitFlashDescription();
if(m_nDownMode == 0 || m_nDownMode == 2)
{
m_pDload[i]->InitTFSDescription(m_FileNameTfs);
}
}
((CButton*)GetDlgItem(m_nBtnDall))->EnableWindow(TRUE);
((CButton*)GetDlgItem(m_nBtnSall))->EnableWindow(TRUE);
((CButton*)GetDlgItem(IDC_BUTTON_APPLYCFG))->EnableWindow(FALSE);
((CButton*)GetDlgItem(IDC_BUTTON_CHANGECFG))->EnableWindow(TRUE);
((CComboBox*)GetDlgItem(IDC_COMBO_MODEL))->EnableWindow(FALSE);
((CComboBox*)GetDlgItem(IDC_COMBO_PORT))->EnableWindow(FALSE);
((CComboBox*)GetDlgItem(IDC_COMBO_BAUDRATE))->EnableWindow(FALSE);
((CComboBox*)GetDlgItem(IDC_COMBO_DOWNMODE))->EnableWindow(FALSE);
if((m_nDioBoardType == BD_DIO_ISA) && (m_uiOSType == WINDOW_TYPE_00))
{
AfxMessageBox(" The ISA DIO Board don't work in The OS. Window 2000 Type! ");
}
else
{
((CButton*)GetDlgItem(m_nBtnAuto))->EnableWindow(TRUE);
}
m_nOpenFile = 0;
}
void CMdlSysolDlg::OnButtonChangecfg()
{
for(int i=0; i<DLG_MAX_PORT; i++)
{
CString dispText;
((CLabel*)GetDlgItem(m_nDisp[i]))->SetBkColor(RGB(0,64,128));
((CLabel*)GetDlgItem(m_nDisp[i]))->SetWindowText("");
((CButton*)GetDlgItem(m_nBtn[i]))->EnableWindow(FALSE);
((CButton*)GetDlgItem(m_nCheck[i]))->EnableWindow(FALSE);
dispText.Format("Port %d", i+1+m_nPort);
SetDlgItemText(m_nDispText[i], dispText);
dispText.Format("GO%d", i+1+m_nPort);
SetDlgItemText(m_nBtn[i], dispText);
}
((CButton*)GetDlgItem(m_nBtnDall))->EnableWindow(FALSE);
((CButton*)GetDlgItem(m_nBtnSall))->EnableWindow(FALSE);
((CButton*)GetDlgItem(IDC_BUTTON_APPLYCFG))->EnableWindow(FALSE);
((CButton*)GetDlgItem(IDC_BUTTON_CHANGECFG))->EnableWindow(FALSE);
((CComboBox*)GetDlgItem(IDC_COMBO_MODEL))->EnableWindow(TRUE);
((CComboBox*)GetDlgItem(IDC_COMBO_PORT))->EnableWindow(TRUE);
((CComboBox*)GetDlgItem(IDC_COMBO_BAUDRATE))->EnableWindow(TRUE);
((CComboBox*)GetDlgItem(IDC_COMBO_DOWNMODE))->EnableWindow(TRUE);
m_FileNameBin = "";
m_FileNameTfs = "";
m_nOpenFile = 0;
UpdateData(FALSE);
}
void CMdlSysolDlg::OnButtonExit()
{
// TODO: Add your control notification handler code here
int nWorkingPort = 0;
for(int i=0; i<DLG_MAX_PORT; i++)
{
if(m_pDload[i]->GetThreadState() != DL_THREAD_LOCKED)
nWorkingPort++;
}
if(nWorkingPort)
{
if(IDNO == AfxMessageBox(" Now Be Downloading. If you wanna exit the Program, push the Button[YES], \n\n Or Push the Button[NO]",MB_YESNO))
{
return;
}
}
Sleep(2000);
for(i=0; i<DLG_MAX_PORT; i++)
{
if(m_pDload[i] == NULL) continue;
DWORD dwExitCode;
GetExitCodeThread(m_pDload[i]->GetThreadHandle(), &dwExitCode);
TerminateThread(m_pDload[i]->GetThreadHandle(), dwExitCode);
m_pDload[i]->ExitInstance();
m_pDload[i]->Destroy();
m_pDload[i] = NULL;
Sleep(100);
}
#ifndef __MDLOADER_SERVICE__
if((m_nDioBoardType == BD_DIO_ISA) && (m_uiOSType == WINDOW_TYPE_98))
{
m_Dio.Write(0x304, 0x00);
Sleep(300);
m_Dio.Write(0x300, 0x00);
Sleep(300);
m_Dio.Write(0x301, 0x00);
Sleep(300);
}
else if(m_nDioBoardType == BD_DIO_PCI)
{
m_Dio.Write_PCI(0, 0x0000);
m_Dio.Write_PCI(1, 0x0000);
}
#endif
CDialog::OnCancel();
}
void CMdlSysolDlg::OnButtonSelectall()
{
// TODO: Add your control notification handler code here
((CButton*)GetDlgItem(IDC_CHECK1))->SetCheck(TRUE);
((CButton*)GetDlgItem(IDC_CHECK2))->SetCheck(TRUE);
((CButton*)GetDlgItem(IDC_CHECK3))->SetCheck(TRUE);
((CButton*)GetDlgItem(IDC_CHECK4))->SetCheck(TRUE);
((CButton*)GetDlgItem(IDC_CHECK5))->SetCheck(TRUE);
((CButton*)GetDlgItem(IDC_CHECK6))->SetCheck(TRUE);
((CButton*)GetDlgItem(IDC_CHECK7))->SetCheck(TRUE);
((CButton*)GetDlgItem(IDC_CHECK8))->SetCheck(TRUE);
((CButton*)GetDlgItem(IDC_BUTTON_1))->EnableWindow(TRUE);
((CButton*)GetDlgItem(IDC_BUTTON_2))->EnableWindow(TRUE);
((CButton*)GetDlgItem(IDC_BUTTON_3))->EnableWindow(TRUE);
((CButton*)GetDlgItem(IDC_BUTTON_4))->EnableWindow(TRUE);
((CButton*)GetDlgItem(IDC_BUTTON_5))->EnableWindow(TRUE);
((CButton*)GetDlgItem(IDC_BUTTON_6))->EnableWindow(TRUE);
((CButton*)GetDlgItem(IDC_BUTTON_7))->EnableWindow(TRUE);
((CButton*)GetDlgItem(IDC_BUTTON_8))->EnableWindow(TRUE);
if(m_nMode == DLG_MODE_AUTO )
{
CheckSelectedPort(TRUE);
}
}
void CMdlSysolDlg::OnCheckFlashErase()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
}
void CMdlSysolDlg::OnCheck1()
{
// TODO: Add your control notification handler code here
BOOL PortUsed = FALSE;
PortUsed = ((CButton*)GetDlgItem(IDC_CHECK1))->GetCheck();
((CButton*)GetDlgItem(IDC_BUTTON_1))->EnableWindow(PortUsed);
if(m_nMode == DLG_MODE_AUTO )
{
CheckSelectedPort(TRUE);
}
}
void CMdlSysolDlg::OnCheck2()
{
// TODO: Add your control notification handler code here
BOOL PortUsed = FALSE;
PortUsed = ((CButton*)GetDlgItem(IDC_CHECK2))->GetCheck();
((CButton*)GetDlgItem(IDC_BUTTON_2))->EnableWindow(PortUsed);
if(m_nMode == DLG_MODE_AUTO )
{
CheckSelectedPort(TRUE);
}
}
void CMdlSysolDlg::OnCheck3()
{
// TODO: Add your control notification handler code here
BOOL PortUsed = FALSE;
PortUsed = ((CButton*)GetDlgItem(IDC_CHECK3))->GetCheck();
((CButton*)GetDlgItem(IDC_BUTTON_3))->EnableWindow(PortUsed);
if(m_nMode == DLG_MODE_AUTO )
{
CheckSelectedPort(TRUE);
}
}
void CMdlSysolDlg::OnCheck4()
{
// TODO: Add your control notification handler code here
BOOL PortUsed = FALSE;
PortUsed = ((CButton*)GetDlgItem(IDC_CHECK4))->GetCheck();
((CButton*)GetDlgItem(IDC_BUTTON_4))->EnableWindow(PortUsed);
}
void CMdlSysolDlg::OnCheck5()
{
// TODO: Add your control notification handler code here
BOOL PortUsed = FALSE;
PortUsed = ((CButton*)GetDlgItem(IDC_CHECK5))->GetCheck();
((CButton*)GetDlgItem(IDC_BUTTON_5))->EnableWindow(PortUsed);
if(m_nMode == DLG_MODE_AUTO )
{
CheckSelectedPort(TRUE);
}
}
void CMdlSysolDlg::OnCheck6()
{
// TODO: Add your control notification handler code here
BOOL PortUsed = FALSE;
PortUsed = ((CButton*)GetDlgItem(IDC_CHECK6))->GetCheck();
((CButton*)GetDlgItem(IDC_BUTTON_6))->EnableWindow(PortUsed);
if(m_nMode == DLG_MODE_AUTO )
{
CheckSelectedPort(TRUE);
}
}
void CMdlSysolDlg::OnCheck7()
{
// TODO: Add your control notification handler code here
BOOL PortUsed = FALSE;
PortUsed = ((CButton*)GetDlgItem(IDC_CHECK7))->GetCheck();
((CButton*)GetDlgItem(IDC_BUTTON_7))->EnableWindow(PortUsed);
if(m_nMode == DLG_MODE_AUTO )
{
CheckSelectedPort(TRUE);
}
}
void CMdlSysolDlg::OnCheck8()
{
// TODO: Add your control notification handler code here
BOOL PortUsed = FALSE;
PortUsed = ((CButton*)GetDlgItem(IDC_CHECK8))->GetCheck();
((CButton*)GetDlgItem(IDC_BUTTON_8))->EnableWindow(PortUsed);
if(m_nMode == DLG_MODE_AUTO )
{
CheckSelectedPort(TRUE);
}
}
void CMdlSysolDlg::OnButton1()
{
// TODO: Add your control notification handler code here
((CLabel*)GetDlgItem(m_nDisp[0]))->SetBkColor(RGB(0,64,128));
((CLabel*)GetDlgItem(m_nDisp[0]))->SetWindowText("DOWNLOADER READY");
if(((CButton*)GetDlgItem(m_nCheck[0]))->GetCheck()) OnButtonX(1);
}
void CMdlSysolDlg::OnButton2()
{
// TODO: Add your control notification handler code here
((CLabel*)GetDlgItem(m_nDisp[1]))->SetBkColor(RGB(0,64,128));
((CLabel*)GetDlgItem(m_nDisp[1]))->SetWindowText("DOWNLOADER READY");
if(((CButton*)GetDlgItem(m_nCheck[1]))->GetCheck()) OnButtonX(2);
}
void CMdlSysolDlg::OnButton3()
{
// TODO: Add your control notification handler code here
((CLabel*)GetDlgItem(m_nDisp[2]))->SetBkColor(RGB(0,64,128));
((CLabel*)GetDlgItem(m_nDisp[2]))->SetWindowText("DOWNLOADER READY");
if(((CButton*)GetDlgItem(m_nCheck[2]))->GetCheck()) OnButtonX(3);
}
void CMdlSysolDlg::OnButton4()
{
// TODO: Add your control notification handler code here
((CLabel*)GetDlgItem(m_nDisp[3]))->SetBkColor(RGB(0,64,128));
((CLabel*)GetDlgItem(m_nDisp[3]))->SetWindowText("DOWNLOADER READY");
if(((CButton*)GetDlgItem(m_nCheck[3]))->GetCheck()) OnButtonX(4);
}
void CMdlSysolDlg::OnButton5()
{
// TODO: Add your control notification handler code here
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -