react-native-bt-device/ios/RNBTDevice/Device/ENCholesterolDevice.m

169 lines
4.9 KiB
Objective-C
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// ENCholesterolDevice.m
// ENBLEProject
//
// Created by lvwang2002 on 16/4/8.
// Copyright © 2016年 Facebook. All rights reserved.
//
#import "ENCholesterolDevice.h"
static NSString *UUID_BTLE_SERVICE = @"C14D2C0A-401F-B7A9-841F-E2E93B80F631";
static NSString *UUID_BTLE_RECEIVE = @"81eb77bd-89b8-4494-8a09-7f83d986ddc7";
@implementation ENCholesterolDevice
- (void)peripheral:(CBPeripheral *)peripheral didDiscoverServices:(NSError *)error{
//找到服务,开始扫描指定的服务
NSArray *array = [peripheral services];
//
for( CBService *service in array ){
// // NSString *uuid = [NSString stringWithFormat:@"%@",service.UUID];
CBUUID *serviceUUID = [CBUUID UUIDWithString:UUID_BTLE_SERVICE];
NSLog(@"service uuid%@",serviceUUID);
if([serviceUUID isEqual:service.UUID]){
NSArray *uuids = @[[CBUUID UUIDWithString:UUID_BTLE_RECEIVE]];
[peripheral discoverCharacteristics:uuids forService:service];
break;
}
}
}
- (void)peripheral:(CBPeripheral *)peripheral didDiscoverCharacteristicsForService:(CBService *)service error:(NSError *)error;{
CBUUID *receiveUUID = [CBUUID UUIDWithString:UUID_BTLE_RECEIVE];
for( CBCharacteristic *characteristic in service.characteristics){
NSLog(@"characteristic is %@",characteristic);
if([characteristic.UUID isEqual:receiveUUID]){
[_peripheral setNotifyValue:YES forCharacteristic:characteristic];
}
}
}
- (void)peripheral:(CBPeripheral *)peripheral didUpdateValueForReceiveData:(NSData *)data UUID:(CBUUID *)uuid error:(NSError *)error{
CBUUID *receiveUUID = [CBUUID UUIDWithString:UUID_BTLE_RECEIVE];
if(![receiveUUID isEqual:uuid]){
return;
}
[self receiveData:data];
}
-(void)receiveData:(NSData *)data{
[self getXuezhiData:data];
}
// private StringBuilder mXuezhiValue = new StringBuilder();// ASCII
static NSString *mXuezhiValue = @"";
-(void)getXuezhiData:(NSData *)data{
// // 处理血脂数据
// mXuezhiData.setVisibility(View.VISIBLE);
// mOtherLayout.setVisibility(View.GONE);
// Log.e(TAG,"血脂数据:"+Bytes2HexString(data,0,data.length));
NSString *xuezhiData;
// @try {
// xuezhiData = new String(data, "UTF-8");
xuezhiData = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
// mXuezhiValue += xuezhiData;
mXuezhiValue = [NSString stringWithFormat:@"%@%@",mXuezhiValue,xuezhiData];
// } catch (UnsupportedEncodingException e) {
// e.printStackTrace();
// }
NSLog(@"xue zhi %@",mXuezhiValue);
NSUInteger size = data.length;
// String[] dataArr = null;
NSArray *dataArr = [[NSArray alloc] init];
const unsigned char *dataByte = [data bytes];
if (size >= 4) {
// 连续两个空行0x0d0x0a
if ((dataByte[size - 2] == 13 &&
dataByte[size - 1] == 10 &&
dataByte[size - 4] == 13 &&
dataByte[size - 3] == 10 ) ||
(dataByte[size - 2] == 10 &&
dataByte[size - 1] == 13 &&
dataByte[size - 4] == 10 &&
dataByte[size - 3] == 13) ) {
//String text = mXuezhiValue.toString();
dataArr = [self getValue:mXuezhiValue];
//final String[] myDataArray = dataArr;
NSLog(@"chol%@",dataArr[0]);
NSLog(@"hdl%@",dataArr[1]);
NSLog(@"trig%@",dataArr[2]);
NSLog(@"ldl%@",dataArr[3]);
NSDictionary *info = @{
@"chol":dataArr[0],
@"hdl":dataArr[1],
@"trig":dataArr[2],
@"ldl":dataArr[3]
};
if([self.deviceDelegate respondsToSelector:@selector(onCholesterolResult:WithDevice:)]){
[(id)self.deviceDelegate onCholesterolResult:info WithDevice:_device];
}
mXuezhiValue = @"";
}
}
}
// String[] dataString = null;
//String[] dataString2 = null;
-(NSArray *)getValue:(NSString *)text{
NSLog(@"text:%@", text);
// Log.e("dataString", String.valueOf(dataString.length));
NSArray *dataString = [text componentsSeparatedByString:@"\n"];
NSMutableArray *dataString2 = [[NSMutableArray alloc] initWithCapacity:10];
if (dataString.count >= 7) {
NSString *chol = dataString[2];
NSString *hdl = dataString[3];
NSString *trig = dataString[4];
NSString *ldl = dataString[6];
// chol = chol.split("mg")[0];
chol = [chol componentsSeparatedByString:@"mg"][0];
// chol = chol.split(":")[1];
chol = [chol componentsSeparatedByString:@":"][1];
// hdl = hdl.split("mg")[0];
hdl = [hdl componentsSeparatedByString:@"mg"][0];
// hdl = hdl.split(":")[1];
hdl = [hdl componentsSeparatedByString:@":"][1];
// trig = trig.split("mg")[0];
trig = [trig componentsSeparatedByString:@"mg"][0];
// trig = trig.split(":")[1];
trig = [trig componentsSeparatedByString:@":"][1];
// ldl = ldl.split("mg")[0];
ldl = [ldl componentsSeparatedByString:@"mg"][0];
// ldl = ldl.split(":")[1];
ldl = [ldl componentsSeparatedByString:@":"][1];
dataString2[0] = chol;
dataString2[1] = hdl;
dataString2[2] = trig;
dataString2[3] = ldl;
} else {
if (dataString != nil && dataString2 != nil) {
dataString = nil;
dataString2 = nil;
}
}
return dataString2;
}
@end