⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 at91loader.c

📁 ARM入门的好帮手.包含了从简单到相对较复杂的程序.
💻 C
📖 第 1 页 / 共 2 页
字号:
            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 + -