?? myprogdlg.cpp
字號:
void CMYPROGDlg::OnCheck3(){ResultFuse();GetFuse();}
void CMYPROGDlg::OnCheck4(){ResultFuse();GetFuse();}
void CMYPROGDlg::OnCheck5(){ResultFuse();GetFuse();}
void CMYPROGDlg::OnCheck6(){ResultFuse();GetFuse();}
void CMYPROGDlg::OnCheck7(){ResultFuse();GetFuse();}
void CMYPROGDlg::OnCheck8(){ResultFuse();GetFuse();}
void CMYPROGDlg::OnCheck9(){ResultFuse();GetFuse();}
void CMYPROGDlg::OnCheck10(){ResultFuse();GetFuse();}
void CMYPROGDlg::OnCheck11(){ResultFuse();GetFuse();}
void CMYPROGDlg::OnCheck12(){ResultFuse();GetFuse();}
void CMYPROGDlg::OnCheck13(){ResultFuse();GetFuse();}
void CMYPROGDlg::OnCheck14(){ResultFuse();GetFuse();}
void CMYPROGDlg::OnCheck15(){ResultFuse();GetFuse();}
void CMYPROGDlg::OnCheck16(){ResultFuse();GetFuse();}
void CMYPROGDlg::OnCheck17(){ResultFuse();GetFuse();}
void CMYPROGDlg::OnCheck18(){ResultFuse();GetFuse();}
void CMYPROGDlg::OnCheck19(){ResultFuse();GetFuse();}
void CMYPROGDlg::OnCheck20(){ResultFuse();GetFuse();}
void CMYPROGDlg::OnCheck21(){ResultFuse();GetFuse();}
void CMYPROGDlg::OnCheck22(){ResultFuse();GetFuse();}
void CMYPROGDlg::OnCheck23(){ResultFuse();GetFuse();}
//功能更改后,更改熔絲位,計算熔絲數據,
void CMYPROGDlg::OnSelchangeComboFuse1(){SetFuse(); ResultFuse();}
void CMYPROGDlg::OnSelchangeComboFuse2(){SetFuse(); ResultFuse();}
void CMYPROGDlg::OnSelchangeComboFuse3(){SetFuse(); ResultFuse();}
void CMYPROGDlg::OnSelchangeComboFuse4(){SetFuse(); ResultFuse();}
//FLASH編程
void CMYPROGDlg::OnButtonFprog()
{
// TODO: Add your control notification handler code here
if(!avrp.hexf.openFileRead(m_hexfile))
{
AfxMessageBox( "打開文件錯誤! " );
return;
}
if(!avrp.hexf.readHEXFile())
{
avrp.hexf.closeFile();
return;
}
CButton *flashGroup=(CButton*)GetDlgItem(IDC_STATIC_GROUPFLASH);
char s[30];
sprintf(s,"Flash:%d/%d",avrp.hexf.getRangeLength(),avrp.device.getFlashSize());
flashGroup->SetWindowText(s);
if(avrp.hexf.getRangeLength()>avrp.device.getFlashSize())
{
avrp.hexf.closeFile();
AfxMessageBox( "文件長度超出存儲器! " );
return;
}
if(!avrp.enterProgrammingMode())return;
if (!avrp.isDeviceOK())
{
avrp.hexf.closeFile();
avrp.leaveProgrammingMode();
return;
}
if(avrp.chipErase())
{
UpdateData(TRUE);
m_csMessage = "擦除OK!";
UpdateData(FALSE);
}
else
{
UpdateData(TRUE);
m_csMessage = "擦除失敗!";
UpdateData(FALSE);
avrp.leaveProgrammingMode();
avrp.hexf.closeFile();
return;
}
UpdateData(TRUE);
m_csMessage += "寫程序...";
UpdateData(FALSE);
CProgressCtrl *p=(CProgressCtrl *)GetDlgItem(IDC_PROGRESS1);
if(avrp.writeFlash(p))
{
UpdateData(TRUE);
m_csMessage += "OK!";
UpdateData(FALSE);
}
else
{
UpdateData(TRUE);
m_csMessage += "失敗!";
UpdateData(FALSE);
avrp.leaveProgrammingMode();
avrp.hexf.closeFile();
return;
}
UpdateData(TRUE);
m_csMessage += "校驗程序...";
UpdateData(FALSE);
Sleep(110);
if(avrp.verifyFlash(p))
{
UpdateData(TRUE);
m_csMessage += "OK!";
UpdateData(FALSE);
}
else
{
UpdateData(TRUE);
m_csMessage += "失敗!";
UpdateData(FALSE);
avrp.hexf.closeFile();
avrp.leaveProgrammingMode();
return;
}
if(avrp.device.getLockBytes())
{
if(avrp.writeLockBits(avrp.device.LockBits))
{
UpdateData(TRUE);
m_csMessage += "鎖定OK!";
UpdateData(FALSE);
}
else
{
UpdateData(TRUE);
m_csMessage += "鎖定失敗!";
UpdateData(FALSE);
avrp.leaveProgrammingMode();
return;
}
}
avrp.hexf.closeFile();
avrp.leaveProgrammingMode();
}
//FLASH讀
void CMYPROGDlg::OnButtonFread()
{
// TODO: Add your control notification handler code here
int f,r;
if((f=avrp.hexf.fileExists(m_hexfile)) == true)r=AfxMessageBox("文件已存在,覆蓋?",MB_YESNO);
if((r==IDYES || !f) && m_hexfile.GetLength( ))
{
if(!avrp.hexf.openFileWrite(m_hexfile,avrp.device.getFlashSize()))
{
AfxMessageBox( "打開文件錯誤! " );
return;
}
if(!avrp.enterProgrammingMode())
{
avrp.hexf.closeFile();
return;
}
if (!avrp.isDeviceOK())
{
avrp.leaveProgrammingMode();
return;
}
CButton *flashGroup=(CButton*)GetDlgItem(IDC_STATIC_GROUPFLASH);
char s[30];
sprintf(s,"Flash:%d/%d",avrp.device.getFlashSize(),avrp.device.getFlashSize());
flashGroup->SetWindowText(s);
UpdateData(TRUE);
m_csMessage = "讀程序...";
UpdateData(FALSE);
CProgressCtrl *p=(CProgressCtrl *)GetDlgItem(IDC_PROGRESS1);
if(avrp.readFlash(p))
{
avrp.hexf.simplifyData();
flashGroup=(CButton*)GetDlgItem(IDC_STATIC_GROUPFLASH);
//char s[30];
sprintf(s,"Flash:%d/%d",avrp.hexf.getRangeLength(),avrp.device.getFlashSize());
flashGroup->SetWindowText(s);
avrp.hexf.writeHEXFile() ;
UpdateData(TRUE);
m_csMessage += "OK!";
UpdateData(FALSE);
}
else
{
//avrp.leaveProgrammingMode();
UpdateData(TRUE);
m_csMessage += "失敗!";
UpdateData(FALSE);
//return;
}
avrp.hexf.closeFile();
avrp.leaveProgrammingMode();
}
}
//FLASH校驗
void CMYPROGDlg::OnButtonFveri()
{
if(!avrp.hexf.openFileRead(m_hexfile))
{
AfxMessageBox( "打開文件錯誤! " );
return;
}
if(!avrp.hexf.readHEXFile())
{
avrp.hexf.closeFile();
return;
}
if(!avrp.enterProgrammingMode())return;
if (!avrp.isDeviceOK())
{
avrp.leaveProgrammingMode();
return;
}
CButton *flashGroup=(CButton*)GetDlgItem(IDC_STATIC_GROUPFLASH);
char s[30];
sprintf(s,"Flash:%d/%d",avrp.hexf.getRangeLength(),avrp.device.getFlashSize());
flashGroup->SetWindowText(s);
UpdateData(TRUE);
m_csMessage = "校驗程序...";
UpdateData(FALSE);
CProgressCtrl *p=(CProgressCtrl *)GetDlgItem(IDC_PROGRESS1);
if(avrp.verifyFlash(p))
{
UpdateData(TRUE);
m_csMessage = "校驗程序...OK!";
UpdateData(FALSE);
}
else
{
UpdateData(TRUE);
m_csMessage = "校驗程序...失敗!";
UpdateData(FALSE);
}
avrp.hexf.closeFile();
avrp.leaveProgrammingMode();
}
//EEPROM編程
void CMYPROGDlg::OnButtonEprog()
{
if(!avrp.hexf.openFileRead(m_hexfile))
{
AfxMessageBox( "打開文件錯誤! " );
return;
}
if(!avrp.hexf.readHEXFile())
{
avrp.hexf.closeFile();
return;
}
CButton *eepromGroup=(CButton*)GetDlgItem(IDC_STATIC_GROUPEEPROM);
char s[30];
sprintf(s,"EEPROM:%d/%d",avrp.hexf.getRangeLength(),avrp.device.getEEPROMSize());
eepromGroup->SetWindowText(s);
if(avrp.hexf.getRangeLength()>avrp.device.getEEPROMSize())
{
AfxMessageBox( "文件長度超出EEPROM! " );
return;
}
if(!avrp.enterProgrammingMode())return;
if (!avrp.isDeviceOK())
{
avrp.leaveProgrammingMode();
return;
}
UpdateData(TRUE);
m_csMessage = "寫EEPROM...";
UpdateData(FALSE);
CProgressCtrl *p=(CProgressCtrl *)GetDlgItem(IDC_PROGRESS1);
if(avrp.writeEEPROM(p))
{
UpdateData(TRUE);
m_csMessage += "OK!";
UpdateData(FALSE);
}
else
{
UpdateData(TRUE);
m_csMessage += "失敗!";
UpdateData(FALSE);
avrp.leaveProgrammingMode();
return;
}
UpdateData(TRUE);
m_csMessage += "校驗EEPROM...";
UpdateData(FALSE);
if(avrp.verifyEEPROM(p))
{
UpdateData(TRUE);
m_csMessage += "OK!";
UpdateData(FALSE);
}
else
{
UpdateData(TRUE);
m_csMessage += "失敗!";
UpdateData(FALSE);
}
avrp.hexf.closeFile();
avrp.leaveProgrammingMode();
}
//EEPROM讀
void CMYPROGDlg::OnButtonEread()
{
int f,r;
if((f=avrp.hexf.fileExists(m_hexfile)) == true)r=AfxMessageBox("文件已存在,覆蓋?",MB_YESNO);
if((r==IDYES || !f) && m_hexfile.GetLength( ))
{
if(!avrp.hexf.openFileWrite(m_hexfile,avrp.device.getEEPROMSize()))
{
AfxMessageBox( "打開文件錯誤! " );
return;
}
if(!avrp.enterProgrammingMode())return;
if (!avrp.isDeviceOK())
{
avrp.leaveProgrammingMode();
return;
}
CButton *eepromGroup=(CButton*)GetDlgItem(IDC_STATIC_GROUPEEPROM);
char s[30];
sprintf(s,"EEPROM:%d/%d",avrp.device.getEEPROMSize(),avrp.device.getEEPROMSize());
eepromGroup->SetWindowText(s);
UpdateData(TRUE);
m_csMessage = "讀EEPROM...";
UpdateData(FALSE);
CProgressCtrl *p=(CProgressCtrl *)GetDlgItem(IDC_PROGRESS1);
if(avrp.readEEPROM(p))
{
avrp.hexf.simplifyData();
eepromGroup=(CButton*)GetDlgItem(IDC_STATIC_GROUPEEPROM);
//char s[30];
sprintf(s,"EEPROM:%d/%d",avrp.hexf.getRangeLength(),avrp.device.getEEPROMSize());
eepromGroup->SetWindowText(s);
avrp.hexf.writeHEXFile() ;
UpdateData(TRUE);
m_csMessage += "OK!";
UpdateData(FALSE);
}
else
{
UpdateData(TRUE);
m_csMessage += "失敗!";
UpdateData(FALSE);
//return;
}
avrp.leaveProgrammingMode();
avrp.hexf.closeFile();
}
}
//EEPROM校驗
void CMYPROGDlg::OnButtonEveri()
{
if(!avrp.hexf.openFileRead(m_hexfile))
{
AfxMessageBox( "打開文件錯誤! " );
return;
}
if(!avrp.hexf.readHEXFile())
{
avrp.hexf.closeFile();
return;
}
if(!avrp.enterProgrammingMode())return;
if (!avrp.isDeviceOK())
{
avrp.leaveProgrammingMode();
return;
}
CButton *eepromGroup=(CButton*)GetDlgItem(IDC_STATIC_GROUPEEPROM);
char s[30];
sprintf(s,"EEPROM:%d/%d",avrp.hexf.getRangeLength(),avrp.device.getEEPROMSize());
eepromGroup->SetWindowText(s);
UpdateData(TRUE);
m_csMessage = "校驗EEPROM...";
UpdateData(FALSE);
CProgressCtrl *p=(CProgressCtrl *)GetDlgItem(IDC_PROGRESS1);
if(avrp.verifyEEPROM(p))
{
UpdateData(TRUE);
m_csMessage = "校驗EEPROM...OK!";
UpdateData(FALSE);
}
else
{
UpdateData(TRUE);
m_csMessage = "校驗EEPROM...失敗!";
UpdateData(FALSE);
}
avrp.hexf.closeFile();
avrp.leaveProgrammingMode();
}
//讀鎖定位和熔絲位
bool CMYPROGDlg::ReadLockAndFuse()
{
if(avrp.device.getLockBytes())
{
if(!avrp.readLockBits(&avrp.device.LockBits))return false;
}
AnalyseLock();
GetLock();
switch(avrp.device.getFuseBytes())
{
case 3:
if(!avrp.readExtendedFuseBits(&avrp.device.ExtendedFuseBits))return false;
case 2:
case 1:
if(!avrp.readFuseBits(&avrp.device.FuseBits))return false;
case 0:
break;
default:
break;
}
AnalyseFuse();
GetFuse();
return true;
}
void CMYPROGDlg::OnButtonSread()
{
//讀器件標識
ReadSignature();
if(!avrp.enterProgrammingMode())
{
SetDlgItemText(IDC_STATIC_SIGNATURE, "");
UpdateData(TRUE);
m_csMessage = "進入編程模式失敗!";
UpdateData(FALSE);
return;
}
if (!avrp.isDeviceOK() )
{
avrp.leaveProgrammingMode();
return;
}
if(ReadLockAndFuse())
{
UpdateData(TRUE);
m_csMessage = "讀鎖定位和熔絲...OK!";
UpdateData(FALSE);
}
else
{
UpdateData(TRUE);
m_csMessage = "讀鎖定位和熔絲...失敗!";
UpdateData(FALSE);
}
avrp.leaveProgrammingMode();
}
//擦除
void CMYPROGDlg::OnButtonErase()
{
if(!avrp.enterProgrammingMode())
{
UpdateData(TRUE);
m_csMessage = "進入編程模式失敗!";
UpdateData(FALSE);
return;
}
if (!avrp.isDeviceOK())
{
avrp.leaveProgrammingMode();
return;
}
if(avrp.chipErase())
{
UpdateData(TRUE);
m_csMessage = "擦除...OK!";
UpdateData(FALSE);
}
else
{
UpdateData(TRUE);
m_csMessage = "擦除...失敗!";
UpdateData(FALSE);
}
ReadLockAndFuse();
avrp.leaveProgrammingMode();
}
void CMYPROGDlg::OnButtonSprog()
{
UpdateData(TRUE);
m_csMessage = "";
UpdateData(FALSE);
if(!avrp.enterProgrammingMode())
{
UpdateData(TRUE);
m_csMessage = "進入編程模式失敗!";
UpdateData(FALSE);
return;
}
if (!avrp.isDeviceOK())
{
avrp.leaveProgrammingMode();
return;
}
if(avrp.device.getLockBytes() && 0)
{
long tempLockBits;
if(!avrp.readLockBits(&tempLockBits))return;
if((tempLockBits & 0x03 ) != 0x03)
{
AfxMessageBox("熔絲鎖定,請先擦除OK!");
UpdateData(TRUE);
m_csMessage = "熔絲鎖定,不能寫入!";
UpdateData(FALSE);
return;
if(avrp.chipErase())
{
UpdateData(TRUE);
m_csMessage = "熔絲鎖定,擦除OK!";
UpdateData(FALSE);
}
else
{
UpdateData(TRUE);
m_csMessage = "熔絲鎖定,不能擦除!";
UpdateData(FALSE);
return;
}
}
}
switch(avrp.device.getFuseBytes())
{
case 3:
avrp.writeExtendedFuseBits(avrp.device.ExtendedFuseBits);
case 2:
case 1:
if(avrp.writeFuseBits(avrp.device.FuseBits ))
{
UpdateData(TRUE);
m_csMessage += "寫熔絲OK!";
UpdateData(FALSE);
}
else
{
UpdateData(TRUE);
m_csMessage += "寫熔絲失敗!";
UpdateData(FALSE);
avrp.leaveProgrammingMode();
return;
}
case 0:
break;
default:
break;
}
if(avrp.device.getLockBytes())
{
if(avrp.writeLockBits(avrp.device.LockBits))
{
UpdateData(TRUE);
m_csMessage += "寫鎖定位OK!";
UpdateData(FALSE);
}
else
{
UpdateData(TRUE);
m_csMessage += "寫熔絲失敗!";
UpdateData(FALSE);
avrp.leaveProgrammingMode();
return;
}
}
avrp.leaveProgrammingMode();
return;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -