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

169 lines
4.9 KiB
Mathematica
Raw Normal View History

2024-03-24 09:45:44 +00:00
//
// 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