前言

  鉴于大家都希望升级的时候加入数据校验,所以就满足大家的要求.

  其实我也希望自己做的足够的稳定可靠,让大家使用起来放心.

  上一节测试了一节加入校验以后的操作方式,这节来详细的说一下校验部分的代码.

数据校验方式

  数据校验方式是 每个数据做累加

  注意哈,单片机程序是 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升级篇: 关于升级篇数据校验的更多相关文章

  1. ESA2GJK1DH1K升级篇: STM32远程乒乓升级,基于WIFI模块AT指令TCP透传方式,定时访问升级(含有数据校验)

    实现功能概要 定时使用http访问云端的程序版本,如果版本不一致,然后通过http下载最新的升级文件,实现升级. 测试准备工作(默认访问我的服务器,改为自己的服务器,请看后面说明) 一,下载BootL ...

  2. ESA2GJK1DH1K升级篇: STM32远程乒乓升级,基于Wi-Fi模块AT指令TCP透传方式,MQTT通信控制升级(含有数据校验)-APP用户程序制作过程

    前言 这一节和上一节是搭配的 给大家鱼,也必须给鱼竿! 我期望自己封装的代码,无论过了多少年都有应用的价值! 这节说明一下制作APP用户程序的过程 咱是用MQTT通信控制模块实现升级,所以首先自己的程 ...

  3. 1. 不吹不擂,第一篇就能提升你对Bean Validation数据校验的认知

    乔丹是我听过的篮球之神,科比是我亲眼见过的篮球之神.本文已被 https://www.yourbatman.cn 收录,里面一并有Spring技术栈.MyBatis.JVM.中间件等小而美的专栏供以免 ...

  4. 《Java从入门到放弃》入门篇:springMVC数据校验

    昨天我们扯完了数据传递,今天我们来聊聊数据校验的问题.来,跟着我一起读:计一噢叫,一按艳. 在springMVC中校验数据也非常简单,spring3.0拥有自己独立的数据校验框架,同时支持JSR303 ...

  5. 4-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案升级篇(远程升级WIFI内部程序)

    https://www.cnblogs.com/yangfengwu/p/10360618.html 演示视频: https://www.bilibili.com/video/av54894356/ ...

  6. 移动商城第四篇【Controller配置、添加品牌之文件上传和数据校验】

    Controller层配置 编写SpringMVC的配置文件 springmvc.xml <?xml version="1.0" encoding="UTF-8&q ...

  7. Struts2第十篇【数据校验、代码方式、XML配置方式、错误信息返回样式】

    回顾以前的数据校验 使用一个FormBean对象来封装着web端来过来的数据 维护一个Map集合保存着错误信息-对各个字段进行逻辑判断 //表单提交过来的数据全都是String类型的,birthday ...

  8. 【使用篇二】SpringBoot服务端数据校验(8)

    对于任何一个应用而言,客户端做的数据有效性验证都不是安全有效的,而数据验证又是一个企业级项目架构上最为基础的功能模块,这时候就要求我们在服务端接收到数据的时候也对数据的有效性进行验证.为什么这么说呢? ...

  9. C# 串口操作系列(3) -- 协议篇,二进制协议数据解析

    原文地址:http://blog.csdn.net/wuyazhe/article/details/5627253 我们的串口程序,除了通用的,进行串口监听收发的简单工具,大多都和下位机有关,这就需要 ...

随机推荐

  1. Loj #3042. 「ZJOI2019」麻将

    Loj #3042. 「ZJOI2019」麻将 题目描述 九条可怜是一个热爱打麻将的女孩子.因此她出了一道和麻将相关的题目,希望这题不会让你对麻将的热爱消失殆尽. 今天,可怜想要打麻将,但是她的朋友们 ...

  2. LeetCode 167:两数之和 II - 输入有序数组 Two Sum II - Input array is sorted

    公众号: 爱写bug(ID:icodebugs) 给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数. 函数应该返回这两个下标值 index1 和 index2,其中 index ...

  3. 三大类sql语句——该记录是本人以前微博上的文章

    一.DML语句二.DDL语句三.事务控制语句一.DML语句-Data Mulipulation LanguageDML语句数据操作野菊执行后会生成一个事务,事务需要提交才能够永久生效,在commit前 ...

  4. win10 配置IIS

    互联网信息服务(英語:Internet Information Services),在台湾被称为网际网路资讯服务,是由微软公司提供的基于运行Microsoft Windows的互联网基本服务.最初是W ...

  5. ArrayList 源码分析 基于jdk1.8:

    1:数据结构: transient Object[] elementData;  //说明内部维护的数据结构是一个Object[] 数组 成员属性: private static final int ...

  6. ReentrantLock的实现原理及AQS和CAS

    AQS,即AbstractQueuedSynchronizer, 队列同步器,它是多线程访问共享资源的同步器框架,Java中的ReentrantLock/Semaphore/CountDownLatc ...

  7. IDEA Rider 准备试用一段时间(1)

    IDEA Rider是一个C#开发工具,目前最高版本支持C# 8.0语法. IDEA Rider2019.2月版本相比之前2018版本多了新功能,又支持Edit and Continue,所以准备试用 ...

  8. Lua 转义字符

    [1]Lua语言在Windows环境中的文件路径写法 示例程序如下: -- test1 local file = io.open("E:\test\100.txt", 'rb') ...

  9. 【LeetCode】145. Binary Tree Postorder Traversal

    Difficulty: Hard  More:[目录]LeetCode Java实现 Description https://leetcode.com/problems/binary-tree-pos ...

  10. AWS云创建EC2与使用注意事项-踩坑记录

    目录 AWS 一 创建 EC2(云服务器) 二.AWS 注意事项 三.AWS 申请 SSL 证书 四. 创建VPC AWS 文章 GitHub 地址: 点我 AWS云服务器价格计算器 AWS WEB ...