1. 解绑设备
- (void)unBindDevice { NSData *playLoad = [self playLoad:0x00 value:nil]; NSData *data = [self dataWithCommanID:0x04 pv:0x01 playLoad:@[playLoad]]; self.waitSendData = data; [self sendData]; }
2. 恢复出厂设置
- (void)resettingDevice { NSData *playLoad = [self playLoad:0x00 value:nil]; NSData *data = [self dataWithCommanID:0x0d pv:0x01 playLoad:@[playLoad]]; self.waitSendData = data; [self sendData]; }
3. 设置消息
- (void)setMsgModel:(MsgModel *)m { int call = m.call; int msg = m.msg; int wechat = m.wechat; int qq = m.qq; int facebook = m.facebook; int twitter = m.twitter; int skype = m.skype; int line = m.line; int whatsapp = m.whatsapp; int kakaotalk = m.kakaotalk; int fuck = 0; NSMutableData *d = [NSMutableData data]; [d appendBytes:&call length:1]; [d appendBytes:&msg length:1]; [d appendBytes:&wechat length:1]; [d appendBytes:&qq length:1]; [d appendBytes:&facebook length:1]; [d appendBytes:&twitter length:1]; [d appendBytes:&skype length:1]; [d appendBytes:&line length:1]; [d appendBytes:&whatsapp length:1]; [d appendBytes:&kakaotalk length:1]; [d appendBytes:&fuck length:1]; NSData *playLoad = [self playLoad:0x07 value:d]; NSData *data = [self dataWithCommanID:0x02 pv:0x01 playLoad:@[playLoad]]; self.waitSendData = data; [self sendData]; }
4. 获取设置信息
- (void)getSettingConfig { NSData *playLoad = [self playLoad:0x00 value:nil]; NSData *data = [self dataWithCommanID:0x09 pv:0x01 playLoad:@[playLoad]]; self.waitSendData = data; [self sendData]; }
5. 寻找设备
- (void)searchDevice:(BOOL)isOpen { int value = isOpen?0x01:0x00; NSData *valueData = [NSData dataWithBytes:&value length:1]; NSData *playLoad = [self playLoad:0x0b value:valueData]; NSData *data = [self dataWithCommanID:0x02 pv:0x01 playLoad:@[playLoad]]; self.waitSendData = data; [self sendData]; }
6. 开启配对
- (void)pair { int value = 0x01; NSData *valueData = [NSData dataWithBytes:&value length:1]; NSData *playLoad = [self playLoad:0x0a value:valueData]; NSData *data = [self dataWithCommanID:0x02 pv:0x01 playLoad:@[playLoad]]; self.waitSendData = data; [self sendData]; }
7. 绑定设备
- (void)bindDevice { NSData *playLoad = [self playLoad:0x00 value:[UserInfo sharedUserInfo].userInfoModel.usrIdData]; NSData *data = [self dataWithCommanID:0x03 pv:0x01 playLoad:@[playLoad]]; self.waitSendData = data; [self sendData]; }
8. 设置语言 0:中文 1:英文
- (void)setLanguage:(NSInteger)language { [UserInfo sharedUserInfo].language = language==1; [[UserInfo sharedUserInfo] save]; int value = language==0?0x00:0x01; NSData *valueData = [NSData dataWithBytes:&value length:1]; NSData *playLoad = [self playLoad:0x15 value:valueData]; NSData *data = [self dataWithCommanID:0x02 pv:0x01 playLoad:@[playLoad]]; self.waitSendData = data; [self sendData]; }
9. 佩戴方式 0:左手 1:右手
- (void)setWayOfWearing:(NSInteger)way { [UserInfo sharedUserInfo].leftRight = way==1; [[UserInfo sharedUserInfo] save]; int value = way==0?0x01:0x02; NSData *valueData = [NSData dataWithBytes:&value length:1]; NSData *playLoad = [self playLoad:0x06 value:valueData]; NSData *data = [self dataWithCommanID:0x02 pv:0x01 playLoad:@[playLoad]]; self.waitSendData = data; [self sendData]; }
- (void)synTime:(NSString *)time { int year = [time componentsSeparatedByString:@" "][0].intValue; int month = [time componentsSeparatedByString:@" "][1].intValue; int day = [time componentsSeparatedByString:@" "][2].intValue; int hour = [time componentsSeparatedByString:@" "][3].intValue; int min = [time componentsSeparatedByString:@" "][4].intValue; int second = [time componentsSeparatedByString:@" "][5].intValue; // 6 4 5 5 6 6 unsigned int t = 0; t |= year<<26; t |= month<<22; t |= day<<17; t |= hour<<12; t |= min<<6; t |= second; NSData *timeData = [self invertData:[NSData dataWithBytes:&t length:4]]; NSData *playLoad = [self playLoad:0x01 value:timeData]; NSData *data = [self dataWithCommanID:0x02 pv:0x01 playLoad:@[playLoad]]; self.waitSendData = data; [self sendData]; }
11. 同步闹钟 [@{年,月,日,时,分,序列号,保留,重复位}]
- (void)synAlarm:(NSArray<AlarmModel *> *)alarms { NSMutableData *md = [NSMutableData data]; for (int i=0; i<alarms.count; i++) { AlarmModel *m = alarms[i]; // 6 4 5 5 6 3 4 [7] unsigned long t = 0; t |= m.year<<34; t |= m.month<<30; t |= m.day<<25; t |= m.hour<<20; t |= m.min<<14; t |= m.number<<11; t |= m.none<<7; t |= m.d7<<6; t |= m.d6<<5; t |= m.d5<<4; t |= m.d4<<3; t |= m.d3<<2; t |= m.d2<<1; t |= m.d1; NSData *timeData = [self invertData:[NSData dataWithBytes:&t length:5]]; [md appendData:timeData]; } NSData *playLoad = [self playLoad:0x02 value:md]; NSData *data = [self dataWithCommanID:0x02 pv:0x01 playLoad:@[playLoad]]; self.waitSendData = data; [self sendData]; }
- (void)synLongDown:(LongDownModel *)model { unsigned long noonBreak = model.noonBreak; unsigned long open = model.open; unsigned long threshold = model.threshold; unsigned long time = model.time / 15; unsigned long start = model.start; unsigned long end = model.end; unsigned long t = 0; t |= model.d7<<6; t |= model.d6<<5; t |= model.d5<<4; t |= model.d4<<3; t |= model.d3<<2; t |= model.d2<<1; t |= model.d1; NSMutableData *mD = [NSMutableData data]; [mD appendBytes:&noonBreak length:1]; [mD appendBytes:&open length:1]; [mD appendData:[self invertData:[NSData dataWithBytes:&threshold length:2]]]; [mD appendBytes:&time length:1]; [mD appendBytes:&start length:1]; [mD appendBytes:&end length:1]; [mD appendBytes:&t length:1]; NSData *playLoad = [self playLoad:0x05 value:mD]; NSData *data = [self dataWithCommanID:0x02 pv:0x01 playLoad:@[playLoad]]; self.waitSendData = data; [self sendData]; }
- (void)raiseHand:(RaiseHandModel *)model { unsigned long open = model.open; unsigned long start = model.start; unsigned long end = model.end; NSMutableData *mD = [NSMutableData data]; [mD appendBytes:&open length:1]; [mD appendData:[self invertData:[NSData dataWithBytes:&start length:2]]]; [mD appendData:[self invertData:[NSData dataWithBytes:&end length:2]]]; NSData *playLoad = [self playLoad:0x09 value:mD]; NSData *data = [self dataWithCommanID:0x02 pv:0x01 playLoad:@[playLoad]]; self.waitSendData = data; [self sendData]; }
- (void)sleepMonitoring:(SleepMonitoringModel *)model { unsigned long open = model.open; unsigned long start = model.start; unsigned long end = model.end; NSMutableData *mD = [NSMutableData data]; [mD appendBytes:&open length:1]; [mD appendData:[self invertData:[NSData dataWithBytes:&start length:2]]]; [mD appendData:[self invertData:[NSData dataWithBytes:&end length:2]]]; NSData *playLoad = [self playLoad:0x0f value:mD]; NSData *data = [self dataWithCommanID:0x02 pv:0x01 playLoad:@[playLoad]]; self.waitSendData = data; [self sendData]; }
14. 心率自动测量
- (void)heartAuto:(HeartAutoModel *)model { unsigned long open = model.open; unsigned long sleep = model.sleep; unsigned long rate = model.rate; unsigned long start = model.start; unsigned long end = model.end; NSMutableData *mD = [NSMutableData data]; [mD appendBytes:&open length:1]; [mD appendBytes:&sleep length:1]; [mD appendData:[self invertData:[NSData dataWithBytes:&rate length:2]]]; [mD appendData:[self invertData:[NSData dataWithBytes:&start length:2]]]; [mD appendData:[self invertData:[NSData dataWithBytes:&end length:2]]]; NSData *playLoad = [self playLoad:0x16 value:mD]; NSData *data = [self dataWithCommanID:0x02 pv:0x01 playLoad:@[playLoad]]; self.waitSendData = data; [self sendData]; }
15. 勿扰模式
- (void)dnd:(DNDModel *)model { unsigned long open = model.open; unsigned long start = model.start; unsigned long end = model.end; NSMutableData *mD = [NSMutableData data]; [mD appendBytes:&open length:1]; [mD appendData:[self invertData:[NSData dataWithBytes:&start length:2]]]; [mD appendData:[self invertData:[NSData dataWithBytes:&end length:2]]]; NSData *playLoad = [self playLoad:0x14 value:mD]; NSData *data = [self dataWithCommanID:0x02 pv:0x01 playLoad:@[playLoad]]; self.waitSendData = data; [self sendData]; }
16. 震动
- (void)shake:(BOOL)isOpen { int value = isOpen==0?0x00:0x01; NSData *valueData = [NSData dataWithBytes:&value length:1]; NSData *playLoad = [self playLoad:0x08 value:valueData]; NSData *data = [self dataWithCommanID:0x02 pv:0x01 playLoad:@[playLoad]]; self.waitSendData = data; [self sendData]; }
17. 开启或关闭拍照
- (void)camera:(BOOL)isOpen { int value = isOpen==0?0x00:0x01; NSData *valueData = [NSData dataWithBytes:&value length:1]; NSData *playLoad = [self playLoad:0x0C value:valueData]; NSData *data = [self dataWithCommanID:0x02 pv:0x01 playLoad:@[playLoad]]; self.waitSendData = data; [self sendData]; }
18. 设置目标步数
- (void)aim:(unsigned long)aim { if (aim == 0) { aim = 5000; } NSData *valueData = [NSData dataWithBytes:&aim length:4].invert; NSData *playLoad = [self playLoad:0x03 value:valueData]; NSData *data = [self dataWithCommanID:0x02 pv:0x01 playLoad:@[playLoad]]; self.waitSendData = data; [self sendData]; }
- (void)synUsrInfo:(UsrModel *)model { unsigned long t = 0; t |= model.sex<<31; t |= model.age<<24; t |= model.height<<15; t |= model.weight<<5; NSData *valueData = [NSData dataWithBytes:&t length:4].invert; NSData *playLoad = [self playLoad:0x04 value:valueData]; NSData *data = [self dataWithCommanID:0x02 pv:0x01 playLoad:@[playLoad]]; self.waitSendData = data; [self sendData]; }
- (void)startHeart:(BOOL)isOpen { int value = isOpen==0?0x00:0x01; NSData *valueData = [NSData dataWithBytes:&value length:1]; NSData *playLoad = [self playLoad:0x0D value:valueData]; NSData *data = [self dataWithCommanID:0x02 pv:0x01 playLoad:@[playLoad]]; self.waitSendData = data; [self sendData]; }
- (void)getAlarm { NSData *playLoad = [self playLoad:0x00 value:nil]; NSData *data = [self dataWithCommanID:0x08 pv:0x01 playLoad:@[playLoad]]; self.waitSendData = data; [self sendData]; }
- (void)getSports { int value = 0x01; NSData *valueData = [NSData dataWithBytes:&value length:1]; NSData *playLoad = [self playLoad:0x06 value:valueData]; NSData *data = [self dataWithCommanID:0x05 pv:0x01 playLoad:@[playLoad]]; self.waitSendData = data; [self sendData]; }
- (void)initiativeSports { int value = 0x01; NSData *valueData = [NSData dataWithBytes:&value length:1]; NSData *playLoad = [self playLoad:0x01 value:valueData]; NSData *data = [self dataWithCommanID:0x05 pv:0x01 playLoad:@[playLoad]]; self.waitSendData = data; [self sendData]; }
- (void)realTimeStep { int value = 0x01; NSData *valueData = [NSData dataWithBytes:&value length:1]; NSData *playLoad = [self playLoad:0x0b value:valueData]; NSData *data = [self dataWithCommanID:0x05 pv:0x01 playLoad:@[playLoad]]; self.waitSendData = data; [self sendData]; }
- (void)readPower { if ([BlueToothManager sharedBlueToothManager].connectPeripheral && [BlueToothManager sharedBlueToothManager].connectPeripheral.powerCharacteristic) { [[BlueToothManager sharedBlueToothManager].connectPeripheral readValueForCharacteristic:[BlueToothManager sharedBlueToothManager].connectPeripheral.powerCharacteristic]; } }
/** 通过邮箱登录 @param email 邮箱 @param password 密码 @param success 成功回调 @param fail 失败回调 */ + (void)loginEmail:(NSString *)email password:(NSString *)password success:(void (^)(id responseObject, BOOL isCache))success fail:(void (^)(NSString *errorInfo, NSInteger code))fail; /** 获取验证码 @param email 邮箱 @param type 类型 1:注册 2:找回密码 @param success 成功回调 @param fail 失败回调 */ + (void)getCode:(NSString *)email type:(NSString *)type success:(void (^)(id responseObject, BOOL isCache))success fail:(void (^)(NSString *errorInfo, NSInteger code))fail; /** 找回密码 @param email 邮箱 @param code 验证码 @param password 新密码 @param success 成功回调 @param fail 失败回调 */ + (void)findPwdEmail:(NSString *)email code:(NSString *)code password:(NSString *)password success:(void (^)(id responseObject, BOOL isCache))success fail:(void (^)(NSString *errorInfo, NSInteger code))fail; /** 注册账号 @param email 邮箱 @param password 密码 @param code 验证码 @param success 成功回调 @param fail 失败回调 */ + (void)registerEmail:(NSString *)email password:(NSString *)password code:(NSString *)code success:(void (^)(id responseObject, BOOL isCache))success fail:(void (^)(NSString *errorInfo, NSInteger code))fail; /** 修改密码 @param oldPassword 旧密码 @param newPassword 新密码 @param success 成功回调 @param fail 失败回调 */ + (void)updateOldPassword:(NSString *)oldPassword newPassword:(NSString *)newPassword success:(void (^)(id responseObject, BOOL isCache))success fail:(void (^)(NSString *errorInfo, NSInteger code))fail; /** 修改用户信息 @param avatar 头像 @param nickName 昵称 @param birthday 生日 @param height 身高 @param weight 体重 @param gender 性别 @param aimStep 目标 @param unit 单位 @param success 成功回调 @param fail 失败回调 */ + (void)updateInfo:(NSString *)avatar nickName:(NSString *)nickName birthday:(NSString *)birthday height:(NSString *)height weight:(NSString *)weight gender:(NSString *)gender aimStep:(NSString *)aimStep unit:(NSString *)unit success:(void (^)(id responseObject, BOOL isCache))success fail:(void (^)(NSString *errorInfo, NSInteger code))fail; /** 上传或更新运动信息 @param data json数据 @param time 时间 @param type TYPE:STEP/SLEEP/HEART/BLOOD @param success 成功回调 @param fail 失败回调 */ + (void)submitOrUpdate:(NSString *)data time:(NSString *)time type:(NSString *)type success:(void (^)(id responseObject, BOOL isCache))success fail:(void (^)(NSString *errorInfo, NSInteger code))fail; /** 查找记录 @param times 时间集合 @param type 类型 @param success 成功回调 @param fail 失败回调 */ + (void)findRecord:(NSString *)times type:(NSString *)type success:(void (^)(id responseObject, BOOL isCache))success fail:(void (^)(NSString *errorInfo, NSInteger code))fail; /** 获取版本信息 @param type 类型 @param success 成功回调 @param fail 失败回调 */ + (void)version:(NSString *)type success:(void (^)(id responseObject, BOOL isCache))success fail:(void (^)(NSString *errorInfo, NSInteger code))fail;
@interface DNDModel : NSObject @property (assign, nonatomic) unsigned long open; // 1byte 使能 0:关闭 1:开启 @property (assign, nonatomic) unsigned long start; // 2byte 开启时间 分钟数:从当天的 0 点算起的分钟数 (APP-Device高八位在前,低八位在后) @property (assign, nonatomic) unsigned long end; // 2byte 关闭时间 分钟数:从当天的 0 点算起的分钟数(APP-Device高八位在前,低八位在后) @property (strong, nonatomic) NSData *data; @end @implementation DNDModel - (void)setData:(NSData *)data { _data = data; unsigned long open = 0; [data getBytes:&open range:NSMakeRange(1, 1)]; self.open = open; unsigned long start = 0; NSData *d1 = [data subdataWithRange:NSMakeRange(2, 2)].invert; [d1 getBytes:&start range:NSMakeRange(0, 2)]; self.start = start; unsigned long end = 0; NSData *d2 = [data subdataWithRange:NSMakeRange(4, 2)].invert; [d2 getBytes:&end range:NSMakeRange(0, 2)]; self.end = end; }
@end
- (AlarmModel *)data2Alarm:(NSData *)data { AlarmModel *model = [[AlarmModel alloc] init]; unsigned long t = 0; [[self invertData:data] getBytes:&t length:5]; model.year = t>>34 & 63; model.month = t>>30 & 15; model.day = t>>25 & 31; model.hour = t>>20 & 31; model.min = t>>14 & 63; model.number = t>>11 & 7; model.none = t>>7 & 15; model.d7 = t>>6 & 1; model.d6 = t>>5 & 1; model.d5 = t>>4 & 1; model.d4 = t>>3 & 1; model.d3 = t>>2 & 1; model.d2 = t>>1 & 1; model.d1 = t & 1; return model; }
+ (NSArray<SportsModel *> *)sportsData:(NSData *)data { NSData *headerData = [data subdataWithRange:NSMakeRange(8, 4)].invert; NSData *sportsData = [data subdataWithRange:NSMakeRange(10, data.length-10)]; unsigned long t = 0; [headerData getBytes:&t range:NSMakeRange(0, 4)]; unsigned long year = t>>25 & 63; unsigned long month = t>>21 & 15; unsigned long day = t>>16 & 31; unsigned long item = t>>8 & 255; // 后面item的个数 NSMutableArray *arr = [NSMutableArray array]; for (int i=0; i<sportsData.length/6; i++) { SportsModel *m = [[SportsModel alloc] init]; NSData *sportsDataItem = [sportsData subdataWithRange:NSMakeRange(i*6, 6)].invert; unsigned long a1 = 0; [sportsDataItem getBytes:&a1 range:NSMakeRange(0, 2)]; unsigned long a2 = 0; [sportsDataItem getBytes:&a2 range:NSMakeRange(2, 2)]; unsigned long a3 = 0; [sportsDataItem getBytes:&a3 range:NSMakeRange(4, 2)]; m.steps = a3; m.distance = a2; m.calorie = a1; m.timeOffset = i; m.mode = 1; if (m.steps == 65535) { m.steps = 0; m.distance = 0; m.calorie = 0; continue; } unsigned long second = m.timeOffset*60*60; NSString *time = [NSString stringWithFormat:@"%ld-%.2ld-%.2ld %.2ld:%.2ld:%.2ld", 2000+year, month, day, second/3600, second%3600/60, second%60]; m.time = time; [arr addObject:m]; } return arr.copy; }
+ (NSDictionary *)sleepData:(NSData *)data { NSData *headerData = [data subdataWithRange:NSMakeRange(8, 4)].invert; NSData *sleepData = [data subdataWithRange:NSMakeRange(12, data.length-12)]; unsigned long t = 0; [headerData getBytes:&t range:NSMakeRange(0, 4)]; unsigned long year = t>>25 & 63; unsigned long month = t>>21 & 15; unsigned long day = t>>16 & 31; NSMutableArray *mmm = [NSMutableArray array]; for (int i=0; i<sleepData.length/4; i++) { NSData *sleepDataItem = [sleepData subdataWithRange:NSMakeRange(i*4, 4)].invert; unsigned long long tt = 0; [sleepDataItem getBytes:&tt range:NSMakeRange(0, 4)]; unsigned long time = tt>>16 & 65535; unsigned long type = tt & 15; [mmm addObject:@{@"timeOffset":@(time), @"mode":@(type)}]; } NSString *strDay = [NSString stringWithFormat:@"%.4ld-%.2ld-%.2ld", 2000+year, month, day]; NSLog(@"%@", strDay); NSLog(@"%@", mmm); return @{@"day":strDay, @"list":mmm}; }
+ (NSArray<HeartModel *> *)heartData:(NSData *)data { NSData *headerData = [data subdataWithRange:NSMakeRange(8, 4)].invert; NSData *heartData = [data subdataWithRange:NSMakeRange(12, data.length-12)]; unsigned long t = 0; [headerData getBytes:&t range:NSMakeRange(0, 4)]; unsigned long year = t>>25 & 63; unsigned long month = t>>21 & 15; unsigned long day = t>>16 & 31; unsigned long item = t>>8 & 255; NSMutableArray *arr = [NSMutableArray array]; for (int i=0; i<heartData.length/8; i++) { HeartModel *m = [[HeartModel alloc] init]; NSData *heartDataItem = [heartData subdataWithRange:NSMakeRange(i*8, 8)].invert; unsigned long second = 0; unsigned long count = 0; [heartDataItem getBytes:&second range:NSMakeRange(4, 4)]; [heartDataItem getBytes:&count range:NSMakeRange(0, 1)]; NSString *time = [NSString stringWithFormat:@"%ld-%.2ld-%.2ld %.2ld:%.2ld:%.2ld", 2000+year, month, day, second/3600, second%3600/60, second%60]; m.time = time; m.count = count; [arr addObject:m]; } return arr.copy; }
@interface UsrModel : NSObject // 0:女1:男 1bit @property (assign, nonatomic) unsigned long sex; // 0~127 7bit @property (assign, nonatomic) unsigned long age; // 0~256 9bit @property (assign, nonatomic) unsigned long height; // 0~512 10bit @property (assign, nonatomic) unsigned long weight; // @property (strong, nonatomic) NSData *data; - (void)setData:(NSData *)data; @end @implementation UsrModel - (instancetype)init { self = [super init]; if (self) { self.age = 25; self.height = 170; self.weight = 65; self.sex = 1 ; } return self; } - (void)setData:(NSData *)data { // _data = data; unsigned long t = 0; [[data subdataWithRange:NSMakeRange(1, 4)].invert getBytes:&t range:NSMakeRange(0, 4)]; self.sex = t>>31 & 1; self.age = t>>24 & 127; self.height = t>>15 & 255; self.weight = t>>5 & 511; } @end
@interface RaiseHandModel : NSObject @property (assign, nonatomic) unsigned long open; // 1byte 使能 0:关闭 1:开启 @property (assign, nonatomic) unsigned long start; // 2byte 开启时间 分钟数:从当天的 0 点算起的分钟数 (APP-Device高八位在前,低八位在后) @property (assign, nonatomic) unsigned long end; // 2byte 关闭时间 分钟数:从当天的 0 点算起的分钟数(APP-Device高八位在前,低八位在后) @property (strong, nonatomic) NSData *data; @end @implementation RaiseHandModel - (void)setData:(NSData *)data { _data = data; unsigned long open = 0; [data getBytes:&open range:NSMakeRange(1, 1)]; self.open = open; unsigned long start = 0; NSData *d1 = [data subdataWithRange:NSMakeRange(2, 2)].invert; [d1 getBytes:&start range:NSMakeRange(0, 2)]; self.start = start; unsigned long end = 0; NSData *d2 = [data subdataWithRange:NSMakeRange(4, 2)].invert; [d2 getBytes:&end range:NSMakeRange(0, 2)]; self.end = end; } @end
@interface SleepMonitoringModel : NSObject @property (assign, nonatomic) unsigned long open; // 1byte 使能 0:关闭 1:开启 @property (assign, nonatomic) unsigned long start; // 2byte 开启时间 分钟数:从当天的 0 点算起的分钟数 (APP-Device高八位在前,低八位在后) @property (assign, nonatomic) unsigned long end; // 2byte 关闭时间 分钟数:从当天的 0 点算起的分钟数(APP-Device高八位在前,低八位在后) @property (strong, nonatomic) NSData *data; @end - (void)setData:(NSData *)data { _data = data; unsigned long open = 0; [data getBytes:&open range:NSMakeRange(1, 1)]; self.open = open; unsigned long start = 0; NSData *d1 = [data subdataWithRange:NSMakeRange(2, 2)].invert; [d1 getBytes:&start range:NSMakeRange(0, 2)]; self.start = start; unsigned long end = 0; NSData *d2 = [data subdataWithRange:NSMakeRange(4, 2)].invert; [d2 getBytes:&end range:NSMakeRange(0, 2)]; self.end = end; }
@interface LongDownModel : NSObject @property (assign, nonatomic) unsigned long start; // 开始 @property (assign, nonatomic) unsigned long end; // 结束 @property (assign, nonatomic) unsigned long time; // 时长 @property (assign, nonatomic) unsigned long threshold; // 阈值 @property (assign, nonatomic) unsigned long noonBreak; // 午休 @property (assign, nonatomic) unsigned long open; // 是否开启 @property (assign, nonatomic) unsigned long d1; @property (assign, nonatomic) unsigned long d2; @property (assign, nonatomic) unsigned long d3; @property (assign, nonatomic) unsigned long d4; @property (assign, nonatomic) unsigned long d5; @property (assign, nonatomic) unsigned long d6; @property (assign, nonatomic) unsigned long d7; @property (strong, nonatomic) NSData *data; @end - (void)setData:(NSData *)data { _data = data; unsigned long noonBreak = 0; unsigned long open = 0; unsigned long threshold = 0; unsigned long time = 0; unsigned long start = 0; unsigned long end = 0; unsigned long t = 0; [data getBytes:&noonBreak range:NSMakeRange(1, 1)]; [data getBytes:&open range:NSMakeRange(2, 1)]; [data getBytes:&time range:NSMakeRange(5, 1)]; [data getBytes:&start range:NSMakeRange(6, 1)]; [data getBytes:&end range:NSMakeRange(7, 1)]; self.noonBreak = noonBreak; self.open = open; self.time = time * 15; self.start = start; self.end = end; threshold = [[data subdataWithRange:NSMakeRange(3, 2)] l]; self.threshold = threshold; [data getBytes:&t range:NSMakeRange(8, 1)]; self.d7 = t>>6 & 1; self.d6 = t>>5 & 1; self.d5 = t>>4 & 1; self.d4 = t>>3 & 1; self.d3 = t>>2 & 1; self.d2 = t>>1 & 1; self.d1 = t & 1; }
原文:https://www.cnblogs.com/rwpnyn/p/11312049.html