iOS Bluetooth 蓝牙 学习

一个蓝牙 第三方库 (github上面)  https://github.com/coolnameismy/BabyBluetooth    (名字:BabyBluetooth)

----------蓝牙大神博客(http://liuyanwei.jumppo.com/index.html)---------------

1.http://liuyanwei.jumppo.com/2015/07/17/ios-BLE-1.html  (蓝牙开发相关基础知识)

2.http://liuyanwei.jumppo.com/2015/08/14/ios-BLE-2.html  (蓝牙中心模式的iOS代码)

3.http://liuyanwei.jumppo.com/2015/09/07/ios-BLE-3.html  (app作为外设被链接的实现)

4.http://liuyanwei.jumppo.com/2015/09/11/ios-BLE-4.html   (BabyBluetooth蓝牙库介绍

----原生蓝牙调用

iOS蓝牙4.0开发例子

1建立中心角色


1

2

3

#import <CoreBluetooth/CoreBluetooth.h> 

CBCentralManager *manager; 

manager = [[CBCentralManager alloc] initWithDelegate:self queue:nil]; 

2扫描外设(discover)

[manager scanForPeripheralsWithServices:nil options:options]; 

3连接外设(connect)


1

2

3

4

5

6

7

8

9

10

11

12

13

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

{

        if([peripheral.name  isEqualToString:BLE_SERVICE_NAME]){

                [self connect:peripheral];

        }

s); 

}       

-(BOOL)connect:(CBPeripheral *)peripheral{

        self.manager.delegate = self;

        [self.manager connectPeripheral:peripheral

                                options:[NSDictionary dictionaryWithObject:[NSNumber numberWithBool:YES] forKey:CBConnectPeripheralOptionNotifyOnDisconnectionKey]];

}

  

4扫描外设中的服务和特征(discover)


1

2

3

4

5

6

7

8

9

10

11

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

      

    NSLog(@"Did connect to peripheral: %@", peripheral); 

    _testPeripheral = peripheral; 

      

    [peripheral setDelegate:self];  <br>//查找服务

    [peripheral discoverServices:nil]; 

      

      

}


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

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

  

      

    NSLog(@"didDiscoverServices"); 

      

    if (error) 

    

        NSLog(@"Discovered services for %@ with error: %@", peripheral.name, [error localizedDescription]); 

          

        if ([self.delegate respondsToSelector:@selector(DidNotifyFailConnectService:withPeripheral:error:)]) 

            [self.delegate DidNotifyFailConnectService:nil withPeripheral:nil error:nil]; 

          

        return

    

      

  

    for (CBService *service in peripheral.services) 

    

         //发现服务

        if ([service.UUID isEqual:[CBUUID UUIDWithString:UUIDSTR_ISSC_PROPRIETARY_SERVICE]]) 

        

            NSLog(@"Service found with UUID: %@", service.UUID);  <br>//查找特征

            [peripheral discoverCharacteristics:nil forService:service]; 

            break

        

          

          

    

}


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

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

{

    

    if (error)

    {

        NSLog(@"Discovered characteristics for %@ with error: %@", service.UUID, [error localizedDescription]);

        

        [self error];

        return;

    }

    

    NSLog(@"服务:%@",service.UUID);

    for (CBCharacteristic *characteristic in service.characteristics)

    {

       //发现特征

            if ([characteristic.UUID isEqual:[CBUUID UUIDWithString:@"xxxxxxx"]]) {

                NSLog(@"监听:%@",characteristic);<br>//监听特征

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

            }

        

    }

}

5与外设做数据交互(读 与 写)  


1

2

3

4

5

6

7

8

9

10

11

12

13

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

{

    if (error)

    {

        NSLog(@"Error updating value for characteristic %@ error: %@", characteristic.UUID, [error localizedDescription]);

        self.error_b = BluetoothError_System;

        [self error];

        return;

    }

    

//    NSLog(@"收到的数据:%@",characteristic.value);

    [self decodeData:characteristic.value];

}


1

2

NSData *d2 = [[PBABluetoothDecode sharedManager] HexStringToNSData:@"0x02"];

                [self.peripheral writeValue:d2 forCharacteristic:characteristic type:CBCharacteristicWriteWithoutResponse];

时间: 2024-11-04 08:00:19

iOS Bluetooth 蓝牙 学习的相关文章

iOS Bluetooth 打印小票(二)

在上一篇中介绍了打印小票所需要的命令,这一篇介绍Bluetooth连接蓝牙和打印小票的全过程. CoreBluetooth的封装 因为CoreBluetooth中的代理太多,而每一次操作又比较依赖上一次操作的结果,方法又比较零散,所以我做了粗略封装,把代理改成了block方式回调. 1.获取蓝牙管理单例 HLBLEManager *manager = [HLBLEManager sharedInstance]; __weak HLBLEManager *weakManager = manager

bluetooth 蓝牙协议和标准,配置

Bluetooth 配置文件表达了一般行为,Bluetooth 设备可以通过这些行为与其它设备进行通信.Bluetooth 技术定义了广泛的配置文件,描述了许多不同类型的使用案例.为了使用 Bluetooth 无线技术,设备必须能够翻译特定 Bluetooth 配置文件.配置文件定义了可能的应用.对象交换 (OBEX) 协议OBEX 传输协议定义了数据对象和两个设备用来交换这些对象的通信协议.OBEX 支持应用程序在 Bluetooth 协议堆栈及 IrDA 堆栈上工作.对于 Bluetooth

CC2541蓝牙学习——外设I/O

学习目标:I/O口的配置,掌握I/O外设功能及位置分布,寄存器“PERCFG”.“P2SEL”和“P2DIR”. 前面CC2541蓝牙学习——I/O口介绍过CC2541有21个I/O引脚,这些引脚可以作为通用I/O引脚,同时通过独立编程还可以作为外设I/O引脚用作ADC.串口.定时器和调试接口.当设置为外设I/O时,需要将对应的寄存器位PxSEL置1,每个外设单元对应两组可以选择的I/O引脚,即“外设位置1”和“外设位置2”,如下表所示. 从表中我们可以看出整个P0口都可作为ADC使用,因此可以

iOS NSString的学习熟悉

对于字符串频繁的切割,合并,插入等操作,优先使用NSMutableString类. 这里讨论的是NSString.然后就是贴代码: 1 -(void)stringDemo{ 2 NSLog(@"____________________________"); 3 4 NSString *string = [[NSString alloc] initWithString:@"Hi,woods!"]; 5 NSLog(@"%@", string); 6

IOS开发---菜鸟学习之路--(二)-数据获取

http://www.cnblogs.com/PleaseInputEnglish/p/3432024.html IOS开发---菜鸟学习之路--(二)-数据获取,布布扣,bubuko.com

iOS开发如何学习前端(1)

iOS开发如何学习前端(1) 我为何学前端?因为无聊. 概念 前端大概三大块. HTML CSS JavaScript 基本上每个概念在iOS中都有对应的.HTML请想象成只能拉Autolayout或者设置Frame的ViewController.好比你在网页上放了一个Button,如果用HTML你就可以设置他的摆放位置,在哪哪个控件里.但是你不可以设置大小,颜色,圆角之类的属性.CSS专门负责HTML管不了的这些颜色啊,大小啊之类的属性.JavaScript主要负责响应事件,你把它想象成iOS

0811 iOS开发需要学习哪些内容

1.iOS开发需要学习哪些内容? 2.开发步骤 3.框架 为了方便开发者开发出强大的功能,苹果提供了各种各样的框架 [1]UIKit:创建和管理应用程序的用户界面 [2]QuartzCore:提供动画特效以及通过硬件进行渲染的能力 [3]CoreGraphics:提供2D绘制的基于C的API [4]CoreLocation:使用GPS和WIFI获取位置信息 [5]MapKit:为应用程序提供内嵌地图的接口 [6]AVFoundation:音频.视频处理 [7]--

iOS,蓝牙开发!!--By帮雷

iOS的蓝牙开发大致有以下几种方式. 1 GameKit.framework [只能存在于iOS设备之间,多用于游戏 能搜索到的demo比较多,不确切说名字了,code4app里面就有] 2 CoreBlueTooth.framework [必须要支持蓝牙4.0,且iPhone4以上,即至少4s手机.可与第三方设备交互数据, 官方demo是Temperature Sensor ] 3 ExternalAccessory.framework [可于第三方蓝牙设备交互,但是蓝牙设备必须经过MFI认证

关于iOS开发的学习

关于iOS开发的学习,打个比方就像把汽车分解:    最底层的原料有塑料,钢铁    再用这些底层的东西造出来发动机,座椅    最后再加上写螺丝,胶水等,把汽车就拼起来了iOS基本都是英文的资料,也由于封闭,文档写的相当好.在遇到新框架的时候:    弄明白框架的功能    去文档里搜搜 框架的 Programming Guide 很有用    要弄明白框架类的继承结构写iOS的程序不一定都是用OBJC,很多框架是用C写的.学习iOS开发基础可以按照下面两个方面学:    基础 (原料 钢铁