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

📄 configdlg.cpp.svn-base

📁 vc环境下编译的一个对USB设备进行烧录的驱动程序
💻 SVN-BASE
📖 第 1 页 / 共 4 页
字号:

	configfile.Write(&config.power_off_gpio, sizeof(config.power_off_gpio));

	configfile.Write(&config.init_usb, sizeof(config.init_usb));

	configfile.Write(&config.init_usb_gpio_number, sizeof(config.init_usb_gpio_number));

	configfile.Write(&config.init_usb_register, sizeof(config.init_usb_register));

	configfile.Write(&config.init_usb_register_bit, sizeof(config.init_usb_register_bit));

	configfile.Write(&config.nandflash_parameter_count, sizeof(config.nandflash_parameter_count));


	for(i = 0; i < config.nandflash_parameter_count; i++)
	{
		configfile.Write(&config.nandflash_parameter[i].chip_id, sizeof(config.nandflash_parameter[i].chip_id));
		configfile.Write(&config.nandflash_parameter[i].page_size, sizeof(config.nandflash_parameter[i].page_size));
		configfile.Write(&config.nandflash_parameter[i].page_per_blk, sizeof(config.nandflash_parameter[i].page_per_blk));
		configfile.Write(&config.nandflash_parameter[i].blk_num, sizeof(config.nandflash_parameter[i].blk_num));
		configfile.Write(&config.nandflash_parameter[i].group_blk_num, sizeof(config.nandflash_parameter[i].group_blk_num));
		configfile.Write(&config.nandflash_parameter[i].plane_blk_num, sizeof(config.nandflash_parameter[i].plane_blk_num));
		configfile.Write(&config.nandflash_parameter[i].spare_size, sizeof(config.nandflash_parameter[i].spare_size));
		configfile.Write(&config.nandflash_parameter[i].col_cycle, sizeof(config.nandflash_parameter[i].col_cycle));
		configfile.Write(&config.nandflash_parameter[i].lst_col_mask, sizeof(config.nandflash_parameter[i].lst_col_mask));
		configfile.Write(&config.nandflash_parameter[i].row_cycle, sizeof(config.nandflash_parameter[i].row_cycle));
		configfile.Write(&config.nandflash_parameter[i].last_row_mask, sizeof(config.nandflash_parameter[i].lst_col_mask));
		configfile.Write(&config.nandflash_parameter[i].custom_nd, sizeof(config.nandflash_parameter[i].custom_nd));
		configfile.Write(&config.nandflash_parameter[i].flag, sizeof(config.nandflash_parameter[i].flag));
		configfile.Write(&config.nandflash_parameter[i].cmd_len, sizeof(config.nandflash_parameter[i].cmd_len));
		configfile.Write(&config.nandflash_parameter[i].data_len, sizeof(config.nandflash_parameter[i].data_len));
		configfile.Write(&config.nandflash_parameter[i].des_str, 255);
	}
	

	configfile.Close();


	for(i = 0; i < config.download_fat_image_count; i++)
	{
		config.total_download_file_len += (config.images[i].File_Size + FAT_IMAGE_SAFE_SIZE);
	}
	
	return count_downloadfile_size();
	
}


UINT hex2int(const char *str)
{
    int i;
    UINT number=0; 
    int order=1;
    TCHAR ch;
    for(i=lstrlen(str)-1;i>=0;i--)
    {
		ch=str[i];
		if(ch=='x' || ch=='X')break;
		
		if(ch>='0' && ch<='9')
		{
			number+=order*(ch-'0');
			order*=16;
		}
		if(ch>='A' && ch<='F')
		{
			number+=order*(ch-'A'+10);
			order*=16;
		}
		if(ch>='a' && ch<='f')
		{
			number+=order*(ch-'a'+10);
			order*=16;
		}
    }
    return number;
}


CConfigDlg::CConfigDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CConfigDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CConfigDlg)
	//}}AFX_DATA_INIT
}


void CConfigDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CConfigDlg)
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CConfigDlg, CDialog)
	//{{AFX_MSG_MAP(CConfigDlg)
	ON_WM_CLOSE()
	ON_BN_CLICKED(IDC_BUTTON_ENTER, OnButtonEnter)
	ON_BN_CLICKED(IDC_BUTTON_CANCEL, OnButtonCancel)
	ON_COMMAND(IDM_LOAD_NANDBOOT, OnLoadNandboot)
	ON_COMMAND(IDM_LOAD_NORBOOT, OnLoadNorboot)
	ON_COMMAND(IDM_CONFIG_HELP, OnConfigHelp)
	ON_BN_CLICKED(IDC_BUTTON_BROWSE_FOLDER, OnButtonBrowseFolder)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CConfigDlg message handlers


BOOL CConfigDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	
	m_sheet.AddPage(&m_page1);
	m_sheet.AddPage(&m_page2);
	m_sheet.Create(this, WS_CHILD | WS_VISIBLE, WS_EX_CONTROLPARENT);

	/*
	CMenu *menu = GetMenu();

	if(config.bNandBoot)
		menu->CheckMenuItem(IDM_LOAD_NORBOOT, MF_BYCOMMAND | MF_UNCHECKED);
	else
		menu->CheckMenuItem(IDM_LOAD_NANDBOOT, MF_BYCOMMAND | MF_UNCHECKED);
	*/

	m_sheet.SetWindowPos(NULL, 10, 10, 0, 0, SWP_NOSIZE | SWP_NOZORDER | SWP_NOACTIVATE);

	
	return TRUE;  
	    
}



void CConfigDlg::OnClose() 
{
	// TODO: Add your message handler code here and/or call default

	/* Aug.06,07 - Added to validate the FS Format-Table when closing the setting dialog. */
	if(CheckFormatData(0xFFFFFFFF) != 0)
	{
		int ret = MessageBox(_T("文件系统分区表有问题,是否仍然要返回到下载界面?"), NULL, MB_YESNO);

		if(ret == IDNO)
		{
			return;
		}
	}

	m_page1.init = FALSE;
	m_page2.init = FALSE;

	close_config();

	/* Aug.06,07 - Change to ONOK which will store variables before close dialog. */
	CDialog::OnOK();
}


BOOL CConfigDlg::PreTranslateMessage(MSG* pMsg) 
{
	// TODO: Add your specialized code here and/or call the base class
	if(pMsg->wParam == VK_RETURN || pMsg->wParam == VK_ESCAPE)
		return TRUE;
	
	return CDialog::PreTranslateMessage(pMsg);
}

void CConfigDlg::OnButtonEnter() 
{
	// TODO: Add your control notification handler code here

	if(m_page1.init)
	{
		bool ret = m_page1.Get_ConfigData();
        if(!ret)
            return;
//		m_page1.init = FALSE;
	}

	if(m_page2.init)
	{
		bool ret = m_page2.Get_ConfigData();
        if(!ret)
            return;
//		m_page2.init = FALSE;
	}
	
	OnClose();

//	OnOK();
}

void CConfigDlg::OnButtonCancel() 
{
	// TODO: Add your control notification handler code here
	OnCancel();
	m_page1.init = FALSE;
	m_page2.init = FALSE;
	
}


void CConfigDlg::SetConfigItem()
{
	m_page1.SetConfigItem();
	m_page2.SetConfigItem();
}

void CConfigDlg::OnLoadNandboot() 
{
	// TODO: Add your command handler code here

	CMenu *menu = GetMenu();

	menu->CheckMenuItem(IDM_LOAD_NANDBOOT, MF_BYCOMMAND | MF_CHECKED);
	menu->CheckMenuItem(IDM_LOAD_NORBOOT, MF_BYCOMMAND | MF_UNCHECKED);

	if( !open_config())
		LoadDefaultCfg();

	SetConfigItem();

}

void CConfigDlg::OnLoadNorboot() 
{
	// TODO: Add your command handler code here

	CMenu *menu = GetMenu();

	menu->CheckMenuItem(IDM_LOAD_NANDBOOT, MF_BYCOMMAND | MF_UNCHECKED);
	menu->CheckMenuItem(IDM_LOAD_NORBOOT, MF_BYCOMMAND | MF_CHECKED);

	if( !open_config())
		LoadDefaultCfg();

	SetConfigItem();
}

void CConfigDlg::OnConfigHelp() 
{
	// TODO: Add your command handler code here
	
	ShellExecute(this->m_hWnd, NULL, ConverPathToAbsolute("readme.txt"), NULL, NULL, SW_SHOWNORMAL);

}

void CConfigDlg::OnButtonBrowseFolder() 
{
	// TODO: Add your control notification handler code here
	extern HINSTANCE _hInstance;


	BROWSEINFO pbi;
	
	memset ( &pbi, 0, sizeof ( pbi ));

	pbi.hwndOwner = GetSafeHwnd();
	pbi.pidlRoot = NULL;
	pbi.lpszTitle = __T("请选择资源树目录路径");
	pbi.ulFlags = BIF_RETURNONLYFSDIRS ;

	LPITEMIDLIST pidl;
	
	if((pidl = SHBrowseForFolder (&pbi)) != NULL)
	{
		TCHAR path[MAX_PATH];
		TCHAR *relative_path;

        SHGetPathFromIDList ( pidl, path );
       

        // free memory used
        IMalloc * imalloc = 0;
        if ( SUCCEEDED( SHGetMalloc ( &imalloc )) )
        {
            imalloc->Free ( pidl );
            imalloc->Release ( );
        }

		if((relative_path = strstr(path, Current_DirectoryBuffer)) != NULL)
		{
			relative_path = path + strlen(Current_DirectoryBuffer) + 1;
			SetDlgItemText(IDC_EDIT_RESOURCE_PATH, relative_path);
		}
		else
			SetDlgItemText(IDC_EDIT_RESOURCE_PATH, path);	
    }			

}

int CheckFormatData(UINT total_size)
{
    bool bFake = false;
	
	UINT curFake_start = 0;
	UINT curFake_end = 0;

	UINT preDisk_end = 0;
	
	if(config.format_count <= 0)
	{
		return 1;
	}

    for(int i = 0; i < config.format_count; i++)
    {
        if(config.formats[i].Start_Address > total_size)
		{
			return 1;
		}

        if(config.formats[i].ZoneType == ZT_FAKE)
        {
            bFake = true;

			if(config.formats[i].Start_Address < curFake_end)
			{
				return 2;
			}

			curFake_start = config.formats[i].Start_Address;
			curFake_end = config.formats[i].End_Address;
		}
		else
		{
			if(bFake)
			{
				if(config.formats[i].Start_Address < curFake_start)
				{
					return 3;
				}

				if(config.formats[i].End_Address > curFake_end)
				{
					return 4;
				}
			}

			if(config.formats[i].Start_Address > config.formats[i].End_Address)
			{
				return 5;
			}

			if(config.formats[i].Start_Address < preDisk_end)
			{
				return 6;
			}
			
			preDisk_end = config.formats[i].End_Address;
		}
	}

	return 0;
}

⌨️ 快捷键说明

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