前言

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

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

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

数据校验方式

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

  注意哈,单片机程序是 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. 如何将vscode的终端放到右侧

    这个问题我之前上百度搜了一下,只有百度经验有, 但是百度经验的图片看不清,而且按照百度经验的回答,我找不到它说的用户设置 于是我问了一下同学,很简单. 右击终端那条框,我们可以得到下面这张截图 点击将 ...

  2. C++:inline

    inline inline是C++提供的一个关键字,它用于函数定义之前,表示把函数定义为内联函数.内联函数的含义是:在函数调用点把函数体直接展开,取代函数调用. inline int getZero( ...

  3. 使用Redis实现中英文自动补全功能详解

    1.Redis自动补全功能介绍: ​ Redis可以帮我们实现很多种功能,今天这里着重介绍的是Redis的自动补全功能的实现.我们使用有序集合,并score都为0,这样就按元素值的字典序排序.然后我们 ...

  4. .net持续集成cake篇之常见文件及路径操作

    系列目录 Cake常见文件和路径操作 在自动化构建任务里,很多操作都是跟文件打交道,比如文件打包,文件压缩,文件归档,文件传输,目录清理等.本节介绍一些cake里常见的文件操作方法 Cake相对路径问 ...

  5. PIE SDK创建金字塔算法

    1.算法功能简介 为栅格影像建立了金字塔,这些影像便能快速进行显示.除了在屏幕上显示外,金字塔还包含了很多其他信息.如果没有金字塔,那么在显示时就要访问整理栅格数据集,然后进行大量计算来选择哪些栅格像 ...

  6. nginx配置多个TLS证书,以及TLS SNI简介

    背景 原来申请的正式域名备案通过,TLS证书也申请了.之前使用的临时域名和证书作为测试环境使用.于是要在单个ECS主机上配置nginx多个证书和多个域名. 实践 nginx部署多个TLS证书很简单,在 ...

  7. ES6的强大变量声明

    ES6是javascript的新特性,今天来说说声明变量 过去我们声明变量,都是一个一个声明,现在有了一种新的声明方式,它可以将一个多个变量同时声明,声明后变量同时存在一个集合中,集合的数据类型是对象 ...

  8. vue底部导航的精准显示

    让底部导航只显示在一级页面: 路由中的写法: import Vue from 'vue' import Router from 'vue-router' //import HelloWorld fro ...

  9. 浅谈华为验厂对MES系统的要求

    众所周知,华为对供应商在管理.防错.品控.追溯等方面的要求都非常严格.在华为验厂时,对供应商的信息系统,尤其是MES系统的评估也是有非常具体的要求.那么我们今天就来谈谈华为验厂时,对MES系统有哪些具 ...

  10. web-api POST body object always null

      If the any of values of the request's JSON object are not the same type as expected by the service ...