美文网首页
[iOS]有关蓝牙固件升级的一些小总结

[iOS]有关蓝牙固件升级的一些小总结

作者: hjai | 来源:发表于2017-07-05 23:12 被阅读292次

        今天在宿舍整理项目的时候,看到之前做的一个蓝牙电饭锅项目,想起当时做这个项目的时候在蓝牙固件升级的过程中吃了不少苦头,因此想在这里写个小总结,希望可以给后面做这方面东西遇到困惑的开发者一点小启发吧。

        在这个项目中,我们的固件升级文件是从管理后台那边下载下来的一个.ufu文件。在进行固件升级的时候,首先获取一下电饭锅当前的固件文件版本,然后获取管理后台中最新的固件文件版本。当发现有最新的固件版本文件存在的时候,APP就会先下载最新的固件文件到本地。

        在异步下载完固件文件之后,APP就会读取这个下载到本地的文件,然后尝试发出蓝牙请求,请求将固件升级文件传送给电饭锅。在得到电饭锅方面的同意接收的反馈后,APP就会按照相关的协议要求将固件文件分段拆分发送给电饭锅。在这里解释一下分段拆分文件发送的原因:由于蓝牙传输时一次性传输的数据量是有限的,并且是比较小的。在我们的项目中,每次传输的数据包限制大小为16byte(不含包头信息),显然,一次性是没办法将文件全部传送过去的,所以得将文件拆分发送。具体怎么拆分,视每个项目的蓝牙指令协议而定,不尽相同。我们当时是每次只能发送16byte的数据包。具体过程如代码所示:

传输固件的方法代码

        好了,解决了怎样将文件拆分开来一帧一帧发送给目标设备,那么问题来了,怎么保证按顺序发送帧文件呢?也就是说,如何保证数据包是被顺序接收的而不存在丢包的情况呢?在我们项目中,我是这么做的:设备每次成功接收到数据包后都会返回一个特定的字符串表明数据已经成功接收,我用递归的方式向设备发送帧文件,只有当接收到表明数据被成功接收的字符串后,我才会接着发送下一帧数据。只要某一帧数据没被接收(没收到表明成功接收的字符串),就继续发送这一帧数据,直至被接收,代码如下所示。

递归发送帧数据

        大致思路就是这样了,代码其实是很久的了,没去整理,有点乱,当个思路用吧。里面有啥说的不对的话还请大家不吝赐教呢,先行谢过啦。

相关文章

  • [iOS]有关蓝牙固件升级的一些小总结

    今天在宿舍整理项目的时候,看到之前做的一个蓝牙电饭锅项目,想起当时做这个项目的时候在蓝牙固件升级的过程中吃...

  • 【IOS】BLE-蓝牙空中升级(OAD)

    蓝牙为CC2541 ios升级蓝牙固件; 1.头文件 #import

  • iOS蓝牙固件升级解决方案

    何为固件升级? 固件为什么需要升级? 大家也许有做过硬件(蓝牙)固件升级的开发,举个栗子:用手机设备中心通过蓝牙硬...

  • iOS 蓝牙固件升级

    升级介绍 蓝牙固件升级是使用手机给固件进行版本升级,以达到修复bug或者添加新功能的作用。升级的大概流程是:首先,...

  • ios开发-蓝牙固件升级流程

    最近在开发ios平台的一款app过程中,遇到蓝牙固件升级这样的一个需求场景,从固件的线上版本比对、固件下载管理再到...

  • 蓝牙设备空中升级(OTA)

    蓝牙固件空中升级(OTA)涉及到蓝牙无线通信、固件外存分布、固件内存分布(定制链接脚本)、固件二次引导等技术,需要...

  • iOS蓝牙空中升级(固件升级)

    空中升级又叫固件升级,指你手机从服务器下载下来的包或者数据,通过蓝牙传输给你的外设升级固件。如果你能把蓝牙的基础搞...

  • 蓝牙固件升级

    升级介绍 蓝牙固件升级是使用手机给固件进行更新,以达到修复bug,完善功能的作用。升级的大概流程是:首先,当手环的...

  • iOS 蓝牙开发(固件升级&空中升级)

    pod 2.桥接要ota的vc 在 MineMainViewController 导入 使用方法,第一步,现在服务...

  • iOS蓝牙空中(固件)升级实现

    最近项目中有用到固件升级功能,即使用手机去升级硬件设备的固件。项目中硬件端使用的单片机程序是一个 xxx.bin ...

网友评论

      本文标题:[iOS]有关蓝牙固件升级的一些小总结

      本文链接:https://www.haomeiwen.com/subject/cxrchxtx.html