?? main.cpp
字號:
#include <windows.h>
#include <string.h>
#include <string>
#include "resource.h"
#include "fileCtrl.h"
#include "cbootloader.h"
#include "cflashmem.h"
#include "usbHIDcalls.h"
//#include <commctrl.h> //InitCommonControls
//#pragma comment(lib, "comctl32") //InitCommonControls
extern int isp(char* filename);
extern void UpdataMessageStr(char* mystring);
extern void UpdataMessageVal(unsigned int i);
extern void ClearMessage(void);
CFileCtrl m_fileCtrl;
HWND hDialog;
char key[]="file";
char Section[]="FilePath";
char path[MAX_PATH]="";
string inipath="";
DWORD WINAPI ThreadProc(LPVOID lpVoid)
{
char buffer[132];
usbDevice_t *device = NULL;
char *vname = "";
char *devname = "";
int len=132;
while(1)
{
Sleep(10);
if(device==NULL)
{
//EnableWindow(GetDlgItem(hDialog,IDC_BUTTON_BROWSE),FALSE);
EnableWindow(GetDlgItem(hDialog,IDOK),FALSE);
if(usbOpenDevice(&device, USBDEV_SHARED_VENDOR, vname, USBDEV_SHARED_PRODUCT, devname, 1))
continue;
}
if (usbGetReport(device, USB_HID_REPORT_TYPE_FEATURE, 1, (char *)buffer, &len)!=0)
{
//EnableWindow(GetDlgItem(hDialog,IDC_BUTTON_BROWSE),FALSE);
EnableWindow(GetDlgItem(hDialog,IDOK),FALSE);
device=NULL;
usbOpenDevice(&device, USBDEV_SHARED_VENDOR, vname, USBDEV_SHARED_PRODUCT, devname, 1);
continue;
}
{
//EnableWindow(GetDlgItem(hDialog,IDC_BUTTON_BROWSE),TRUE);
EnableWindow(GetDlgItem(hDialog,IDOK),TRUE);
}
device=NULL;
usbOpenDevice(&device, USBDEV_SHARED_VENDOR, vname, USBDEV_SHARED_PRODUCT, devname, 1);
}
}
//過程函數的返回值都是LRESULT,類型都是CALLBACK
LRESULT CALLBACK DialogProc(HWND hDlg, UINT message,WPARAM wParam, LPARAM lParam) ;
int CALLBACK WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
DialogBox(GetModuleHandle(NULL), MAKEINTRESOURCE(IDD_DIALOG1),GetDesktopWindow(),( DLGPROC )DialogProc);
return 0;
}
int isp(char* filename)
{
CBootloader * bootloader = new CBootloader();
unsigned int pagesize =bootloader->getPagesize();
if(pagesize==NULL)//ssda
return ERROR;
//printf("Pagesize: %d\n", pagesize);
UpdataMessageStr("Pagesize:");
UpdataMessageVal(pagesize);
UpdataMessageStr("\r\n");
CFlashmem * flashmem = new CFlashmem(pagesize);
string m_filename;
m_filename=filename;
if(!stricmp(&filename[m_filename.length()-4],".hex"))
flashmem->readFromIHEX(filename);
else if(!stricmp(&filename[m_filename.length()-4],".bin"))
flashmem->readFromBIN(filename);
CPage* pPage = flashmem->getFirstpage();
while (pPage != NULL) {
//printf("Write page at adresse: %d\n", pPage->getPageaddress());
UpdataMessageStr("Write page at adresse:");
UpdataMessageVal(pPage->getPageaddress());
UpdataMessageStr("\r\n");
bootloader->writePage(pPage);
pPage = pPage->getNext();
}
return 1;
}
void InitDialog(HWND hDlg)
{
string mestr="";
char pathtemp[MAX_PATH];
GetCurrentDirectory(MAX_PATH,pathtemp);
inipath=pathtemp;
inipath = inipath + "\\BootHID.ini";
GetPrivateProfileString(Section,key,path,path,MAX_PATH,inipath.c_str());
m_fileCtrl.SetSelectedDir(path);
SetDlgItemText(hDlg,IDC_EDIT_FILE_PATH,path);
mestr=path;
if(mestr.empty()==FALSE)
{
if(!stricmp(&path[mestr.length()-4],".hex"))
m_fileCtrl.SetBrowseExt("hex");
else if(!stricmp(&path[mestr.length()-4],".bin"))
m_fileCtrl.SetBrowseExt("bin");
}
}
void ProcessISP(HWND hDlg)
{
string fileName ;
string Ext;
int i=0;
char m_fileName[MAX_PATH];
GetDlgItemText(hDlg,IDC_EDIT_FILE_PATH, m_fileName,MAX_PATH);
fileName=m_fileName;
if (fileName.empty())
{
UpdataMessageStr("沒有選擇要下載的文件");
UpdataMessageStr("\r\n");
}
else
{
Ext=m_fileCtrl.GetBrowseExt();
if(stricmp(Ext.c_str(),"hex") && stricmp(Ext.c_str(),"bin"))
{
UpdataMessageStr("不是HEX文件或BIN文件!!!");
UpdataMessageStr("\r\n");
}
else
{
if(isp((char*)fileName.c_str()))
{
UpdataMessageStr("下載完成!!!");
UpdataMessageStr("\r\n");
}
}
}
}
LRESULT CALLBACK DialogProc(HWND hDlg, UINT message,
WPARAM wParam, LPARAM lParam)
{
hDialog=hDlg;
switch (message)
{
case WM_INITDIALOG:
CreateThread(NULL,0,ThreadProc,0,0,0);
InitDialog(hDlg);
return TRUE;
case WM_COMMAND:
if ( LOWORD(wParam) == IDCANCEL)
{
EndDialog(hDlg, 0);
return TRUE;
}
else if(LOWORD(wParam) == IDOK)
{
ProcessISP(hDlg);
}
else if(LOWORD(wParam) == IDC_BUTTON_BROWSE)
{
string Ext;
ClearMessage();
GetDlgItemText(hDlg,IDC_EDIT_FILE_PATH,path,MAX_PATH);
m_fileCtrl.SetSelectedDir(path);
if (m_fileCtrl.OpenFileDialog())
{
SetDlgItemText(hDlg,IDC_EDIT_FILE_PATH, (LPSTR)m_fileCtrl.GetSelectedDir());
WritePrivateProfileString(Section,key,(LPSTR)m_fileCtrl.GetSelectedDir(),inipath.c_str());
}
Ext=m_fileCtrl.GetBrowseExt();
if(stricmp(Ext.c_str(),"hex") && stricmp(Ext.c_str(),"bin"))
{
UpdataMessageStr("不是HEX文件或BIN文件!!!");
UpdataMessageStr("\r\n");
}
}
break;
case WM_CLOSE:
EndDialog(hDlg,0);
return TRUE;
}
return FALSE;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -