zoukankan      html  css  js  c++  java
  • 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

        

      然后加上最终的判断校验

        

      加上

        

       其实呢,就是多加了个判断而已...

      升级的时候弄了好多状态,实际上就是为了保证万无一失.

        

    然后看单片机程序:  用户程序

      写上新添加的升级状态.

        

      把升级状态,转为字符串的地方需要加上新状态了.

        

      然后就移植上了数据校验了

    现在很多人问,什么时候才有视频

      我是这样想的,我先写完文章教程以后再录制视频

      其实大家应该看出来了,每一节教程都是很复杂的教程

      涉及的知识点很多.我现在录制视频教程不敢打包票一次就录制好

      我不想像前几次似的录制了以后发现出问题了,一旦有问题,就必须重新录制

      文章有了问题好修改,修改的没有问题了,再遵循着文章录制视频教程

      这样才能保证一次性就成了!

      大家如果对代码上的思路不明白就问我哈,我正好可以总结大家的问题

      然后再整理整理文章.

      

  • 相关阅读:
    Win10以管理员身份运行Loadrunner11时候提示“管理员已阻止你运行此应用”
    logrotate日志切割
    Scala的型变
    Caused by: com.esotericsoftware.kryo.KryoException: Buffer overflow. Available: 0, required: 134217728
    ERROR BatchJobMain: Task not serializable
    Spark创建HiveContext报错tez的问题
    Spark初始换HiveContext空指针异常
    windows10专业版 操作系统无法监听远程端口
    windows环境如何上传项目到gitee
    canal-kakfa-flink实现mysql数据的实时同步(一)
  • 原文地址:https://www.cnblogs.com/yangfengwu/p/11939465.html
Copyright © 2011-2022 走看看