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

📄 mdlsysoldlg.cpp

📁 free sources for gsm
💻 CPP
📖 第 1 页 / 共 3 页
字号:

	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 + -