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 我们的串口程序,除了通用的,进行串口监听收发的简单工具,大多都和下位机有关,这就需要 ...
随机推荐
- Nodejs操作MySQL数据库
https://github.com/mysqljs/mysql 如何用nodejs操作MySql数据呢,其实写法还是简单的, 1.开始在你的node项目中 npm install mysql - ...
- Java奇妙之旅day_01
一 .java程序运行原理 1.首先我们下载JDK,它是一组命令行工具,含有编译.调试.和执行java程序所需要的软件和工具. (1)关于下载我们在这不作赘述,在Oracle官方网站直接下载,一直点击 ...
- 【转】用VMware 8安装Ubuntu 12.04详细过程(图解)
图解演示环境版本: 本机系统: WIN7 虚拟机:VMware Workstation 8 (英文版) 安装目标:Ubuntu Desktop 12.04 LTS (请点击这里)先下载好iso镜像文 ...
- 【Luogu5349】幂(分治FFT)
[Luogu5349]幂(分治FFT) 题面 洛谷 题解 把多项式每一项拆出来考虑,于是等价于要求的只有\(\sum_{i=0}^\infty i^kr^i\). 令\(f(r)=\sum_{i=0} ...
- golang学习笔记 --go test
Go语言拥有一套单元测试和性能测试系统,仅需要添加很少的代码就可以快速测试一段需求代码. go test 命令,会自动读取源码目录下面名为 *_test.go 的文件,生成并运行测试用的可执行文件.输 ...
- C#与C++与互操作
一.C#调用C++库 1.创建C++库 打开VisualStudio,创建一个C++工程,输入项目名称HelloWorldLib 确定,然后下一步.选择应用程序类型为DLL 单击完成,我们就创建好了一 ...
- window.postMessage()实现跨域消息传递
window.postMessage() 方法可以安全地实现跨源通信.通常,对于两个不同页面的脚本,只有当执行它们的页面位于具有相同的协议(通常为https), 端口号(443为https的默认值), ...
- ElasticSearch(九)e代驾使用Elasticsearch流程设计(Yii1版本)
一.控制器层的更新.添加.删除 class AddKnowledgeAction extends CAction { //add and update public function actionPo ...
- idea2019注册码
都9012年了,怎么还能忍受用低版本的编辑器呢, IntelliJ IDEA 2019破解教程拿走不谢 下载工具 Mac版idea下载链接: 链接:https://pan.baidu.com/s/1m ...
- 前端常见的HTML+CSS面试题(附答案)
HTML 1. <image>标签上title属性与alt属性的区别是什么? alt属性是为了给那些不能看到你文档中图像的浏览者提供文字说明的.且长度必须少于100个英文字符或者用户必须保 ...