📄 at91loader.c
字号:
return FALSE;
}
return 0;
}
//* --------------------------------------------------------------------------
//* Function Name : AutoBox
//* Object : Get file value and write if OK
//* Input Parameters : Dialogue box IDD_DIALOG1 ,ComUsed
//* Output Parameters : None
//* --------------------------------------------------------------------------
BOOL CALLBACK Load_PassFail(HWND hwndDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
switch(message)
{
case WM_COMMAND:
case WM_CLOSE:
EndDialog(hwndDlg,TRUE);
default:
return FALSE;
}
return 0;
}
BOOL CALLBACK Load_wait(HWND hwndDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
int len =0;
switch(message)
{
case WM_INITDIALOG:
if (!SetTimer(hwndDlg,1,(LOADER_TIME_OUT),NULL))
displayError();
if (schedule.state != SYNCRHO_NOK)
{
}
// EndDialog(hwndDlg,TRUE);
break;
case WM_TIMER:
KillTimer(hwndDlg,1);
if (scheduler())
{
EndDialog(hwndDlg,TRUE);
}
else
{
EndDialog(hwndDlg,FALSE);
}
break;
SetTimer(hwndDlg,1,(LOADER_TIME_OUT),NULL);
break;
case WM_CLOSE:
EndDialog(hwndDlg,FALSE);
default:
return FALSE;
}
return 0;
}
BOOL CALLBACK Synchro_wait(HWND hwndDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
switch(message)
{
case WM_INITDIALOG:
if (!SetTimer(hwndDlg,1,(LOADER_TIME_OUT),NULL))
displayError();
// if (schedule.state != SYNCRHO_NOK) EndDialog(hwndDlg,TRUE);
break;
case WM_TIMER:
KillTimer(hwndDlg,1);
if (schedule.state == SYNCRHO_NOK)
{
if (scheduler_syncro())
{
schedule.state = SYNCRHO_OK;
EndDialog(hwndDlg,TRUE);
}
else
SetTimer(hwndDlg,1,(LOADER_TIME_OUT),NULL);
}
else
EndDialog(hwndDlg,TRUE);
break;
case WM_CLOSE:
EndDialog(hwndDlg,FALSE);
default:
return FALSE;
}
return 0;
}
//LRESULT CALLBACK WndProc(HWND hwndDlg, UINT message, WPARAM wParam, LPARAM lParam)
BOOL CALLBACK AutoBox(HWND hwndDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
// Messages
switch(message)
{
case WM_INITDIALOG:
if ( !DialogBox(hInst,"B_WAIT",hwndDlg,Synchro_wait))
{
EndDialog(hwndDlg,TRUE);
break;
}
// DialogBox(hInst,"B_START",hwndDlg,Load_PassFail);
if ( DialogBox(hInst,"B_WAIT_LOAD",hwndDlg,Load_wait))
{
DialogBox(hInst,"B_PASS",hwndDlg,Load_PassFail);
scheduler_restart();
}
else
{
DialogBox(hInst,"B_FAIL",hwndDlg,Load_PassFail);
scheduler_restart();
}
SendMessage(hwndDlg,WM_INITDIALOG,0,0);
case WM_CLOSE:
EndDialog(hwndDlg,FALSE);
break;
default:
return FALSE;
}
return 0;
}
//* --------------------------------------------------------------------------
//* Function Name : WndProc
//* Object : main window prodeure
//* Functions called : DialogBox, MessageBox, InvalidateRect,PostMessage
//* sprintf
//* PostQuitMessage,DestroyWindow,DefProcWindow
//* --------------------------------------------------------------------------
LRESULT CALLBACK WndProc(HWND hwnd_local, UINT message, WPARAM wParam, LPARAM lParam)
{
int cmpt;
int size,len;
BYTE bbuffer[130];
BYTE message_scren[256];
switch(message)
{
case WM_INITDIALOG:
if (State.Manual == FALSE )
{
DialogBox(hInst,"IDD_AUTO",hwnd_local,AutoBox);
if (workFile.hBin != NULL)
LocalFree(workFile.hBin);
DestroyWindow(Hwnd);
break;
}
InvalidateRect(Hwnd,NULL,FALSE);
break;
case WM_TIMER:
KillTimer(hwnd_local,1);
Write_message(hwnd_local);
if (!SetTimer(hwnd_local,1,(LOADER_TIME_OUT),NULL))
{
displayError();
}
break;
case WM_PAINT:
int_mes.timer_state++;
Write_message(hwnd_local);
break;
case WM_COMMAND:
switch(LOWORD(wParam))
{
//* ------------ File Command
case ID_HELP_STATE:
DialogBox(hInst,"IDD_SELECTION",hwnd_local,dialogue_state);
break;
case ID_OPEN:
openBinaryFile(hwnd_local);
InvalidateRect(Hwnd,NULL,FALSE);
break;
case ID_MENU_CLOSEFILE:
closeBinFile();
workFile.hf = INVALID_HANDLE_VALUE;
break;
case ID_NEW_FILE:
openBinaryFile(Hwnd);
if (DialogBox(hInst,"IDD_FILE_VAL",hwnd_local,getFileValue))
InvalidateRect(Hwnd,NULL,FALSE);
break;
case ID_MENU_TARGET:
DialogBox(hInst,"IDD_TARGET",hwnd_local,TargetInfo);
break;
//* ------------ COM Command
case ID_CHOOSE:
DialogBox(hInst,"IDD_DIALOG1",hwnd_local,ChooseBox);
InvalidateRect(Hwnd,NULL,FALSE);
break;
case ID_COMSET_SETHIGHSPEED:
DialogBox(hInst,"IDD_COMSET_SETHIGHSPEED",hwnd_local,comHighSpped);
break;
case ID_CONF_COM:
configCommand(Hwnd);
InvalidateRect(Hwnd,NULL,FALSE);
break;
case ID_COMSET_CLOSECOM:
closeCom();
break;
//* ------------ Test Command
case ID_SEND_AUTOSYNC:
if (scheduler_syncro())
{
sprintf(message_scren," SPEED OK");
MessageBox( NULL,message_scren,"OK", MB_OK );
scheduler_restart();
}
else
{
sprintf(message_scren,"FAIL");
MessageBox( NULL,message_scren,"FAIL", MB_OK );
scheduler_restart();
}
break;
case ID_SEND:
len=0;
if (scheduler())
{
printSheduleResult ((char *)&message_scren,&len);
MessageBox( NULL,message_scren,"Load finish", MB_OK );
}
else
{
printSheduleResult ((char *)&message_scren,&len);
MessageBox( NULL,message_scren,"Load fail", MB_OK );
}
break;
case ID_SEND_AUTO:
DialogBox(hInst,"IDD_AUTO",hwnd_local,AutoBox);
InvalidateRect(Hwnd,NULL,FALSE);
break;
//* basic Command
case ID_SEND_SYNCHRO:
showReturMessage(send_synchro()," synchro");
break;
case ID_SEND_SPEED:
showReturMessage(send_speed(ComUsed.cd),"Speed");
break;
case ID_SEND_ERASESECTOR:
if ( DialogBox(hInst,"IDD_GET_ADD",hwnd_local,get_address))
showReturMessage( send_erase (int_mes.address_val),"Erase") ;
break;
case ID_SEND_DATA:
len= 64;
for(cmpt=0 ;cmpt<sizeof(bbuffer);cmpt++)
{
bbuffer[cmpt]=0x01;
}
size=0;
size +=sprintf(text_message+size,"Data value\n");
for(cmpt=0 ;cmpt<len;cmpt++)
{
size +=sprintf(text_message+size,"0x%02X ",bbuffer[cmpt]);
if ((cmpt%16)==15)
size +=sprintf(text_message+size,"\n");
}
MessageBox( NULL,text_message,"OK", MB_OK );
showReturMessage( send_data ( bbuffer ,len),"Send Data");
break;
case ID_SEND_WRITE:
if ( DialogBox(hInst,"IDD_GET_ADD",hwnd_local,get_address))
showReturMessage( send_write ( 64,int_mes.address_val ),"write");
break;
case ID_SEND_READDATA:
if ( DialogBox(hInst,"IDD_GET_ADD",hwnd_local,get_address))
{
for(cmpt=0 ;cmpt<68;cmpt++) bbuffer[cmpt]=0xff;
size = send_read ( bbuffer,64,int_mes.address_val);
showReturMessage(size ,"read");
size=0;
size +=sprintf(text_message+size,"Read value\n");
for(cmpt=0 ;cmpt<68;cmpt++)
{
size +=sprintf(text_message+size,"0x%02X ",bbuffer[cmpt]);
if ((cmpt%16)==15)
size +=sprintf(text_message+size,"\n");
}
MessageBox( NULL,text_message,"OK", MB_OK );
}
break;
case ID_SEND_UPLOAD:
if ( DialogBox(hInst,"IDD_GET_ADD",hwnd_local,get_address))
showReturMessage( send_upload ( 64 ,int_mes.address_val ),"upload");
break;
case ID_SEND_VERIFY:
DialogBox(hInst,"IDD_VERIFY",hwnd_local,verify_DialogBox);
break;
case ID_SEND_ACK:
send_Byte (ACK_CMD);
showReturMessage( get_Byte_status(),"Message");
break;
case ID_SEND_FILLINPUTBUFF:
while ( get_Byte_status() != TIME_OUT_REPLY)
{
}
break;
case ID_SEND_RESET:
send_Byte (RESET_CMD);
schedule.state
= SYNCRHO_NOK;
showReturMessage( get_Byte_status(),"Message");
break;
//* ------------ Sytem Command
case ID_HELP_ABOUT:
DialogBox(hInst,"IDD_HELP_LOADER",hwnd_local,help_loader);
break;
// case ID_HELP_GETINITFILE:
// getinitfile();
// break;
case ID_EXIT:
PostMessage (Hwnd,WM_CLOSE,wParam,wParam);
break;
}
break;
case WM_CLOSE:
if (workFile.hBin != NULL)
LocalFree(workFile.hBin);
DestroyWindow(Hwnd);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd_local, message, wParam, lParam);
}
return 0;
}
//* --------------------------------------------------------------------------
//* Function Name : WinMain
//* Object : main function
//* Functions called : RegisterClass,LoadIcon, LoadCursor ,GetStockObject
//* CreateWindow, ShowWindow, UpdateWindow
//* GetMessage, TranslateMessage, DispatchMessage
//* --------------------------------------------------------------------------
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpszCmdParam,int nCmdShow)
{
WNDCLASS wndclass;
static char szAppName[]= "Host Loader V1.0";
HWND hwnd;
MSG msg;
hInst=hInstance;
if (hPrevInstance == NULL)
{
// main window class
wndclass.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS ;
wndclass.lpfnWndProc = (WNDPROC) WndProc;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = DLGWINDOWEXTRA;
wndclass.hInstance = hInstance;
wndclass.hIcon = LoadIcon(NULL, "ICON_1");
wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
wndclass.hbrBackground = GetStockObject(WHITE_BRUSH);
wndclass.lpszMenuName = "IDR_MENU1";
wndclass.lpszClassName = szAppName;
RegisterClass(&wndclass);
}
// Window creation
hwnd = CreateWindow(szAppName,szAppName,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
NULL, NULL, hInstance, NULL);
//* Set the global variable
GetCurrentDirectory(sizeof(currentDirectory),currentDirectory);
getinitfile();
Hwnd = hwnd;
init_all(Hwnd);
int_mes.centerScreen = FALSE;
ShowWindow(Hwnd, SW_SHOWNORMAL);
UpdateWindow(Hwnd);
// initilialisation
workFile.hBin = NULL;
if (!SetTimer(hwnd,1,(LOADER_TIME_OUT),NULL))
{
displayError();
}
int_mes.address_val = 0x01010000;
SendMessage(Hwnd,WM_INITDIALOG,0,0);
// -- Messages loop
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (msg.wParam);
}
//* End of file
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -