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

📄 multiportflashdownloadtool.cpp

📁 多路下载工具源代码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
void TMainForm::Enable_UIComponent( void )
{
    Enable_FileMenu();
    Enable_FactoryDatabaseMenu();
    Enable_OptionMenu();
    Enable_DebugLoggingMenu();
   // Enable_lvListView();
    Enable_OperationRadioButton();
    Enable_FormatFatRangeRadioButton();
    Enable_BaudrateComboBox();
    Enable_TypeComboBox();
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void TMainForm::Disable_FileMenu( void )
{
    miFile->Enabled = false;
}

//----------------------------------------------------------------------------
void TMainForm::Enable_FileMenu( void )
{
    miFile->Enabled = true;
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void TMainForm::Disable_FactoryDatabaseMenu( void )
{
    miFactoryDatabase->Enabled = false;
}

//----------------------------------------------------------------------------
void TMainForm::Enable_FactoryDatabaseMenu( void )
{
    miFactoryDatabase->Enabled = true;
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void TMainForm::Disable_OptionMenu( void )
{
    miOption->Enabled = false;
}

//----------------------------------------------------------------------------
void TMainForm::Enable_OptionMenu( void )
{
    miOption->Enabled = true;
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void TMainForm::Disable_DebugLoggingMenu( void )
{
    miDebuglog->Enabled = false;
}

//----------------------------------------------------------------------------
void TMainForm::Enable_DebugLoggingMenu( void )
{
    miDebuglog->Enabled = true;
}

#if 0
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void TMainForm::Disable_lvListView( void )
{
    lv->Enabled = false;
}

//----------------------------------------------------------------------------
void TMainForm::Enable_lvListView( void )
{
    lv->Enabled = true;
}
#endif

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void TMainForm::Disable_OperationRadioButton( void )
{
     rbNOR->Enabled = false;
     rbNFB->Enabled = false;
}

//----------------------------------------------------------------------------
void TMainForm::Enable_OperationRadioButton( void )
{
     rbNOR->Enabled = true;
     rbNFB->Enabled = true;
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void TMainForm::Disable_FormatFatRangeRadioButton( void )
{
     rbAuto->Enabled = false;
     rbManual->Enabled = false;
     rbResetToFactory->Enabled = false;
}

//----------------------------------------------------------------------------
void TMainForm::Enable_FormatFatRangeRadioButton( void )
{
     rbAuto->Enabled = true;
     rbManual->Enabled = true;
     rbResetToFactory->Enabled = true;
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void TMainForm::Disable_BaudrateComboBox( void )
{
    cbBaudrate->Enabled = false;
}

//----------------------------------------------------------------------------
void TMainForm::Enable_BaudrateComboBox( void )
{
    cbBaudrate->Enabled = true;
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void TMainForm::Disable_TypeComboBox( void )
{
     cbType->Enabled = false;
}

//----------------------------------------------------------------------------
void TMainForm::Enable_TypeComboBox( void )
{
     cbType->Enabled = true;
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void TMainForm::Disable_SeperateDownloadButton( void )
{

     for (int i=0; i<MAX_SUPPORT_PORT_NUM; i++)
     {
         btnCOMStartArray[i]->Enabled = false;
     }
}

//----------------------------------------------------------------------------
void TMainForm::Enable_SeperateDownloadButton( void )
{
     for (int i=0; i<MAX_SUPPORT_PORT_NUM; i++)
     {
         btnCOMStartArray[i]->Enabled = true;
     }
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void TMainForm::Disable_AllDownloadButton( void )
{
     Disable_SeperateDownloadButton();
}

//----------------------------------------------------------------------------
void TMainForm::Enable_AllDownloadButton( void )
{
     Enable_SeperateDownloadButton();
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void TMainForm::Disable_SpecificMsUI( int index )
{
    cbCOMArray[index]->Enabled = false;
    cbAutoPollingArray[index]->Enabled = false;
    btnCOMStartArray[index]->Enabled = false;
}

//----------------------------------------------------------------------------
void TMainForm::Enable_SpecificMsUI( int index )
{
    cbCOMArray[index]->Enabled = true;
    cbAutoPollingArray[index]->Enabled = true;
    btnCOMStartArray[index]->Enabled = true;
}

#if 0
//============================================================================
void __fastcall TMainForm::RedrawLVList( void )
{
    unsigned short rom_count;

    TListItem	*pListItem;
    lv->Items->Clear();

    if( OPERATION_NFB == m_DnParam.eOperation )
    {
        BL_INFO	bl_info;

        pListItem = lv->Items->Add();
        pListItem->Caption = "BootLoader";
        if(!BL_GetInfo(m_DnParam.bl_handle, &bl_info))
        {
            AnsiString  region_prefix;

            pListItem->Checked = _TRUE==bl_info.m_enable?true:false;
            pListItem->SubItems->Add("");
            pListItem->SubItems->Add( "0x" + IntToHex((int)bl_info.m_start_addr, 8) );
            pListItem->SubItems->Add("");
            pListItem->SubItems->Add(bl_info.m_filepath);
        }
    }


    if(!DL_GetCount(g_DL_HANDLE, &rom_count))
    {
        //ROM_INFO	 rom_info[MAX_LOAD_SECTIONS];

        if(!DL_Rom_GetInfoAll(g_DL_HANDLE, rom_info, MAX_LOAD_SECTIONS))
        {
            // access
            m_uiTotalFileSize = 0;
            for(int i=0; i<rom_count; i++)
            {
                AnsiString  as_reg_prefix;
                TListItem	*p_list_item;

                // access
                m_uiTotalFileSize += rom_info[i].filesize;
              //  if( ! DL_Rom_GetInfo(g_DL_HANDLE, i, &(rom_info[i])) )
                {
                    p_list_item = lv->Items->Add();
                    p_list_item->Caption = rom_info[i].name;
                    if( strcmpi( rom_info[i].name, "ROM" ) == 0 )
                    {
                        asROMFileName = rom_info[i].filepath;
                    }
                    if( strcmpi( rom_info[i].name, "FAT" ) == 0 )
                    {
                        i_LV_FAT_index = i;
                        asFATFileName = rom_info[i].filepath;
                    }

                    p_list_item->Checked = rom_info[i].enable;

            	    if( ABSOLUTE_ADDR == rom_info[i].addr_type )
                    {
                        as_reg_prefix = "";
                    }
                    else
                    {
                        as_reg_prefix = "+";
                    }
                    p_list_item->SubItems->Add( as_reg_prefix + "0x" + IntToHex((int)rom_info[i].region_addr, 8) );
                    p_list_item->SubItems->Add( "0x" + IntToHex((int)rom_info[i].begin_addr, 8) );
                    p_list_item->SubItems->Add( "0x" + IntToHex((int)rom_info[i].end_addr, 8) );
                    p_list_item->SubItems->Add(rom_info[i].filepath);
                }
            }
        }
    }

}

//---------------------------------------------------------------------------
void __fastcall TMainForm::RedrawLVCheckBox( void )
{
    unsigned short rom_count;
    int	rom_begin_index;

    if( OPERATION_NFB == m_DnParam.eOperation )
    {
       BL_INFO	bl_info;
       if(!BL_GetInfo(m_DnParam.bl_handle, &bl_info))
       {
           lv->Items->Item[0]->Checked = (_TRUE==bl_info.m_enable)?true:false;
       }
       rom_begin_index = 1;
    }
    else
    {
        rom_begin_index = 0;
    }

    if(!DL_GetCount(g_DL_HANDLE, &rom_count))
    {
        ROM_INFO	rom[MAX_LOAD_SECTIONS];
        int		checked_count=0;
        if(!DL_Rom_GetInfoAll(g_DL_HANDLE, rom, MAX_LOAD_SECTIONS))
        {
            for(int i=0; i<rom_count; i++)
            {
                if(rom[i].enable)
                {
                    checked_count++;
                }
                lv->Items->Item[rom_begin_index+i]->Checked = (_TRUE==rom[i].enable)?true:false;
            }
        }

        if( OPERATION_NFB == m_DnParam.eOperation )
        {
            if( 0 < checked_count )
            {
                lv->Items->Item[0]->Checked = true;
                BL_SetEnableAttr(m_DnParam.bl_handle, _TRUE);
            }
        }
    }
}

//---------------------------------------------------------------------------
void __fastcall TMainForm::lvClick(TObject *Sender)
{
    TListView *plv = dynamic_cast<TListView *>(Sender);

    if( 0<=lvChanged.iChangedIndex && lvChanged.iChangedIndex < plv->Items->Count )
    {
        if( OPERATION_NOR == m_DnParam.eOperation )
        {
            DL_Rom_SetEnableAttr(g_DL_HANDLE, lvChanged.iChangedIndex, plv->Items->Item[lvChanged.iChangedIndex]->Checked?_TRUE:_FALSE);
        }
        else
        {
            if( 0 == lvChanged.iChangedIndex )
            {
                BL_SetEnableAttr(m_DnParam.bl_handle, plv->Items->Item[0]->Checked?_TRUE:_FALSE);
            }
            else
            {
                DL_Rom_SetEnableAttr(g_DL_HANDLE, lvChanged.iChangedIndex-1, plv->Items->Item[lvChanged.iChangedIndex]->Checked?_TRUE:_FALSE);
            }
        }
        RedrawLVCheckBox();
    }
    else
    {
        lv_oldClick(Sender);
    }

    lvChanged.iChangedIndex = NO_CHANGE;
}

//---------------------------------------------------------------------------
void __fastcall TMainForm::lv_oldClick(TObject *Sender)
{
    TListView *p_lv = dynamic_cast<TListView *>(Sender);
    int iLastDel=0;
    int ret;


    if ( p_lv->Selected == NULL )
       return;

    if(asROM_Path.Length()>0)
    {
       OpenROMDialog->InitialDir = asROM_Path;
       OpenROMDialog->FileName = "";
    }
    else if( 4 <= p_lv->Selected->SubItems->Count )
    {
        iLastDel = p_lv->Selected->SubItems->Strings[3].LastDelimiter("\\:");
        if ( iLastDel > 0)
        {
	        OpenROMDialog->InitialDir = p_lv->Selected->SubItems->Strings[3].SubString(1, iLastDel-1 );
                OpenROMDialog->FileName = "";
        }
    }

    //getIndexFromListView(p_lv);
    if( OpenROMDialog->Execute( ))
    {
        unsigned short index;
        if( OPERATION_NFB == m_DnParam.eOperation )
        {
            if( 0 == p_lv->ItemIndex ) // boot loader
            {
                if(ret=BL_LoadByFilepath(m_DnParam.bl_handle, OpenROMDialog->FileName.c_str()))
                {
                    if( FTHND_HANDLE_BUSY_NOW == ret )
                    {
                        Application->MessageBox( "Program is busy! Can not update setting right now.", "Fail", MB_OK );
                        return;
                    }
                    else
                    {
                        AnsiString as_msg = " Load boot-loader \"" + OpenROMDialog->FileName + "\" fail!";
                        Application->MessageBox( as_msg.c_str(), "Fail", MB_OK );
                        return;
                    }
                }
            }
            else
            {
                index = p_lv->ItemIndex-1;
            }
        }
        else // NOR
        {
            index = p_lv->ItemIndex;
        }

        if( !  ( OPERATION_NFB == m_DnParam.eOperation && 0 == p_lv->ItemIndex )  )
        {
            if(ret=DL_Rom_LoadByFilepath(g_DL_HANDLE, index, OpenROMDialog->FileName.c_str()))
        //if(ret=DL_Rom_LoadByFilepath(g_DL_HANDLE, p_lv->Selected->Index, OpenROMDialog->FileName.c_str()))
            {
                if( FTHND_HANDLE_BUSY_NOW == ret )
                {
                    Application->MessageBox( "Program is busy! Can not update setting right now.", "Fail", MB_OK );
                    return;
                }
                else if( FTHND_SCAT_REGION_IS_OVERLAP == ret )
                {
                    AnsiString as_msg = "\"" + OpenROMDialog->FileName + "\" is too large and causes region overlap!";
                    Application->MessageBox( as_msg.c_str(), "Fail", MB_OK );
                    return;
                }
                else
                {
                    AnsiString as_msg = " Load file \"" + OpenROMDialog->FileName + "\" fail!";
                    Application->MessageBox( as_msg.c_str(), "Fail", MB_OK );
                    return;
                }
            }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -