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

📄 mdlsysoldlg.cpp

📁 free sources for gsm
💻 CPP
📖 第 1 页 / 共 3 页
字号:
	((CLabel*)GetDlgItem(m_nDisp[4]))->SetBkColor(RGB(0,64,128));
	((CLabel*)GetDlgItem(m_nDisp[4]))->SetWindowText("DOWNLOADER READY");

	if(((CButton*)GetDlgItem(m_nCheck[4]))->GetCheck()) OnButtonX(5);
}

void CMdlSysolDlg::OnButton6() 
{
	// TODO: Add your control notification handler code here

	((CLabel*)GetDlgItem(m_nDisp[5]))->SetBkColor(RGB(0,64,128));
	((CLabel*)GetDlgItem(m_nDisp[5]))->SetWindowText("DOWNLOADER READY");

	if(((CButton*)GetDlgItem(m_nCheck[5]))->GetCheck()) OnButtonX(6);
}

void CMdlSysolDlg::OnButton7() 
{
	// TODO: Add your control notification handler code here

	((CLabel*)GetDlgItem(m_nDisp[6]))->SetBkColor(RGB(0,64,128));
	((CLabel*)GetDlgItem(m_nDisp[6]))->SetWindowText("DOWNLOADER READY");

	if(((CButton*)GetDlgItem(m_nCheck[6]))->GetCheck()) OnButtonX(7);
}

void CMdlSysolDlg::OnButton8() 
{
	// TODO: Add your control notification handler code here

	((CLabel*)GetDlgItem(m_nDisp[7]))->SetBkColor(RGB(0,64,128));
	((CLabel*)GetDlgItem(m_nDisp[7]))->SetWindowText("DOWNLOADER READY");

	if(((CButton*)GetDlgItem(m_nCheck[7]))->GetCheck()) OnButtonX(8);
}

void CMdlSysolDlg::OnButtonDlall() 
{
	// TODO: Add your control notification handler code here

	UpdateData(TRUE);

	for(int i=0; i<DLG_MAX_PORT; i++)
	{
		if(((CButton*)GetDlgItem(m_nCheck[i]))->GetCheck())
		{
			((CLabel*)GetDlgItem(m_nDisp[i]))->SetBkColor(RGB(0,64,128));
			((CLabel*)GetDlgItem(m_nDisp[i]))->SetWindowText("DOWNLOADER START");

			if(m_pDload[i]->GetThreadState() == DL_THREAD_LOCKED)
			{
				if(((CButton*)GetDlgItem(m_nCheck[i]))->GetCheck()) OnButtonX(i+1);
			}
		}
	}
}

void CMdlSysolDlg::OnDloadMsgWorkGo(WPARAM wp, LPARAM lpPort)
{
	CString cstrTmp;
	int nPort = lpPort;

	m_dwStartTick[nPort-1] = GetTickCount();
	m_dwBeforeTick[nPort-1] = m_dwStartTick[nPort-1];
	cstrTmp.Format("00:00");
	((CStatic*)GetDlgItem(m_nElapsed[nPort-1]))->SetWindowText(cstrTmp);

	((CProgressCtrl*)GetDlgItem(m_nProgress[nPort-1]))->SetPos(0);

	cstrTmp.Format("DOWNLOAD START");
	((CLabel*)GetDlgItem(m_nDisp[nPort-1]))->SetBkColor(RGB(0,64,128));
	((CLabel*)GetDlgItem(m_nDisp[nPort-1]))->SetTextColor(RGB(128,255,255));
	((CLabel*)GetDlgItem(m_nDisp[nPort-1]))->SetText(cstrTmp);
}

void CMdlSysolDlg::OnButtonX(int nPort)
{
	CString cstrGoStopX;

	if(((CButton*)GetDlgItem(m_nCheck[nPort-1]))->GetCheck() != TRUE) return;
	
	if(m_nGoStop[nPort-1] == DLG_BTN_TEXT_GO)
	{
		if(m_pDload[nPort-1]->GetThreadState() == DL_THREAD_WORKING) return;

		((CButton*)GetDlgItem(m_nCheck[nPort-1]))->EnableWindow(FALSE);

		OnDloadMsgWorkGo(0, nPort);

		cstrGoStopX.Format("Stop%d", m_nPort+nPort);
		((CButton*)GetDlgItem(m_nBtn[nPort-1]))->SetWindowText(cstrGoStopX);
		m_nGoStop[nPort-1] = DLG_BTN_TEXT_STOP;

		m_pDload[nPort-1]->SetEvt();
	}
	else
	{
		if(m_pDload[nPort-1]->m_nThreadState == DL_THREAD_LOCKED) return;
		((CButton*)GetDlgItem(m_nCheck[nPort-1]))->EnableWindow(TRUE);
		((CButton*)GetDlgItem(m_nBtn[nPort-1]))->EnableWindow(FALSE);
		cstrGoStopX.Format("GO%d", m_nPort+nPort);
		((CButton*)GetDlgItem(m_nBtn[nPort-1]))->SetWindowText(cstrGoStopX);
		m_nGoStop[nPort-1] = DLG_BTN_TEXT_GO;

		m_pDload[nPort-1]->CancelDload();
		Sleep(1000);
	}
}

void CMdlSysolDlg::OnDloadMsgTargetDetect(WPARAM wpTarget, LPARAM lpPort)
{
	CString cstrTmp;
	DWORD dwTick;
	
	int nPort = lpPort - m_nPort;

	if(wpTarget == DL_TARGET_DETECTED)
	{
		((CLabel*)GetDlgItem(m_nDisp[nPort-1]))->SetBkColor(RGB(0,0,255));
		cstrTmp.Format("Target Detected!");
	}

	((CLabel*)GetDlgItem(m_nDisp[nPort-1]))->SetText(cstrTmp);

	dwTick = GetTickCount();
	if(m_dwBeforeTick[nPort-1] - dwTick > 1000)
	{
		m_dwBeforeTick[nPort-1] = dwTick;
		dwTick = dwTick - m_dwStartTick[nPort-1];
		cstrTmp.Format("%02d:%02d",dwTick/(1000*60), (dwTick/1000)%60);
		((CStatic*)GetDlgItem(m_nElapsed[nPort-1]))->SetWindowText(cstrTmp);
	}
}

void CMdlSysolDlg::OnDloadMsgDLloader(WPARAM wpload, LPARAM lpPort)
{
	CString cstrTmp;
	DWORD dwTick;
	
	int nPort = lpPort - m_nPort;

	switch( wpload )
	{
	case DL_LOADER_DONE:
		cstrTmp.Format(" SPM Boot load done ! ");
		break;
	case DL_FLASH_ERASE :
		cstrTmp.Format(" Flash ERASE ! ");
		break;
	case DL_FLASH_BIN_LOADING :
		cstrTmp.Format(" Flash BIN Loading! ");
		break;
	case DL_FLASH_TFS_LOADING :
		cstrTmp.Format(" Flash TFS Loading! ");
		break;
	default :
		break;
	}

	((CLabel*)GetDlgItem(m_nDisp[nPort-1]))->SetText(cstrTmp);

	dwTick = GetTickCount();
	if(m_dwBeforeTick[nPort-1] - dwTick > 1000)
	{
		m_dwBeforeTick[nPort-1] = dwTick;
		dwTick = dwTick - m_dwStartTick[nPort-1];
		cstrTmp.Format("%02d:%02d",dwTick/(1000*60), (dwTick/1000)%60);
		((CStatic*)GetDlgItem(m_nElapsed[nPort-1]))->SetWindowText(cstrTmp);
	}
}

void CMdlSysolDlg::OnDloadMsgProgress(WPARAM wpPercent, LPARAM lpPort)
{
	int nPort = lpPort - m_nPort;
	DWORD dwTick;
	CString cstrTmp;

	((CProgressCtrl*)GetDlgItem(m_nProgress[nPort-1]))->SetPos((int)wpPercent);
	
	dwTick = GetTickCount();
	
	if(m_dwBeforeTick[nPort-1] - dwTick > 1000)
	{
		m_dwBeforeTick[nPort-1] = dwTick;
		dwTick = dwTick - m_dwStartTick[nPort-1];
		cstrTmp.Format("%02d:%02d",dwTick/(1000*60), (dwTick/1000)%60);
		((CStatic*)GetDlgItem(m_nElapsed[nPort-1]))->SetWindowText(cstrTmp);
	}
}

void CMdlSysolDlg::OnDloadErrMsg(WPARAM wpErr, LPARAM lpPort)
{
	int nPort = lpPort - m_nPort;
	DWORD dwTick;
	CString cstrTmp;
	((CLabel*)GetDlgItem(m_nDisp[nPort-1]))->SetBkColor(RGB(255,0,0));

	switch(wpErr)
	{
	case BOOT_CREQ5087_4_ERR:
		cstrTmp.Format("BOOT CREQ5087_4_ERR");
		break;
	case SEND_BOOT_CONFIRM_ERR:
		cstrTmp.Format("SEND BOOT CONFIRM ERR");
		break;
	case CLEAR_DTR_ERR:
		cstrTmp.Format("CLEAR DTR ERR");
		break;
	case SEND_SYSTEM_CFG_ERR:
		cstrTmp.Format("SEND SYSTEM CFG ERR");
		break;
	case SEND_JUMP_ADDR_ERR:
		cstrTmp.Format("SEND JUMP ADDR ERR");
		break;
	case SEND_CHAR_ERR:
		cstrTmp.Format("SEND CHAR ERR");
		break;
	case BOOT_CCON_ERR:
		cstrTmp.Format("BOOT CCON ERR");
		break;
	case STACK_POINTER_ERR:
		cstrTmp.Format("STACK POINTER ERR");
		break;
	case FLASH_TYPE_ACK_ERR:
		cstrTmp.Format("FLASH TYPE ACK ERR");
		break;
	case FLASH_TYPE_READ_ERR:
		cstrTmp.Format("FLASH TYPE READ ERR");
		break;
	case FLASH_TYPE_UNKNOWN:
		cstrTmp.Format("FLASH TYPE UNKNOWN");
		break;
	case SET_GPIO_ERR:
		cstrTmp.Format("SET GPIO ERR");
		break;
	case CHANGE_SPEED_ERR:
		cstrTmp.Format("CHANGE SPEED ERR");
		break;
	case DOWNLOAD_MODULE_ERR:
		cstrTmp.Format("DOWNLOAD MODULE ERR");
		break;
	case GET_SECTOR_LIST_ERR:
		cstrTmp.Format("GET SECTOR LIST ERR");
		break;
	case GET_SECTOR_SIZE_ERR:
		cstrTmp.Format("GET SECTOR SIZE ERR");
		break;
	case DOWNLOAD_SECTOR_ERR:
		cstrTmp.Format("DOWNLOAD SECTOR ERR");
		break;
	case TFS_INIT_ERR:
		cstrTmp.Format("TFS INIT ERR");
		break;
	case TFS_WRITE_VER_ERR:
		cstrTmp.Format("TFS WRITE VER ERR");
		break;
	case TFS_WRITE_PATH_ERR:
		cstrTmp.Format("TFS WRITE PATH ERR");
		break;
	case TFS_WRITE_FILE_ERR:
		cstrTmp.Format("TFS WRITE FILE ERR");
		break;
	case ERASE_SECTOR_ERR:
		cstrTmp.Format("ERASE SECTOR ERR");
		break;
	default :
		cstrTmp.Format("NOT DEFINED ERROR!");
		break;
	}

	((CLabel*)GetDlgItem(m_nDisp[nPort-1]))->SetText(cstrTmp);
	
	dwTick = GetTickCount();
	if(m_dwBeforeTick[nPort-1] - dwTick > 1000)
	{
		m_dwBeforeTick[nPort-1] = dwTick;
		dwTick = dwTick - m_dwStartTick[nPort-1];
		cstrTmp.Format("%02d:%02d",dwTick/(1000*60), (dwTick/1000)%60);
		((CStatic*)GetDlgItem(m_nElapsed[nPort-1]))->SetWindowText(cstrTmp);
	}

	cstrTmp.Format("GO%d", lpPort);
	((CButton*)GetDlgItem(m_nBtn[nPort-1]))->SetWindowText(cstrTmp);
	((CButton*)GetDlgItem(m_nBtn[nPort-1]))->EnableWindow(TRUE);
	m_nGoStop[nPort-1] = DLG_BTN_TEXT_GO;
	((CButton*)GetDlgItem(m_nCheck[nPort-1]))->EnableWindow(TRUE);

	////// ### Send Fail Signal to LCA ### //////
	if(m_nMode == DLG_MODE_AUTO)
	{
		int val=(BYTE) m_Dio.Read(0x301) & (BYTE)(0x01<<(nPort-1));

		if(val)
		{
			if(m_nDioBoardType == BD_DIO_ISA)
			{
				val=(BYTE)m_Dio.Read(0x302);
				m_Dio.Write(0x302, val | (BYTE)(0x01<<(nPort-1)));
				Sleep(500);
				m_Dio.Write(0x302, val);
			}
			else if(m_nDioBoardType == BD_DIO_PCI)
			{
				val = m_Dio.DORead_PCI(0);
				m_Dio.Write_PCI(0, val | (0x01<<(nPort+7)));
				Sleep(500);
				m_Dio.Write_PCI(0, val);
			}
		}
	}
}

void CMdlSysolDlg::OnDloadMsgWorkCancel(WPARAM wp, LPARAM lpPort)
{
	CString cstrTmp;
	int nPort = lpPort - m_nPort;

	cstrTmp.Format("DOWNLOAD CANCELED");
	((CLabel*)GetDlgItem(m_nDisp[nPort-1]))->SetBkColor(RGB(0,100,0));
	((CLabel*)GetDlgItem(m_nDisp[nPort-1]))->SetText(cstrTmp);

	cstrTmp.Format("GO%d", lpPort);
	((CButton*)GetDlgItem(m_nBtn[nPort-1]))->SetWindowText(cstrTmp);
	((CButton*)GetDlgItem(m_nBtn[nPort-1]))->EnableWindow(TRUE);
	m_nGoStop[nPort-1] = DLG_BTN_TEXT_GO;
	((CButton*)GetDlgItem(m_nCheck[nPort-1]))->EnableWindow(TRUE);

	////// ### Send Fail Signal to LCA ### //////
	if(m_nMode == DLG_MODE_AUTO)
	{
		int val=(BYTE) m_Dio.Read(0x301) & (BYTE)(0x01<<(nPort-1));
		
		if(val)
		{
			if(m_nDioBoardType == BD_DIO_ISA)
			{
				val=(BYTE)m_Dio.Read(0x302);
				m_Dio.Write(0x302, val | (BYTE)(0x01<<(nPort-1)));
				Sleep(500);
				m_Dio.Write(0x302, val);
			}
			else if(m_nDioBoardType == BD_DIO_PCI)
			{
				val = m_Dio.DORead_PCI(0);
				m_Dio.Write_PCI(0, val | (0x01<<(nPort+7)));
				Sleep(500);
				m_Dio.Write_PCI(0, val);
			}
		}
	}
	//////#################################//////
}

void CMdlSysolDlg::OnDloadMsgWorkDone(WPARAM wp, LPARAM lpPort)
{
	CString cstrTmp;
	int nPort = lpPort - m_nPort;
	DWORD dwTick;

	cstrTmp.Format("DOWNLOAD OK");
	((CLabel*)GetDlgItem(m_nDisp[nPort-1]))->SetBkColor(RGB(0,255,0));
	((CLabel*)GetDlgItem(m_nDisp[nPort-1]))->SetText(cstrTmp);

	cstrTmp.Format("GO%d", lpPort);
	((CButton*)GetDlgItem(m_nBtn[nPort-1]))->SetWindowText(cstrTmp);
	((CButton*)GetDlgItem(m_nBtn[nPort-1]))->EnableWindow(TRUE);
	m_nGoStop[nPort-1] = DLG_BTN_TEXT_GO;

	((CButton*)GetDlgItem(m_nCheck[nPort-1]))->EnableWindow(TRUE);

	dwTick = GetTickCount();
	dwTick = dwTick - m_dwStartTick[nPort-1];
	cstrTmp.Format("%02d:%02d",dwTick/(1000*60), (dwTick/1000)%60);
	((CStatic*)GetDlgItem(m_nElapsed[nPort-1]))->SetWindowText(cstrTmp);

	////// ### Send PASS Signal to LCA ### //////
	if(m_nMode == DLG_MODE_AUTO)
	{
		int val=(BYTE) m_Dio.Read(0x301) & (BYTE)(0x01<<(nPort-1));
		
		if(val)
		{
			if(m_nDioBoardType == BD_DIO_ISA)
			{
				val=(BYTE)m_Dio.Read(0x300);
				m_Dio.Write(0x300, val | (BYTE)(0x01<<(nPort-1)));
				Sleep(500);
				m_Dio.Write(0x300, val);
			}
			else if(m_nDioBoardType == BD_DIO_PCI)
			{
				val = m_Dio.DORead_PCI(0);
				m_Dio.Write_PCI(0, val | (0x01<<(nPort-1)));
				Sleep(500);
				m_Dio.Write_PCI(0, val);
			}	
		}
	}
	//////#################################//////
}

void CMdlSysolDlg::OnDloadMsgThreadExit(WPARAM wp, LPARAM lpPort)
{
	CString cstrTmp;
	int nPort = lpPort - m_nPort;

	cstrTmp.Format("THREAD EXIT");

	((CLabel*)GetDlgItem(m_nDisp[nPort-1]))->SetText(cstrTmp);
}

void CMdlSysolDlg::OnRadioAuto() 
{
	// TODO: Add your control notification handler code here
	m_nMode = DLG_MODE_AUTO;
	CheckSelectedPort(TRUE);
	SetTimer(1, 500, NULL);
}

void CMdlSysolDlg::OnRadioManual() 
{
	// TODO: Add your control notification handler code here
	m_nMode = DLG_MODE_MANUAL;
	CheckSelectedPort(FALSE);
	KillTimer(1);
}

BYTE CMdlSysolDlg::CheckSelectedPort(BOOL m_bAuto)
{
	int i = 0;
	BYTE PortStatus = 0x00;
	TotalPortStatus = 0x00;
	if(m_bAuto)
	{
		for(i = 0; i<8; i++)
		{
			if(((CButton*)GetDlgItem(m_nCheck[i]))->GetCheck())
			{
				PortStatus = 0x01;
				PortStatus <<= i;
				TotalPortStatus |= PortStatus;
			}
		}
		if(m_nDioBoardType == BD_DIO_ISA)
		{
			m_Dio.Write(0x304, TotalPortStatus);
		}
		else if(m_nDioBoardType == BD_DIO_PCI)
		{
			m_Dio.Write_PCI(1, TotalPortStatus);
		}
	}
	else
	{
		TotalPortStatus = 0x00;
		m_Dio.Write(0x304, TotalPortStatus);
	}

	return PortStatus;
}

void CMdlSysolDlg::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default

	BYTE byteHighDioBitMap = 0;
	BYTE byteLowDioBitMap = 0;

	byteHighDioBitMap = m_Dio.GetNewHighBitMap(m_nDioBoardType);
	byteLowDioBitMap = m_Dio.GetNewLowBitMap(m_nDioBoardType);
	
	for(int i=0; i<8; i++)
	{
		if((byteHighDioBitMap >> i) & 0x01)
		{
			OnButtonX(i+1);
		}
		
		if(((byteLowDioBitMap >> i) & 0x01) && (m_pDload[i]->GetThreadState() == DL_THREAD_WORKING))
		{
			OnButtonX(i+1);
		}
	}

	CDialog::OnTimer(nIDEvent);
}

⌨️ 快捷键说明

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