?? usbispdlg.cpp
字號:
else a.Format("·文件大小 %s 待下載數據 [%d]byte.",strFileSize,m_nELength);
ShowMsg(a);
}
else
{
ShowMsg("打開文件失敗.");
return FALSE;
}
}
else
{
ShowMsg("請先打開文件.");
return FALSE;
}
return TRUE;
}
void CUSBISPDlg::OnBtnAuto()
{
// TODO: Add your control notification handler code here
ShowMsg("----------------開始自動下載------------------",TRUE);//清空原有文本
OpenHexFile();
if(!m_Isp.chipInit())
{
ShowMsg("下載器初始化出錯!");
m_ISPFAL+=1;
return;
}
if(!m_Isp.chipEntryProgram())
{
ShowMsg("下載器初始化出錯!");
m_ISPFAL+=1;
return;
}
unsigned char ChipSign[3];
if(ProcParam.bSignRead==TRUE) if(!m_Isp.chipSignature(ChipSign))
{
ShowMsg("沒檢到器件!");
m_ISPFAL+=1;
return;
}
if(ProcParam.bErasure==TRUE)
{
if(!m_Isp.chipErasure())
{
ShowMsg("芯片擦除失敗!");
m_ISPFAL+=1;
return;
}
else
{
ShowMsg("·芯片擦除完成!");
}
}
//寫塊 flashoreeprom=0 flash, flashoreeprom=1 eeprom
if(ProcParam.bWFlash==TRUE)
{
if(!m_Isp.chipPageWrite(0,m_pWriteBuf,m_ChipType.page_size,m_nLength))
{
ShowMsg("寫器件錯誤.");
m_ISPFAL+=1;
return;
}
else
{
ShowMsg("·寫器件完成.");
}
}
//寫塊 flashoreeprom=0 flash, flashoreeprom=1 eeprom
if(ProcParam.bWEEPROM==TRUE && m_ChipType.FType!=S5x)
{
if(!m_Isp.chipPageWrite(1,m_pEWriteBuf,m_ChipType.epageSize,m_nELength))
{
ShowMsg("寫器件錯誤.");
m_ISPFAL+=1;
return;
}
else
{
ShowMsg("·寫器件完成.");
}
}
//讀塊 flashoreeprom=0 flash, flashoreeprom=1 eeprom
if(ProcParam.bCheckFlash==TRUE)
{
if(!m_Isp.chipPageRead(0,m_pReadBuf,m_nLength))
{
ShowMsg("讀器件錯誤.");
return;
}
else
{
ShowMsg("·讀器件完成.");
int nDefirentBye=memcmp(m_pReadBuf,m_pWriteBuf,m_nLength);
CString a;
if(!nDefirentBye)
{
a.Format("·校驗完成.共寫入%d字節,錯誤%d字節.",m_nLength,nDefirentBye);
ShowMsg(a);
}
else
{
m_ISPFAL+=1;
a.Format("校驗完成.共寫入%d字節,錯誤%d字節.",m_nLength,nDefirentBye);
ShowMsg("校驗失敗.");
}
}
}
m_Isp.chipProcOver();
CString a;
a.Format("·自動寫器件完成.");
ShowMsg(a);
a.Format("·成功下載%d次,失敗%d次",++m_ISPSEC,m_ISPFAL);
ShowMsg("----------------本次操作完成------------------\r\n");
SetDlgItemText(IDC_EDIT2,a);
}
void CUSBISPDlg::OnDestroy()
{
CDialog::OnDestroy();
// TODO: Add your message handler code here
GlobalFree(m_pReadBuf);
GlobalFree(m_pWriteBuf);
}
void CUSBISPDlg::OnBtnLock()
{
// TODO: Add your control notification handler code here
if(!m_Isp.chipInit())
{
ShowMsg("下載器初始化出錯!");
m_ISPFAL+=1;
return;
}
if(!m_Isp.chipEntryProgram())
{
ShowMsg("下載器初始化出錯!");
m_ISPFAL+=1;
return;
}
unsigned char *nLock=new unsigned char[1];
if(!m_Isp.chipRWLock((m_ChipType.FType==0?1:5),nLock))
{
ShowMsg("讀特征字出錯!");
m_ISPFAL+=1;
return;
}
GetDlgItem(IDC_EDIT1)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_MSFLEXGRID1)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_TREE1)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_BTN_LF_READ)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_BTN_LF_WRITE)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_BTN_LF_READ)->SetWindowText("讀加密位");
GetDlgItem(IDC_BTN_LF_WRITE)->SetWindowText("寫加密位");
GetDlgItem(IDC_BTN_LF_EXIT)->SetWindowText("退出編輯");
GetDlgItem(IDC_BTN_LF_EXIT)->ShowWindow(SW_SHOW);
((CTreeCtrl *)GetDlgItem(IDC_TREE1))->DeleteAllItems();
//((CTreeCtrl *)GetDlgItem(IDC_TREE1))->SetBkColor(RGB(167,204,255));
((CTreeCtrl *)GetDlgItem(IDC_TREE1))->SetItemHeight(20);
if(m_ChipType.FType) //S5X類型
{
((CTreeCtrl *)GetDlgItem(IDC_TREE1))->InsertItem("NA");
((CTreeCtrl *)GetDlgItem(IDC_TREE1))->InsertItem("NA");
((CTreeCtrl *)GetDlgItem(IDC_TREE1))->InsertItem("NA");
((CTreeCtrl *)GetDlgItem(IDC_TREE1))->InsertItem("3 未用到");
((CTreeCtrl *)GetDlgItem(IDC_TREE1))->InsertItem("2 未用到");
((CTreeCtrl *)GetDlgItem(IDC_TREE1))->InsertItem("Lock1 禁用擴展ROM");
((CTreeCtrl *)GetDlgItem(IDC_TREE1))->InsertItem("Lock2 禁止讀器件");
((CTreeCtrl *)GetDlgItem(IDC_TREE1))->InsertItem("Lock3 禁止MOVC指令和再編程");
}
else
{
if(m_ChipType.Name[0]=='A' && m_ChipType.Name[1]=='t' && m_ChipType.Name[2]=='m') //Atmega型芯片
{
((CTreeCtrl *)GetDlgItem(IDC_TREE1))->InsertItem("BLB01");
((CTreeCtrl *)GetDlgItem(IDC_TREE1))->InsertItem("BLB02");
((CTreeCtrl *)GetDlgItem(IDC_TREE1))->InsertItem("BLB11");
((CTreeCtrl *)GetDlgItem(IDC_TREE1))->InsertItem("BLB12");
((CTreeCtrl *)GetDlgItem(IDC_TREE1))->InsertItem("NoLock");
((CTreeCtrl *)GetDlgItem(IDC_TREE1))->InsertItem("Lock1");
((CTreeCtrl *)GetDlgItem(IDC_TREE1))->InsertItem("Lock2");
((CTreeCtrl *)GetDlgItem(IDC_TREE1))->InsertItem("NA");
}
else //其它芯片
{
((CTreeCtrl *)GetDlgItem(IDC_TREE1))->InsertItem("NA");
((CTreeCtrl *)GetDlgItem(IDC_TREE1))->InsertItem("NA");
((CTreeCtrl *)GetDlgItem(IDC_TREE1))->InsertItem("NA");
((CTreeCtrl *)GetDlgItem(IDC_TREE1))->InsertItem("NA");
((CTreeCtrl *)GetDlgItem(IDC_TREE1))->InsertItem("NoLock");
((CTreeCtrl *)GetDlgItem(IDC_TREE1))->InsertItem("Lock1");
((CTreeCtrl *)GetDlgItem(IDC_TREE1))->InsertItem("Lock2");
((CTreeCtrl *)GetDlgItem(IDC_TREE1))->InsertItem("NA");
}
}
//將讀到的加密位寫入到Ctree中
HTREEITEM hTreeItem=((CTreeCtrl *)GetDlgItem(IDC_TREE1))->GetFirstVisibleItem();
unsigned int tmp=*nLock;
for(unsigned char i=0;i<8;i++)
{
unsigned int tmp2=0x80;
tmp2=(tmp2>>i) & tmp;
((CTreeCtrl *)GetDlgItem(IDC_TREE1))->SelectItem(hTreeItem);
if(tmp2>0) ((CTreeCtrl *)GetDlgItem(IDC_TREE1))->SetCheck(hTreeItem,1);
else ((CTreeCtrl *)GetDlgItem(IDC_TREE1))->SetCheck(hTreeItem,0);
hTreeItem=((CTreeCtrl *)GetDlgItem(IDC_TREE1))->GetNextVisibleItem(hTreeItem);
}
//*nLock為讀到的特征字
delete[] nLock;
}
void CUSBISPDlg::OnBtnFuse()
{
// TODO: Add your control notification handler code here
GetDlgItem(IDC_EDIT1)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_MSFLEXGRID1)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_TREE1)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_BTN_LF_READ)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_BTN_LF_WRITE)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_BTN_LF_EXIT)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_BTN_LF_READ)->SetWindowText("讀熔絲位");
GetDlgItem(IDC_BTN_LF_WRITE)->SetWindowText("寫熔絲位");
GetDlgItem(IDC_BTN_LF_EXIT)->SetWindowText("退出編輯");
}
void CUSBISPDlg::OnBtnLfExit()
{
// TODO: Add your control notification handler code here
GetDlgItem(IDC_EDIT1)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_TREE1)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_BTN_LF_READ)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_BTN_LF_WRITE)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_BTN_LF_EXIT)->ShowWindow(SW_HIDE);
}
void CUSBISPDlg::OnSelchangedTree1(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
// TODO: Add your control notification handler code here
HTREEITEM hTreeItem=((CTreeCtrl *)GetDlgItem(IDC_TREE1))->GetSelectedItem();
BOOL bChecked=((CTreeCtrl *)GetDlgItem(IDC_TREE1))->GetCheck(hTreeItem);
if(!bChecked) ((CTreeCtrl *)GetDlgItem(IDC_TREE1))->SetCheck(hTreeItem,1);
else ((CTreeCtrl *)GetDlgItem(IDC_TREE1))->SetCheck(hTreeItem,0);
*pResult = 0;
}
void CUSBISPDlg::OnRclickTree1(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
HTREEITEM hTreeItem=((CTreeCtrl *)GetDlgItem(IDC_TREE1))->GetSelectedItem();
BOOL bChecked=((CTreeCtrl *)GetDlgItem(IDC_TREE1))->GetCheck(hTreeItem);
if(!bChecked) ((CTreeCtrl *)GetDlgItem(IDC_TREE1))->SetCheck(hTreeItem,1);
else ((CTreeCtrl *)GetDlgItem(IDC_TREE1))->SetCheck(hTreeItem,0);
*pResult = 0;
}
void CUSBISPDlg::OnBtnLfRead()
{
// TODO: Add your control notification handler code here
if(!m_Isp.chipInit())
{
ShowMsg("下載器初始化出錯!");
m_ISPFAL+=1;
return;
}
if(!m_Isp.chipEntryProgram())
{
ShowMsg("下載器初始化出錯!");
m_ISPFAL+=1;
return;
}
CString a;
GetDlgItem(IDC_BTN_LF_READ)->GetWindowText(a);
if(!strcmp(a,"讀加密位"))
{
unsigned char *nLock=new unsigned char[1];
if(!m_Isp.chipRWLock((m_ChipType.FType==0?1:5),nLock))
{
ShowMsg("讀特征字出錯!");
m_ISPFAL+=1;
return;
}
//將讀到的加密位寫入到Ctree中
HTREEITEM hTreeItem=((CTreeCtrl *)GetDlgItem(IDC_TREE1))->GetFirstVisibleItem();
unsigned int tmp=*nLock;
for(unsigned char i=0;i<8;i++)
{
unsigned int tmp2=0x80;
tmp2=(tmp2>>i) & tmp;
((CTreeCtrl *)GetDlgItem(IDC_TREE1))->SelectItem(hTreeItem);
if(tmp2>0) ((CTreeCtrl *)GetDlgItem(IDC_TREE1))->SetCheck(hTreeItem,1);
else ((CTreeCtrl *)GetDlgItem(IDC_TREE1))->SetCheck(hTreeItem,0);
hTreeItem=((CTreeCtrl *)GetDlgItem(IDC_TREE1))->GetNextVisibleItem(hTreeItem);
}
//*nLock為讀到的特征字
delete[] nLock;
}
}
BEGIN_EVENTSINK_MAP(CUSBISPDlg, CDialog)
//{{AFX_EVENTSINK_MAP(CUSBISPDlg)
ON_EVENT(CUSBISPDlg, IDC_MSFLEXGRID1, 69 /* SelChange */, OnSelChangeMsflexgrid, VTS_NONE)
//}}AFX_EVENTSINK_MAP
END_EVENTSINK_MAP()
void CUSBISPDlg::OnSelChangeMsflexgrid()
{
// TODO: Add your control notification handler code here
}
void CUSBISPDlg::OnBtnReadEeprom()
{
// TODO: Add your control notification handler code here
// TODO: Add your control notification handler code here
unsigned char ChipSign[3];
if(!m_Isp.chipInit())
{
ShowMsg("下載器初始化出錯!");
return;
}
if(m_ChipType.FType==S5x)
{
ShowMsg("S51系列沒有內置EEPROM!");
return;
}
if(!m_Isp.chipEntryProgram())
{
ShowMsg("下載器初始化出錯!");
return;
}
if(!m_Isp.chipSignature(ChipSign))
{
ShowMsg("沒檢到器件!");
return;
}
//讀塊 flashoreeprom=0 flash, flashoreeprom=1 eeprom
if(!m_Isp.chipPageRead(1,m_pEReadBuf,m_ChipType.eepromSize))
{
ShowMsg("讀器件錯誤.");
return;
}
m_Isp.chipProcOver();
CString a;
a.Format("讀器件完成.");
ShowMsg(a);
}
void CUSBISPDlg::OnBtnEfileOpen()
{
// TODO: Add your control notification handler code here
// TODO: Add your control notification handler code here
static CFileDialog m_FileDlg(TRUE,"bin",NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,"Intel Hex文件(*.hex)|*.hex|二進制文件(*.bin)|*.bin|");
if(m_FileDlg.DoModal()==IDOK)
{
m_strOpenFile=m_FileDlg.GetFileName();
m_strOpenFileExt=m_FileDlg.GetFileExt();
m_strFilePath=m_FileDlg.GetPathName();
m_strOpenFileExt.MakeUpper();
m_strEditFileName=m_strFilePath;
OpenHexFile(1);
}
}
void CUSBISPDlg::OnBtnReadEeprom3()
{
// TODO: Add your control notification handler code here
if(!m_Isp.chipInit())
{
ShowMsg("下載器初始化出錯!");
m_ISPFAL+=1;
return;
}
if(!m_Isp.chipEntryProgram())
{
ShowMsg("下載器初始化出錯!");
m_ISPFAL+=1;
return;
}
//讀塊 flashoreeprom=0 flash, flashoreeprom=1 eeprom
if(!m_Isp.chipPageWrite(1,m_pEWriteBuf,m_ChipType.epageSize,m_nELength))
{
ShowMsg("寫器件錯誤.");
m_ISPFAL+=1;
return;
}
m_Isp.chipProcOver();
CString a;
a.Format("寫器件EEPROM完成.");
m_ISPSEC+=1;
ShowMsg(a);
a.Format("成功下載%d次,失敗%d次",m_ISPSEC,m_ISPFAL);
SetDlgItemText(IDC_EDIT2,a);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -