iOS蓝牙4.0开发例子

1建立中心角色

#import <CoreBluetooth/CoreBluetooth.h>
CBCentralManager *manager;
manager = [[CBCentralManager alloc] initWithDelegate:self queue:nil];

2扫描外设(discover)

[manager scanForPeripheralsWithServices:nil options:options]; 

3连接外设(connect)

- (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)

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

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

    [peripheral setDelegate:self];  //查找服务
    [peripheral discoverServices:nil];  

}
- (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);  //查找特征
            [peripheral discoverCharacteristics:nil forService:service];
            break;
        }  

    }
}
- (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);//监听特征
                [self.peripheral setNotifyValue:YES forCharacteristic:characteristic];
            }

    }
}

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

- (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];
}

NSData *d2 = [[PBABluetoothDecode sharedManager] HexStringToNSData:@"0x02"];
                [self.peripheral writeValue:d2 forCharacteristic:characteristic type:CBCharacteristicWriteWithoutResponse];

  

时间: 2024-12-23 07:48:45

iOS蓝牙4.0开发例子的相关文章

蓝牙4.0开发 iOS &amp;&amp; Bluno 4.0 蓝牙设备传输(相关资料、文章、链接)

Bluno 4.0 蓝牙设备传输 转至元数据结尾 基本:硬件设备支持 5个按钮. 必要前提: 理解BLE 4.0+的基本概念和操作方法. 操作步骤: 设备信息服务中(180a)确定特征(2a24)是否是Bluno设备 连接设备后需要设置设备串口传输参数:服务(dfb0)中的特征(dfb2)= "AT+PASSWOR=DFRobot\r\n" (dfb2)= "AT+CURRUART=115200\r\n" 数据接收通过服务(dfb0)中的特征(2a24)获取 数据示

iOS蓝牙4.0协议简单介绍

iOS开发蓝牙4.0的框架是CoreBluetooth,本文主要介绍CoreBluetooth的使用,关于本文中的代码片段大多来自github上的一个demo,地址是myz1104/Bluetooth. 在CoreBluetooth中有两个主要的部分,Central和Peripheral,有一点类似Client Server.CBPeripheralManager 作为周边设备是服务器.CBCentralManager作为中心设备是客户端.所有可用的iOS设备可以作为周边(Peripheral)

https://github.com/coolnameismy/BabyBluetooth github上的一个ios 蓝牙4.0的库并带文档和教程

The easiest way to use Bluetooth (BLE )in ios,even bady can use. 简单易用的蓝牙库,基于CoreBluetooth的封装,并兼容ios和mac osx. 为什么使用它? 1:基于原生CoreBluetooth框架封装的轻量级的开源库,可以帮你更简单地使用CoreBluetooth API. 2:CoreBluetooth所有方法都是通过委托完成,代码冗余且顺序凌乱.BabyBluetooth使用block方法,可以重新按照功能和顺序

iOS蓝牙4.0

iOS的蓝牙用到了  CoreBluetooth 框架 首先导入框架 #import <CoreBluetooth/CoreBluetooth.h> 我们需要一个管理者来管理蓝牙设备,CBCentralManager 首先创建管理者 self.manager = [[CBCentralManager alloc]initWithDelegate:self queue:nil options:nil]; 这里只需要设置一个代理,队列根据需求来选择,这里用了nil 就是默认在主线程.options

android 蓝牙4.0 开发介绍

最近一直在研究一个蓝牙功能 由于本人是菜鸟  学起来比较忙 一直搞了好久才弄懂 , 网上对蓝牙4.0也就是几个个dome 抄来抄去,全是英文注解 , 对英语不好的朋友来说 真是硬伤 , 一些没必要的描述罗里吧嗦 , 关键的方法接口 一笔带过 .........算了不吐槽了.我就介绍一下我最近的学习心得吧 ,简单的什么开启  蓝牙 搜索蓝牙什么的我就不说了 你们百度一下 android 蓝牙 4.0 一大坨.看完再来看我的博客也行  ,我就介绍点 网上那些 一笔带过 比较重要的接口回调 之类的.

CoreBluetooth——IOS蓝牙4.0使用心得

原文链接:http://m.blog.csdn.net/article/details?plg_nld=1&id=51014318&plg_auth=1&plg_uin=1&plg_usr=1&plg_vkey=1&plg_nld=1&plg_d 文章出处http://blog.csdn.net/xgcyangguang 所做的东西是通过手机/pad与蓝牙4.0的设备进行连接,之后设备上按对应的按键我们会收到对应的数值.首先需要和做蓝牙4.0的同事沟

iOS 蓝牙4.0相关资料

推酷资料 http://www.tuicool.com/topics/10200246 日本的一个技术博客 http://see.sl088.com/wiki/蓝牙4.0_For_IOS#cite_note-7 http://lynchwong.com http://lynchwong.com/2014/12/15/iOS蓝牙,CoreBluetooth框架简介及入门使用/

iOS OpenGL ES2.0 开发实例

本教程源码地址下载:https://github.com/wanglixin1999/HelloGL OpenGL ES 是可以在iphone上实现2D和3D图形编程的低级API. 如果你之前接触过 cocos2d,sparrow,corona,unity 这些框架,你会发现其实它们都是基于OpenGL上创建的. 多数程序员选择使用这些框架,而不是直接调用OpenGL,因为OpenGL实在是太难用了. 而这篇教程,就是为了让大家更好地入门而写的. 在这个系列的文章中,你可以通过一些实用又容易上手

蓝牙4.0开发

相关资源 谷歌官方文档,但是遗憾的是没有写操作.这个我可是研究了好几天,哎... https://developer.android.com/guide/topics/connectivity/bluetooth-le.html#setup 谷歌官方的demo:https://github.com/googlesamples/android-BluetoothLeGatt 坑总结:http://blog.csdn.net/qingtiantianqing/article/details/5245