iOS藍牙總結(jié)

1祟峦、#import<CoreBluetooth/CoreBlutooth.h>

2危纫、@interface ViewController : UIViewController{

CBCentralManager *theManager;

CBPeripheral *thePerpher;

CBCharacteristic *theSakeCC;

}

3、開始連接:

if (theManager.state==CBCentralManagerStatePoweredOn) {

NSLog(@"主設(shè)備藍牙狀態(tài)正常猛拴,開始掃描外設(shè)...");

//nil表示掃描所有設(shè)備

[theManager scanForPeripheralsWithServices:nil options:nil];

}

4雹姊、#pragma mark -當(dāng)前藍牙主設(shè)備狀態(tài)

- (void)centralManagerDidUpdateState:(CBCentralManager *)central{

if (central.state==CBCentralManagerStatePoweredOn) {

self.title = @"藍牙已就緒";

self.connectBtn.enabled = YES;

[central scanForPeripheralsWithServices:nil options:nil];

}else

{

self.title = @"藍牙未準(zhǔn)備好";

[self.activeID stopAnimating];

switch (central.state) {

case CBCentralManagerStateUnknown:

NSLog(@">>>CBCentralManagerStateUnknown");

break;

case CBCentralManagerStateResetting:

NSLog(@">>>CBCentralManagerStateResetting");

break;

case CBCentralManagerStateUnsupported:

NSLog(@">>>CBCentralManagerStateUnsupported");

break;

case CBCentralManagerStateUnauthorized:

NSLog(@">>>CBCentralManagerStateUnauthorized");

break;

case CBCentralManagerStatePoweredOff:

NSLog(@">>>CBCentralManagerStatePoweredOff");

break;

default:

break;

}}}

5、//掃描到設(shè)備會進入方法

- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI{

NSLog(@"掃描連接外設(shè):%@ %@",peripheral.name,RSSI);

[central connectPeripheral:peripheral options:nil];

NSLog(@"peripheral:%@============advertisementData:%@==============RSSI:%@",peripheral.identifier,advertisementData,RSSI);

if ([peripheral.name hasSuffix:@"SMART"]) {

thePerpher = peripheral;

[central stopScan];

[central connectPeripheral:peripheral options:nil];

self.title = @"發(fā)現(xiàn)手環(huán)验游,開始連接...";

self.resultTextV.text = [NSString stringWithFormat:@"發(fā)現(xiàn)手環(huán):%@\n名稱:%@\n",peripheral.identifier.UUIDString,peripheral.name];

}}

6充岛、#pragma mark 設(shè)備掃描與連接的代理

//連接到Peripherals-成功

- (void)centralManager:(CBCentralManager *)central didConnectPeripheral:(CBPeripheral *)peripheral

{

self.title = @"連接成功,掃描信息...";

NSLog(@"連接外設(shè)成功耕蝉!%@",peripheral.name);

self.peripheral = peripheral;

[peripheral setDelegate:self];

[peripheral discoverServices:nil];

NSLog(@"開始掃描外設(shè)服務(wù) %@...",peripheral.name);

}

7崔梗、//掃描到服務(wù)

-(void)peripheral:(CBPeripheral *)peripheral didDiscoverServices:(NSError *)error{

if (error)

{

NSLog(@"掃描外設(shè)服務(wù)出錯:%@-> %@", peripheral.name, [error localizedDescription]);

self.title = @"find services error.";

[self.activeID stopAnimating];

self.connectBtn.enabled = YES;

return;

}

NSLog(@"掃描到外設(shè)服務(wù):%@ -> %@",peripheral.name,peripheral.services);

for (CBService *service in peripheral.services) {

if ([service.UUID.UUIDString isEqualToString:ServicesUUID]) {

[peripheral discoverCharacteristics:nil forService:service];

}

}

NSLog(@"開始掃描外設(shè)服務(wù)的特征 %@...",peripheral.name);

}

8、//掃描到特征

- (void)peripheral:(CBPeripheral *)peripheral didDiscoverCharacteristicsForService:(CBService *)service error:(NSError *)error{

if (error)

{

NSLog(@"掃描外設(shè)的特征失斃菰凇蒜魄!%@->%@-> %@",peripheral.name,service.UUID, [error localizedDescription]);

self.title = @"find characteristics error.";

[self.activeID stopAnimating];

self.connectBtn.enabled = YES;

return;

}

NSLog(@"掃描到外設(shè)服務(wù)特征有:%@->%@->%@",peripheral.name,service.UUID,service.characteristics);

//獲取Characteristic的值

for (CBCharacteristic *characteristic in service.characteristics){

{

self.characteristic = characteristic;

[peripheral setNotifyValue:YES forCharacteristic:characteristic];

[self.peripheral setNotifyValue:YES forCharacteristic:characteristic];

if ([characteristic.UUID.UUIDString isEqualToString:NotifyUUID])

{

[peripheral setNotifyValue:YES forCharacteristic:characteristic];

}

//讀取時間

else if ([characteristic.UUID.UUIDString isEqualToString:WriteUUID])

{

// 讀取時間:

Byte byte[3];

byte[0] = 0X89;

byte[1] = 0x00;

byte[2] = 0x00;

NSData *data = [NSData dataWithBytes:byte length:3];

[peripheral writeValue:data forCharacteristic:characteristic type:CBCharacteristicWriteWithResponse];

// 讀取時間:

Byte byte1[4];

byte1[0] = 0xC6;

byte1[1] = 0x01;

byte1[2] = 0x08;

byte1[3] = 0x08;

NSData *data1 = [NSData dataWithBytes:byte1 length:4];

[peripheral writeValue:data1 forCharacteristic:characteristic type:CBCharacteristicWriteWithResponse];

}

else if ([characteristic.UUID.UUIDString isEqualToString:SHAKE])

{

//震動

theSakeCC = characteristic;

}

//設(shè)備信息

else if ([characteristic.UUID.UUIDString isEqualToString:DEVICE])

{

[peripheral readValueForCharacteristic:characteristic];

}

}

}

}

#pragma mark 設(shè)備信息處理

//掃描到具體的值

- (void)peripheral:(CBPeripheral *)peripheral didUpdateValueForCharacteristic:(CBCharacteristic *)characteristic error:(nullable NSError *)error

{

if (error) {

NSLog(@"掃描外設(shè)的特征失敗场躯!%@-> %@",peripheral.name, [error localizedDescription]);

self.title = @"find value error.";

return;

}

NSLog(@"==characteristic.UUID.UUIDString:%@===characteristic.value:%@",characteristic.UUID.UUIDString,characteristic.value);

if ([characteristic.UUID.UUIDString isEqualToString:[NSString stringWithFormat:NotifyUUID]]) {

Byte *steBytes = (Byte *)characteristic.value.bytes;

int steps = TCcbytesValueToInt(steBytes);

NSLog(@"步數(shù):%d====%@=======",steps,characteristic.value);

self.resultTextV.text = [NSString stringWithFormat:@"%@步數(shù):%d\n",self.resultTextV.text,steps];

UIAlertView *ali = [[UIAlertView alloc]initWithTitle:[NSString stringWithFormat:@"%@步數(shù):%d\n",self.resultTextV.text,steps] message:[NSString stringWithFormat:@"%@步數(shù):%d\n",self.resultTextV.text,steps] delegate:self cancelButtonTitle:@"ok" otherButtonTitles: nil];

[ali show];

}

else if ([characteristic.UUID.UUIDString isEqualToString:@"FFF1"])

{

Byte *bufferBytes = (Byte *)characteristic.value.bytes;

int buterys = TCcbytesValueToInt(bufferBytes)&0xff;

NSLog(@"電池:%d%%",buterys);

self.resultTextV.text = [NSString stringWithFormat:@"%@電量:%d%%\n",self.resultTextV.text,buterys];

}

else if ([characteristic.UUID.UUIDString isEqualToString:DEVICE])

{

Byte *infoByts = (Byte *)characteristic.value.bytes;

//這里解析infoByts得到設(shè)備信息

}

[self.activeID stopAnimating];

self.connectBtn.enabled = YES;

self.title = @"信息掃描完成";

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末谈为,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子踢关,更是在濱河造成了極大的恐慌伞鲫,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件签舞,死亡現(xiàn)場離奇詭異秕脓,居然都是意外死亡,警方通過查閱死者的電腦和手機儒搭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進店門吠架,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人搂鲫,你說我怎么就攤上這事诵肛。” “怎么了默穴?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長褪秀。 經(jīng)常有香客問我蓄诽,道長,這世上最難降的妖魔是什么媒吗? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任仑氛,我火速辦了婚禮,結(jié)果婚禮上闸英,老公的妹妹穿的比我還像新娘锯岖。我一直安慰自己,他們只是感情好甫何,可當(dāng)我...
    茶點故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布出吹。 她就那樣靜靜地躺著,像睡著了一般辙喂。 火紅的嫁衣襯著肌膚如雪捶牢。 梳的紋絲不亂的頭發(fā)上鸠珠,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天,我揣著相機與錄音秋麸,去河邊找鬼渐排。 笑死,一個胖子當(dāng)著我的面吹牛灸蟆,可吹牛的內(nèi)容都是我干的驯耻。 我是一名探鬼主播,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼炒考,長吁一口氣:“原來是場噩夢啊……” “哼可缚!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起票腰,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤城看,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后杏慰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體测柠,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年缘滥,在試婚紗的時候發(fā)現(xiàn)自己被綠了轰胁。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡朝扼,死狀恐怖赃阀,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情擎颖,我是刑警寧澤榛斯,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站搂捧,受9級特大地震影響驮俗,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜允跑,卻給世界環(huán)境...
    茶點故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一王凑、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧聋丝,春花似錦索烹、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至况木,卻和暖如春瓣戚,著一層夾襖步出監(jiān)牢的瞬間端圈,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工子库, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留舱权,地道東北人。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓仑嗅,卻偏偏與公主長得像宴倍,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子仓技,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,440評論 2 348

推薦閱讀更多精彩內(nèi)容