美文网首页
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