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