前言

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

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

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

数据校验方式

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

  注意哈,单片机程序是 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. Qt 编写串口调试助手

    一.成品图展示 成品图如下所示: 二.串口通讯步骤 1.在工程文件(.pro)中添加串口通信相关运行库:QT += serialport 2.在头文件中添加: #include <QSerial ...

  2. SpringBoot第十五篇:swagger构建优雅文档

    作者:追梦1819 原文:https://www.cnblogs.com/yanfei1819/p/11007470.html 版权声明:本文为博主原创文章,转载请附上博文链接! 引言   前面的十四 ...

  3. Zookeeper 运维实践手册

    Zookeeper是一个高可用的分布式数据管理与协调框架,该框架能很好地保证分布式环境中数据一致性.一般用来实现服务发现(类似DNS),配置管理,分布式锁,leader选举等. 一.生产环境中Zook ...

  4. dns攻击包代码实现

    博客地址:http://home.cnblogs.com/u/zengjianrong/ 代码没有做好精简,有些多余的没有删去,因为博主太懒了哈哈 #include <stdio.h> # ...

  5. RC4算法

    RC4算法简介:https://baike.baidu.com/item/RC4%E7%AE%97%E6%B3%95/9686396?fr=aladdin RC4算法java实现: /** * RC4 ...

  6. openresty 报错:lua entry thread aborted: runtime error

    [1]问题现象 (1)本地openresty系统 (2)报错信息 2019/09/10 08:13:55 [error] 2385#2385: *4 lua entry thread aborted: ...

  7. 【leetcode-200 深度优先+广度优先】 岛屿数量

    给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量.一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的.你可以假设网格的四个边均被水包围. 示例 1: 输入: ...

  8. C# vb .NET读取识别条形码线性条码UPC-E

    UPC-E是比较常见的条形码编码规则类型的一种.如何在C#,vb等.NET平台语言里实现快速准确读取该类型条形码呢?答案是使用SharpBarcode! SharpBarcode是C#快速高效.准确的 ...

  9. Python——pip快速下载第三方库到指定环境

    pip install Scikit-learn --target=C:/Users/Jery/PycharmProjects/play/venv/Lib/site-packages -i https ...

  10. 二、NodeJS入门——准备工作(2)——MongoDB安装以及客户端Robomongo安装和使用

    目录     1.介绍     2.下载地址     3.MongoDB安装过程     4.MongoDB的使用     5.MongoDB添加管理员账户     6.RoboMongo安装过程   ...