iOS中的OTA升級(jí)的時(shí)候,發(fā)送完啟動(dòng)指令和將要傳輸數(shù)據(jù)的指令之后,開(kāi)始傳輸升級(jí)文件,由于藍(lán)牙設(shè)備每次只能接受20字節(jié),所以文件要分包發(fā)送:
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"OTA_20170126_雙模_1" ofType:@"bin"];
NSFileManager *manager =[NSFileManager defaultManager];
NSData *data = [[NSData alloc] init];
data = [manager contentsAtPath:filePath];
NSLog(@"%ld",(unsigned long)[data length]);
//返回的是小端16進(jìn)制的數(shù)據(jù),一定要轉(zhuǎn)化成10進(jìn)制的
for (int i = 0; i < [data length]; i+=20) {
NSLog(@"%d",i);
if (i+20< [data length]) {
NSData *subData = [data subdataWithRange:NSMakeRange(i, 20)];
[[GTCBLEManager shared]writeFileData:subData];
//根據(jù)你硬件的要求設(shè)置時(shí)間 基本上小于5ms是不能的
usleep(6000);
}else if (i+20> [data length]){
//最后一包不足20 如果硬件有要求可以去補(bǔ)F
NSData *subData = [data subdataWithRange:NSMakeRange(i, 16)];
[[GTCBLEManager shared]writeFileData:subData];
usleep(6000);
}