[转]自己写的一个在线升级的程序!

DSP28335程序在线升级IAP,基于CAN总线,下位机部分 阅读详情

void CUpdateDlg::OnButtonDoupdate()
{

         // 读取升级文件
          CFileStatus rStatus;
          CString szIniData;
          CString inFile;
          CString tmp;


          inFile=m_szPath+"//update.ini";

          CFile UpdateFile;
          UpdateFile.Open( inFile, CFile::modeRead);
          UpdateFile.GetStatus(inFile,rStatus);
          UpdateFile.Read(szIniData.GetBuffer(rStatus.m_size),rStatus.m_size);
          UpdateFile.Close();

          CStringArray arType;
          CStringArray arVersion;
          for(int i=1;i<=27;i+=2){
                    AfxExtractSubString(tmp,szIniData,i,'/n');
                     tmp.TrimRight();
                     tmp.TrimRight();
                    arType.Add(tmp);
          }
          for(int j=2;j<=28;j+=2){
                    AfxExtractSubString(tmp,szIniData,j,'/n');
                    tmp.TrimRight();
                    tmp.TrimRight();
                    arVersion.Add(tmp);
          }

          GetDlgItem(IDC_BUTTON_DOUPDATE)->EnableWindow(FALSE);

          CProgressCtrl* pBar = (CProgressCtrl*)GetDlgItem(IDC_PROGRESS_UPDATE);
           pBar->SetPos(5);
          m_szEditMessage = "/r/n取得网络升级地址/r/n"+ServerUrl;
          UpdateData(FALSE);

          CInternetSession mySession(NULL,0);
          CHttpFile* myHttpFile=NULL;
          BOOL bIsNewer = FALSE;
          CString myData;
          CString myUrl;
          CString m_SiteRec;
          myUrl = ServerUrl+"?pro=update";
          myHttpFile=(CHttpFile*)mySession.OpenURL(myUrl);
          while(myHttpFile->ReadString(myData)){m_SiteRec = myData;}
          myHttpFile->Close();
          mySession.Close();


          if(m_SiteRec=="ok"){
                    pBar->SetPos(10);
                    m_szEditMessage = "/r/n已经连通....../r/n"+m_szEditMessage;
                    UpdateData(FALSE);


                    for(int k=0;k<14;k++){
                              CInternetSession mySession(NULL,0);
                              CHttpFile* myHttpFile=NULL;
                              m_SiteRec.Empty();
                              myUrl = ServerUrl+"?pro=update&module="+arType[k]+"&version="+arVersion[k];
                              myHttpFile=(CHttpFile*)mySession.OpenURL(myUrl);
                              while(myHttpFile->ReadString(myData)){m_SiteRec += myData;}
                               if(m_SiteRec != "ok"){
                                         CString  inFile;
                                         inFile=m_szPath+"
//data//"+arType[k];
                                         CFile NetFile;
                                          NetFile.Open( inFile, CFile::modeCreate | CFile::modeWrite);
                                          NetFile.Write( m_SiteRec, m_SiteRec.GetLength());
                                          NetFile.Close();
                                          bIsNewer = TRUE;
                              }
                              pBar->SetPos((k+1)*(100-10)+10);
                              m_szEditMessage = "/r/n检查"+arType[k]+"文件...  成功!/r/n"+m_szEditMessage;
                              UpdateData(FALSE);
                              myHttpFile->Close();
                              mySession.Close();
                    }


                  if(bIsNewer){
                     ::MessageBox(NULL,"文件已经更新成功!",NULL,MB_ICONASTERISK);
                    }else{
                              ::MessageBox(NULL,"您的数据文件已经是最新版本了!",NULL,MB_ICONASTERISK);
                    }
          }else{
                    ::MessageBox(NULL,"没有连接网络或者找不到升级服务器,请检查",NULL,MB_ICONASTERISK);
                    pBar->SetPos(100);
          }

 // 下面是完成了.
          GetDlgItem(IDCANCEL)->ShowWindow(SW_HIDE);
          GetDlgItem(IDOK)->ShowWindow(SW_SHOW);
          GetDlgItem(IDOK)->SetFocus();
}

在线升级:OTA升级的原理和实现方式 通过无线的方式进行更新的才称之为 OTA 升级;而那种通过外部的接口接线来实现的更新,称之为本地升级。 阅读详情

相关推荐

DSP在线升级程序步骤

目标板:C2000的28335/28069 一、主要思路: 1、准备升级程序(相当于一个bootloader),作为上电首先运行的程序。进入升级程序,首先判断需不需要升级,需要升级,进入升级状态,通信完成新的主程序的接收,存入,升级成功后,进入主程序运行。 2、在主程序运行时,收到升级指令,标记升级标志,重启进入升级程序进去升级。 3、板子上电后,会调到flash启

cbffyx的专栏 2万+

stm32在线升级方案

系统分为两大模块:Bootloader和APP应用程序,系统复位后先运行Bootloader程序,此程序负责升级APP应用程序。Bootloader执行结束后跳至APP应用程序。APP负责接受新的APP程序。背景:当嵌入式软件需要固件升级时,有时需要拆卸设备,较为麻烦,为方便升级,提供远程升级的功能,可通过网络或其他通讯接口传输固件进行升级。

u011342132的博客 3106

stm32-IAP(在线升级程序)

背景知识 一、stm32的内存映射 参考博文:STM32 IAP 在线升级详解 操作前我们先来说一下内存映射: 下图在stm32f100芯片手册的29页,我们只截取关键部分 注意: 根据启动方式不同,地址空间中从0x0000 0000到0x07FF FFFF这段空间,可以是flash空间或system memory的映射(别名)。 一般而言,flash内存的开始地址是0x0800 0000. ...

xys430381_1的专栏 1万+

C#实现程序的版本在线升级更新

最近在做开发的时候,需要程序有自动版本升级的功能。特此记录下整个过程。注意事项: 下面是更新的XML文件类容,传到服务器上就可以了,得到XML文件的地址。 程序更新调用方法如下 如果需要异步下载并且显示下载进度信息,可以按照如下函数进行修改 在这过程中还参考了别人的代码过程,以及B站课程 下载地址:https://gakkiwife.lanzoub.com/ix8rN06eqtde......

猫敷雪 4042

基于FPGA的在线升级

基于FPGA的在线升级在线升级的意义在线升级的策略整体框架总结参考文献结束语 在线升级的意义 首先什么是FPGA的在线升级? 所谓FPGA的在线升级其实就是不对FPGA进行常规意义下的下载程序,便可以通过一些手段更新FPGA中的程序,一般用到的工具有ICAP原语、flash。那个该问题的解决将面临两个问题: 1、如何将新的FPGA程序下载到flash中; 2、如何让FPGA执行新的程序; FPGA...

zhangningning1996的博客 7961

DSP之IAP在线升级

在实际工程项目应用时,人工烧录升级程序耗时长,效率低,接下来介绍一种利用程序来升级程序的在线升级方案。

weixin_44461841的博客 3924

固件在线升级流程

从事硬件开发,为了方便维护,免不了对模块进行固件升级,所以对于固件升级,简单整理了一下完整的在线升级的实现思路,该思路适用于所有带通讯总线的模块。 需要注意的是,需要额外的上位机配合。 下位机在线升级流程如下图: 原创图片,转发请标注出处。 APP升级步骤 (1)读软件版本、CPU型号、模块型号 (2)UDP包,每包长度1024字节,写入update区 (3)接收n包升级...

qq_28086285的博客 6623

DSP ti bootloader与在线升级

ti bootloader:SCI/SPI/CAN/I2C等特定的外设引脚,配合ti串口烧录工具(ti官网搜索controlSUITE下载安装,在ti目录下serial_flash_programmer.exe)通过PC cmd指令进行操作下载。 优点:可直接调用flashAPI(),不需额外的协议指令; 缺点:必须通过GPIO跳线使芯片进入对应的引导模式,比如CAN引导是一组电平组合,SCI引导...

debugcc2530的博客 1万+

自己用c#写的串口升级单片机代码程序

自己用c#写的串口升级单片机代码程序,支持HEX文件处理

51单片机IAP在线升级

51单片机IAP在线升级 爱矽半导体E85F3325单片机IAP在线升级教程,此处可查看更新及demo下载 文章目录前言一、ROM资源二、KEIL有关知识1.BL51连接器:2.LX51连接器:三、Keil其他相关项说明:四、MCU启动文件说明:五、例程BOOTLOADER使用说明六、例程使用可更改说明:七、程序使用通信方式:XMODEM八、APP程序说明九、APP代码升级说明十、代码合并烧写 前言 扩展-IAP 主要用于产品出厂后应用程序的更新作用 ,类似于其他引导装载升级程序的方法,在系统中必须始终

qq_42415953的博客 6667

基于CAN总线TMS320F28335的IAP

主要是实现了通过CAN对TI的C2000系列的进行IAP编程.这在工程中经常使用

基于flash的FPGA的在线升级

基于flash的在线升级,flash的读写时钟频率为1MHz,升级的.mcs文件大小为30MB,实际写入flash的文件.bin大小为11MB,整个升级过程耗时约5min,升级完成后掉电重启,fpga能够自配置,并能够实现所升级的功能

qq_56016739的博客 1万+

28335在线升级bootloader

28335二阶bootloader,可以实现远程应用升级, 非常好用

dsp 28377在线升级 实例总结

使用dsp品台28377d来实现在线升级的功能。 方案 : 升级程序 + 应用程序 升级程序 : 主要的目的是将上位机发送过来的应用程序数据(ccs编译生成的.bin文件)烧写到指定位置,之后在跳转到应用程序执行。 应用程序 : 等待升级的程序 //-------------------------------------------------...

taiyangshenniao的专栏 1万+

C2000 DSP28377在线升级烧录 iap

C2000 DSP28377在线升级烧录 iap

自己写的程序自动升级系统delphi

自己写的服务器端升级,客户端自动下载的小程序,分两部分,升级和下载,用到了mssql数据库 delphi的

远程升级stm32程序_这是一篇关于程序在线升级的干货文章!

这是网上看到的一篇关于程序在线升级的干货文章,转与大家一起学习。原文中有穿插一些超链接及源码,这里无法同步,建议阅读原文,原文见本推文原文链接。一、在线升级基础知识什么是BootLoader?BootLoader可以理解成是引导程序, 它的作用是启动正式的App应用程序. 换言之,BootLoader是一个程序, App也是一个程序,BootLoader程序是用于启动App程序的.S...

weixin_39826971的博客 1155

基于CAN总线的DSP程序更新

基于CAN总线的DSP程序更新方法,

上一篇: 枚举系统进程核心代码
下一篇: 总结:VC小知识
goingup
博客等级 码龄22年 52粉丝 158原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值