ESA2GJK1DH1K升级篇: 关于升级篇数据校验
前言
鉴于大家都希望升级的时候加入数据校验,所以就满足大家的要求.
其实我也希望自己做的足够的稳定可靠,让大家使用起来放心.
上一节测试了一节加入校验以后的操作方式,这节来详细的说一下校验部分的代码.
数据校验方式
数据校验方式是 每个数据做累加
注意哈,单片机程序是 char 型的数据类型,然后像下面做数据累加.
char sum;
sum= sum + 数据;
数据呢就是升级的时候接收的一个字节一个字节的数据.
我还是多说一句吧!
问一下就像是上面 假设现在 sum = 255; 然后接着数据是 0x03
我问下执行 sum= sum + 0x03; 现在sum等于多少?
等于 0x02
我只做下提醒
int a = 0x0102
char b = a;
b = 0x02;
上位机呢,和单片机那边计算方式一样

上位机源码在这里大家自己去看哈

然后看单片机程序: BootLoader 加入数据校验
其实加入了校验就相当于多了一个判断而已!!!!
大家记得哈,云端的数据是这样的
SumBin1是第一份用户程序bin文件的数据校验和
SumBin2是第二份用户程序bin文件的数据校验和

先说下 BootLoader程序改变了哪些
增加了3个状态标志,两个变量

SumBin初始化为 -1 ,是因为校验值的范围是0-255,所以这个变量不能让它初始化为0

以前的程序只是获取版本,现在需要再获取下bin文件的校验值,放到下图位置

然后写上获取云端的校验值程序.
刚才定义的SumBin和UpdateStatus_SumBinRangeErr 派上用场了

接收数据的时候开始累加数据,计算数据的和
上面定义的Sum就用上了

然后呢其实有个状态变量是优化以前的一个地方
以前为了少定义一些状态,就把下面的错误设置成了 UpdateStatus_DataAddressError

其实UpdateStatus_DataAddressError 这个状态是判断的下面的


这次呢,想了想,换个新标志 UpdateStatus_MissingData

然后加上最终的判断校验

加上

其实呢,就是多加了个判断而已...
升级的时候弄了好多状态,实际上就是为了保证万无一失.

然后看单片机程序: 用户程序
写上新添加的升级状态.

把升级状态,转为字符串的地方需要加上新状态了.

然后就移植上了数据校验了
现在很多人问,什么时候才有视频
我是这样想的,我先写完文章教程以后再录制视频
其实大家应该看出来了,每一节教程都是很复杂的教程
涉及的知识点很多.我现在录制视频教程不敢打包票一次就录制好
我不想像前几次似的录制了以后发现出问题了,一旦有问题,就必须重新录制
文章有了问题好修改,修改的没有问题了,再遵循着文章录制视频教程
这样才能保证一次性就成了!
大家如果对代码上的思路不明白就问我哈,我正好可以总结大家的问题
然后再整理整理文章.
ESA2GJK1DH1K升级篇: 关于升级篇数据校验的更多相关文章
- ESA2GJK1DH1K升级篇: STM32远程乒乓升级,基于WIFI模块AT指令TCP透传方式,定时访问升级(含有数据校验)
实现功能概要 定时使用http访问云端的程序版本,如果版本不一致,然后通过http下载最新的升级文件,实现升级. 测试准备工作(默认访问我的服务器,改为自己的服务器,请看后面说明) 一,下载BootL ...
- ESA2GJK1DH1K升级篇: STM32远程乒乓升级,基于Wi-Fi模块AT指令TCP透传方式,MQTT通信控制升级(含有数据校验)-APP用户程序制作过程
前言 这一节和上一节是搭配的 给大家鱼,也必须给鱼竿! 我期望自己封装的代码,无论过了多少年都有应用的价值! 这节说明一下制作APP用户程序的过程 咱是用MQTT通信控制模块实现升级,所以首先自己的程 ...
- 1. 不吹不擂,第一篇就能提升你对Bean Validation数据校验的认知
乔丹是我听过的篮球之神,科比是我亲眼见过的篮球之神.本文已被 https://www.yourbatman.cn 收录,里面一并有Spring技术栈.MyBatis.JVM.中间件等小而美的专栏供以免 ...
- 《Java从入门到放弃》入门篇:springMVC数据校验
昨天我们扯完了数据传递,今天我们来聊聊数据校验的问题.来,跟着我一起读:计一噢叫,一按艳. 在springMVC中校验数据也非常简单,spring3.0拥有自己独立的数据校验框架,同时支持JSR303 ...
- 4-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案升级篇(远程升级WIFI内部程序)
https://www.cnblogs.com/yangfengwu/p/10360618.html 演示视频: https://www.bilibili.com/video/av54894356/ ...
- 移动商城第四篇【Controller配置、添加品牌之文件上传和数据校验】
Controller层配置 编写SpringMVC的配置文件 springmvc.xml <?xml version="1.0" encoding="UTF-8&q ...
- Struts2第十篇【数据校验、代码方式、XML配置方式、错误信息返回样式】
回顾以前的数据校验 使用一个FormBean对象来封装着web端来过来的数据 维护一个Map集合保存着错误信息-对各个字段进行逻辑判断 //表单提交过来的数据全都是String类型的,birthday ...
- 【使用篇二】SpringBoot服务端数据校验(8)
对于任何一个应用而言,客户端做的数据有效性验证都不是安全有效的,而数据验证又是一个企业级项目架构上最为基础的功能模块,这时候就要求我们在服务端接收到数据的时候也对数据的有效性进行验证.为什么这么说呢? ...
- C# 串口操作系列(3) -- 协议篇,二进制协议数据解析
原文地址:http://blog.csdn.net/wuyazhe/article/details/5627253 我们的串口程序,除了通用的,进行串口监听收发的简单工具,大多都和下位机有关,这就需要 ...
随机推荐
- django实战(四)--修改数据
这节我们实现修改数据的功能,惯例,还是先上代码: urls.py urlpatterns=[ path('curd/edit/',views.curd_edit,name='curdedit'), p ...
- pkg_resources.DistributionNotFound: The 'pip==7.1.0' distribution was not found and is required by the application
问题描述: Traceback (most recent call last): File "/usr/bin/pip", line 5, in <module> fr ...
- 常用HTTP状态码总结
HTTP状态码(HTTP Status Code) 1xx(临时响应) 表示临时响应并需要请求者继续执行操作的状态代码. 代码 说明 (继续) 请求者应当继续提出请求. 服务器返回此代码表示已收到请求 ...
- thinkphp中怎么使用phpmailer发送邮件
phpmailer发送邮件是php开发者首选的一个邮件发送插件了,下面我来介绍怎么集成phpmailer到thinkphp框架了,有需要了解的朋友可参考. phpmailer发送邮件功能很强大,今天真 ...
- DirectX:Vector
Tag DirectX下的博客主要用于记录DirectX的学习过程,主要参考<DirectX 12 3D 游戏实战开发>. Vector in DirectX Shader的编写离不开数学 ...
- Rider中Winform开发支持预览(5)
1.Rider .netCore3.0 winform设计器支持预览,这点vs目前还不支持. 2.不过winform下控件选择工具栏都是没有图标的
- WPF DataGird 类似Excel筛选效果 未成品
这个本是针对MSDN上所写的代码,不过写一半不想写了. 不想浪费代码,是个半成品的半成品. 效果图: 思路: 利用PopUp来做显示层. 显示层中的数据则是绑定到Datagrid的数据. popup中 ...
- SublimeText3安装Markdown插件
由于Webstrom对md文件的预览效果并不理想(与实际网页编译效果差别较大),所以我又改用Sublime进行本地编辑,下面介绍一下怎么搭建环境. 插件安装 整套环境我们就需要两个插件:Markdow ...
- [原创]Spring-Security-Oauth2.0浏览器端的登录项目分享
1.简介 CitySecurity项目为正式上线项目做得一个Demo,这里主要介绍浏览器端的登录.本项目使用了SpringSecurity实现表单安全登录.图形验证的校验.记住我时长控制机制.第三 ...
- 【java】Java多线程总结之线程安全队列Queue【转载】
原文地址:https://www.cnblogs.com/java-jun-world2099/articles/10165949.html ============================= ...