打包hex文件
来源:互联网 发布:网络免费卫星电视直播 编辑:程序博客网 时间:2024/06/16 03:44
我的想法是写个MFC程序,让用户输入 打包的文件,和打包后保存的文件,打包的版本信息,名称,文件大小等等
//建立一个线程
dealThread = CreateThread((LPSECURITY_ATTRIBUTES)NULL,0,(LPTHREAD_START_ROUTINE)deal_function,this,0,&dealThreadid);
CpackagHEXDlg *p=(CpackagHEXDlg *)lpParm;
// p->p_dealthread();
//return true;
CString packagefile;
CString savefile;
CString xyh_version;
CString filename;
int i;
int j=0;
int filesize;
CStdioFile myFile;
CFileException fileException;
//int size = 2*1024*1024;
char *scr_buf = new char[SIZE_BUF];
//char *des_buf = new char[SIZE_BUF];
char des_temp[50]={0};
char jiaru_temp[50]={0};
//char* temp_p=NULL;
//char* temp_q=NULL;
//从界面取得版本,名字信息
p->m_pre_hex_name.GetWindowText(packagefile);
p->m_last_hex_name.GetWindowText(savefile);
p->m_version.GetWindowText(xyh_version);
if(xyh_version.GetLength()!=4)
{
p->MessageBox(L"版本信息格式错误!");
kk=0;
return -1;
}
p->m_filename.GetWindowText(filename);
if(filename.GetLength()>16)
{
p->MessageBox(L"名称字数过多!");
kk=0;
return -1;
}
memset(scr_buf,0,sizeof(scr_buf));
if(myFile.Open(packagefile, CFile::typeBinary|CFile::modeRead,&fileException))
{
UINT res=-1;
res = myFile.Read(scr_buf,SIZE_BUF);
if(!res)
{
p->MessageBox(_T("读文件操作失败!"));
delete[] scr_buf;
//delete[] des_buf;
kk=0;
return FALSE;
}
scr_buf[res]='\0';
myFile.Close();
}
else{
p->MessageBox(_T("打开读文件失败!"));
delete[] scr_buf;
//delete[] des_buf;
kk=0;
return FALSE;
}
filesize = strlen(scr_buf);
if(myFile.Open(savefile, CFile::modeCreate|CFile::typeBinary|CFile::modeWrite,&fileException))
{
//把版本写入目标buf中
memset(jiaru_temp,0,sizeof(jiaru_temp));
memset(des_temp,0, sizeof(des_temp));
WideCharToMultiByte(CP_ACP,WC_COMPOSITECHECK,xyh_version.GetBuffer(xyh_version.GetLength()),xyh_version.GetLength(),jiaru_temp,xyh_version.GetLength(),NULL,NULL);
sprintf(des_temp,":F0%02x%02x%02x%02x\r\n",jiaru_temp[0],jiaru_temp[1],jiaru_temp[2],jiaru_temp[3]); //转化成hex格式文件保存进文件
myFile.Write(des_temp,strlen(des_temp));
//把名字写入文件间中
memset(jiaru_temp,0,sizeof(jiaru_temp));
memset(des_temp,0, sizeof(des_temp));
WideCharToMultiByte(CP_ACP,WC_COMPOSITECHECK,filename.GetBuffer(filename.GetLength()),filename.GetLength(),jiaru_temp,filename.GetLength(),NULL,NULL);
myFile.Write(":F1",3);
for(i=0; ;i++)
{
memset(des_temp,0, sizeof(des_temp));
if(jiaru_temp[i]=='\0') break;
sprintf(des_temp,"%02x",jiaru_temp[i]);
myFile.Write(des_temp,strlen(des_temp));
}
myFile.Write("\r\n",2);
//把文件大小写到目标文件中区
memset(jiaru_temp,0,sizeof(jiaru_temp));
memset(des_temp,0, sizeof(des_temp));
sprintf(jiaru_temp,"%d",filesize);
//sprintf(des_temp,":F2%02x%02x%02x%02x\r\n",jiaru_temp[0],jiaru_temp[1],jiaru_temp[2],jiaru_temp[3]);
//myFile.Write(des_temp,strlen(des_temp));
myFile.Write(":F2",3);
for(i=0; ;i++)
{
memset(des_temp,0, sizeof(des_temp));
if(jiaru_temp[i]=='\0') break;
sprintf(des_temp,"%02x",jiaru_temp[i]);
myFile.Write(des_temp,strlen(des_temp));
}
myFile.Write("\r\n",2);
myFile.Write(scr_buf,strlen(scr_buf));
myFile.Close();
}
else{
p->MessageBox(_T("打开写文件失败!"));
//delete[] des_buf;
delete[] scr_buf;
kk=0;
return FALSE;
}
p->MessageBox(L"打包文件成功!");
//delete[] des_buf;
delete[] scr_buf;
kk=0;
return TRUE;
- 打包hex文件
- HEX 文件
- 把打包好的hex格式的文件转化成bin文件格式
- 什么是HEX文件
- Intel Hex 文件分析
- hex文件结构
- IAR生产HEX文件
- HEX文件分析
- .hex 文件详解 stm32
- .hex 文件详解 stm32
- 关于IAREWSTM8 HEX文件
- HEX文件学习心得
- Hex文件分析
- CC2530 Hex文件解析
- 合并两个HEX文件
- HEX文件解析
- Hex文件解读
- Srec&Hex文件介绍
- 矢量图形和矢量图形创建软件的修改
- 自定义的信号和槽注意点
- oracle小结
- python网址
- Android照片墙应用实现,再多的图片也不怕崩溃
- 打包hex文件
- 使用重绘解决页面错位、不对齐、行高失效等问题
- Beautiful Soup安装
- ubuntu记事本乱码
- unity3d 凹凸贴图、法线贴图、置换贴图 (一)
- sed简单使用
- 数据结构之(图最短路径之)Floyd(弗洛伊德)算法
- 图形学编程学习日志01
- 焦距、物距与像距