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 我们的串口程序,除了通用的,进行串口监听收发的简单工具,大多都和下位机有关,这就需要 ...
随机推荐
- Guarded Suspension设计模式
Guarded Suspension 设计模式可以保证,当线程在访问某个对象时,发现条件不满足,就挂起等待条件满足时再次访问 public class GuardedSuspensionQueue { ...
- Gordon家族(二)
本文是 Gordon家族(一) 的续集. 16. GoLearn 介绍:Gordon博士为Go开发者提供了一系列机器学习的库,开箱即用. 地址:https://github.com/sjwhitwor ...
- 『Pushbox 点双联通分量』
Pushbox Description 周婧涵和她的小伙伴们发明了一个新游戏.游戏名字很准确,但不是特别有 创意.她们称之为"推动箱子在谷仓周围找到正确的位置,不要移动干草"游戏 ...
- 用友U9 刷新当前页面代码
this.Action.NavigateAction.Refresh(null, true);//刷新当前页
- 如何写出优雅的 Golang 代码
原文: https://draveness.me/golang-101.html Go 语言是一门简单.易学的编程语言,对于有编程背景的工程师来说,学习 Go 语言并写出能够运行的代码并不是一件困难的 ...
- Python——XPath提取某个标签下所有文本
/text()获取指定标签下的文本内容,//text()获取指定标签下的文本内容,包括子标签下的文本内容,比较简单的是利用字符串相加: room_infos = li.xpath('.//a[@cla ...
- 0 != null 为什么报指针?
大家好,这是我第一次写博客,来分享我平时工作中遇到的问题及平时学习的技术,如果有写的不好或者不对的地方还望大家能够指出和包涵. 那么接下来就开始说下我工作中遇到的这个问题,我写了一个test,如下: ...
- Windows 计算机取证
windows安全账号管理(SAM) Unveilling The Password Encryption Process Under Windows –a Practical Attack 上述这篇 ...
- 5.css三角的做法
如上图所示,类似这样的小三角都可以通过以下代码写出: .box1 { width: ; height: ; /* border: 10px solid pink; */ border-top: 10p ...
- elementui 自定义表头 renderHeader的写法 给增加el-tooltip的提示
1.html <el-table-column prop="taxes" :render-header="renderHeader" width=&quo ...