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 我们的串口程序,除了通用的,进行串口监听收发的简单工具,大多都和下位机有关,这就需要 ...
随机推荐
- 动手学深度学习7-从零开始完成softmax分类
获取和读取数据 初始化模型参数 实现softmax运算 定义模型 定义损失函数 计算分类准确率 训练模型 小结 import torch import torchvision import numpy ...
- 动手学深度学习4-线性回归的pytorch简洁实现
导入同样导入之前的包或者模块 生成数据集 通过pytorch读取数据 定义模型 初始化模型 定义损失函数 定义优化算法 训练模型 小结 本节利用pytorch中的模块,生成一个更加简洁的代码来实现同样 ...
- ng 打包给路径添加前缀
1.ng build --base --href /前缀名/--common - chunk --output-hashing=all --optimization 2.更改ts和html中的路径,将 ...
- Can't locate Math/Round.pm in @INC
遭遇报错: Can't locate Math/Round.pm in @INC 经过亲自测试,下面的命令解决了我的问题. yum install perl-Math-Round 参考资料 ===== ...
- STM32 串口通信基础知识
1.串口通信简介 通信接口的两种方式: 并行通信 -传输原理:数据各个位同时传输. -优点:速度快 -缺点:占用引脚资源多 串行通信 -传输原理:数据按位顺序传输. -优点:占用引脚资源少 -缺点:速 ...
- 2019-11-29-C#-字典-Dictionary-的-TryGetValue-与先判断-ContainsKey-然后-Get-的性能对比
原文:2019-11-29-C#-字典-Dictionary-的-TryGetValue-与先判断-ContainsKey-然后-Get-的性能对比 title author date CreateT ...
- vue数据修改不同步更新的问题解决方案
最近在做一个组件封装的功能,用到父组件将数组(this.DataSource,this.DefaultItem)传到给子组件,子组件接受该数组来进行添加数组和删除数组的操作.因为子组件无法直接修改父组 ...
- python 正则表达式、re
正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配. 参考链接:https://www.runoob.com/python/python-reg-expressions. ...
- 两道JVM面试题,竟让我回忆起了中学时代!
作者:肥朝 原文链接:https://mp.weixin.qq.com/s/4wJ6ANal0blLOseasfIuVw 中学授课模式 考虑到可能有部分粉丝对JVM参数不清楚,所以我们参照中学的授课模 ...
- eclipse安装sts