美文网首页
IOS 蓝牙 进行DFU(使用iOSDFULibrary)升级(

IOS 蓝牙 进行DFU(使用iOSDFULibrary)升级(

作者: c5550ea746f8 | 来源:发表于2018-08-07 15:29 被阅读172次

    接触蓝牙也有很长一段时间了,接下来给大家讲讲DFU蓝牙升级吧 

    DFU升级步骤也是很简单的

    1. 向蓝牙外设(手环)发送升级指令 

    2. 蓝牙外设进入DFU模式 

    3. 下载DFU升级文件 

    4. 把DFU升级文件写入蓝牙外设中

    声明所需变量

    @property(strong, nonatomic) DFUServiceController *controller;

    @property(strong, nonatomic) DFUFirmware *selectedFirmware;

        DFUServiceInitiator*initiator = [[DFUServiceInitiator alloc] initWithCentralManager:(CBCentralManager,蓝牙中心管理者) target:(CBPeripheral)连接的外设特征];

        self.selectedFirmware = [[DFUFirmware alloc] initWithUrlToZipFile:self.DFUFilePath(DFU文件的路径)];

        [initiator withFirmware:self.selectedFirmware];

        initiator.logger = self;

        initiator.delegate = self;

        initiator.progressDelegate = self;

        //开始升级

        self.controller = [initiator start];

    这里要注意的是DFU升级需要传递三个参数 第一个是 initWithCentralManager () 要传递的对象是你的蓝牙中心管理者对象 第二个是 target()要传递的是蓝牙的外设特征 这两个可以用协议 全局变量 都可以暴露出来 第三个是 initWithUrlToZipFile:self()传递的是DFU文件的路径 你可以下载完成后存在沙盒然后把路径拿过来就可以 其他的照着写就行了

    然后分别实现 LoggerDelegate, DFUServiceDelegate, DFUProgressDelegate 三个协议

        //更新进度

    - (void)dfuProgressDidChangeFor:(NSInteger)part outOf:(NSInteger)totalParts to:(NSInteger)progress currentSpeedBytesPerSecond:(double)currentSpeedBytesPerSecond avgSpeedBytesPerSecond:(double)avgSpeedBytesPerSecond{

        floatcurrentProgress=((float) progress /totalParts)/100;

    }

    -(void)logWith:(enumLogLevel)level message:(NSString*)message    {

                NSLog(@"%logWith ld: %@", (long) level, message);

        }

        //更新进度状态  升级开始..升级中断..升级完成等状态

    - (void)dfuStateDidChangeTo:(enumDFUState)state{

        NSLog(@"DFUState state%ld",state);

        //升级完成

        if (state==DFUStateCompleted) {

        }

    }

        //升级error信息

    - (void)dfuError:(enumDFUError)error didOccurWithMessage:(NSString*_Nonnull)message{

        NSLog(@"Error %ld: %@", (long) error, message);

    }

    因为是OC版本的 所以github上作者已经很久没有更新oc的版本,而且也没有保留oc的Demo 前段时间DFU升级是没有问题的,但是最近更新一直都很崩溃 发现是 DFU frameworks 版本太老 导致崩溃 所以等下会提供最新的frameworks和 OC 的官方Demo 在下面 大家可以试下 升级的过程也就这么简单 在这里提供一下 DFU升级遇到的问题 解决博客 DFU遇到的问题和解决方法 如果DFU升级有遇到问题可以在下面留言 

    下载链接

    转载自:https://blog.csdn.net/zthhsa/article/details/78624830

    相关文章

      网友评论

          本文标题:IOS 蓝牙 进行DFU(使用iOSDFULibrary)升级(

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