1.中心设备和外围设备以及它们在蓝牙通讯中的角色。

在所有的BLE( Bluetooth low energy,下文简称蓝牙4.0 )通讯中都涉及2个主要的角色:中心设备和外围设备。它是基于传统的客户-服务器(主从式)结构,一般来说,外围设备有其它设备需要的数据,中心设备使用外围设备提供的数据来完成特定的任务。像下图所示,心率监测器有有用的数据,Mac或者iOS APP需要这些数据来显示用户的心率。

2.中心设备搜索和连接正在广告的外围设备

这里介绍了一个新的名词:广告(advertise)。

外围设备对外广播广告包(advertising packets)形式的数据,一个广告包是一个相对小的一捆包含着外围设备信息的数据,例如包含外围设备的名字和它的主要功能。举一个例子,一个数字温度调节器会广告(advertise)说它提供房间的目前温度数据,在蓝牙4.0中,广告是外围设备让其它设备发现的主要方法。

另一方面,中心设备,可以扫描和监听任何在广告(advertising)的外围设备,如下图。中心设备可以向任何它发现正在广告的外围设备请求连接

三.外围设备的数据结构

这里介绍了两个新名词:服务(services)和特征(characteristics)。

连接外围设备的目的是探索并与其进行数据交互,开始这些之前,我们先来了解下外围设备的数据组成

外围设备包含一个或多个服务(services)以及提供了连接信号的强度。一个服务是一些数据的集合,是设备完成一个特定行为的功能。例如,一个心率计的服务是从心率传感器读取数据。

 

服务由特征(characteristics)组成。一个特征提供外围设备服务的更详细信息。例如,心率服务只是说明它包含一个描述心率传感器所在的身体部位的特征和一个传输心率测量数据的特征。图1-3表明了一个心率传感器服务和特征的关系结构

4、中心设备检测外围设备并与其进行数据交互

一个中心设备与一个外围设备连接成功后,便可以搜索外围设备提供的所有服务和特征。(广告的数据可能只含有一部分可用服务)。一个中心设备也可以通过读和写服务的特征来与外围设备交互。例如,你的app可以从数码温度调节器请求当前房间的温度,或者可以提供一个值来设置房间温度。

5.中心设备、外围设备和外围设备数据的表现形式

主要的蓝牙参与者和相关数据对应Core Bluetooth framework中的哪些对象?

 

5.1.中心设备

当你使用本地中心设备来与外部外围设备进行交互,你需要在蓝牙的中心设备这边进行代码编写,除非你建立的是一个本地外围设备(在5.2进行介绍),否则你的大多数蓝牙传输会在中心设备这边进行。

有关怎样在你的app中实现中心设备角色,请看 Performing Common Central Role Tasks (我的上一篇翻译)andBest Practices for Interacting with a Remote Peripheral Device

 

5.1.1本地中心设备和远程外围设备

在中心设备这边,一个本地中心设备用一个CBCentralManager对象来代表,这些对象用来管理发现和连接远程设备(用CBPeripheral对象来代表),包括搜索、发现、连接正在广告的外围设备。如下图,显示本地中心设备和远程外围设备在Core Bluetooth framework的表现形式。

 

 
 
 
 

5.1.2远程外围设备数据用CBService 和 CBCharacteristic来表示

当你与外围设备( CBPeripheral对象)进行数据交互,你需要处理它的服务(services)和特征(characteristics),在Core Bluetooth framework中,外围设备的服务用CBService对象来表示。同样的,

外围设备的特征用 CBCharacteristic对象来表示。如下图,表示一个远程外围设备的服务和特征的基本结构。

 

 
 
 

5.2外围设备对应的对象

从OS X10.9 和iOS6开始,Mac和iOS设备可以作为蓝牙4.0的外围设备,为其它设备提供数据,包括其它的Mac、iPhone和iPad设备。当你将你的设备设置为外围设备角色,你需要实现外围设备的一些处理。

 

5.2.1本地外围设备和外部中心设备

在外围设备这一边,本地外围设备用 CBPeripheralManager对象来表示,这些对象用来管理外围设备数据库中的服务和特征,以及给外部的中心设备(CBCentral对象)广播这些服务,外围设备管理对象同时可以回应远程设备的读和写请求,下图显示本地外围设备和远程中心设备在 Core Bluetooth framework的表示

5.2.2本地外围设备的数据使用CBMutableService 和CBMutableCharacteristic对象来表示

当你设置本地外围设备( CBPeripheralManager对象)并且进行数据交互,你需要处理它的服务和特征。在Core Bluetooth framework中,本地外围设备的服务用CBMutableService对象来表示。同样的,一个服务的特征用CBMutableCharacteristic对象来表示,图1-7便是本地外围设备的服务和特征的基本结构

 

Core Bluetooth【官方文档翻译】【02】的更多相关文章

  1. Core BlueTooth官方文档翻译

    本⽂文是苹果<Core Bluetooth Programming Guide>的翻译. 关于Core Bluetooth Core Bluetooth 框架提供了蓝⽛牙低功耗⽆无线设备与 ...

  2. Core Foundation 官方文档翻译

      Core Foundation框架中常用的隐含类型: 使用这些隐含类型时需要自己初始化,自己去释放内存.所以需要记住,在初始化的同时在相应位置释放.以防出现内存问题.   1.CFStringRe ...

  3. Core Bluetooth 概述 【官方文档翻译】

    Core Bluetooth 框架在Mac和iOS平台,为配备了低功耗蓝牙无线技术的设备提供了进行通信所需要的类.例如,您的应用程序可以发现,探索,和低功耗的外围设备进行交互,如心率监视器.数字温控器 ...

  4. Aircrack-ng官方文档翻译[中英对照]---Aireplay-ng

    Aircrack-ng官方文档翻译---Aireplay-ng[90%] Description[简介] Aireplay-ng is used to inject frames. Aireplay- ...

  5. Salt Stack 官方文档翻译 - 一个想做dba的sa - 博客频道 - CSDN.NET

    OSNIT_百度百科 Salt Stack 官方文档翻译 - 一个想做dba的sa - 博客频道 - CSDN.NET Salt Stack 官方文档翻译 分类: 自动运维 2013-04-02 11 ...

  6. ABP 教程文档 1-1 手把手引进门之 ASP.NET Core & Entity Framework Core(官方教程翻译版 版本3.2.5)

    本文是ABP官方文档翻译版,翻译基于 3.2.5 版本 官方文档分四部分 一. 教程文档 二.ABP 框架 三.zero 模块 四.其他(中文翻译资源) 本篇是第一部分的第一篇. 第一部分分三篇 1- ...

  7. Spring官方文档翻译(1~6章)

    Spring官方文档翻译(1~6章) 转载至 http://blog.csdn.net/tangtong1/article/details/51326887 Spring官方文档.参考中文文档 一.S ...

  8. CALayer---iOS-Apple苹果官方文档翻译之CALayer

    CHENYILONG Blog CALayer---iOS-Apple苹果官方文档翻译之CALayer CALayer /*技术博客http://www.cnblogs.com/ChenYilong/ ...

  9. iOS数据存取---iOS-Apple苹果官方文档翻译

    CHENYILONG Blog iOS数据存取---iOS-Apple苹果官方文档翻译 数据存取/*技术博客http://www.cnblogs.com/ChenYilong/ 新浪微博http:// ...

随机推荐

  1. SQL Server事务的存储过程

    在酒店管理系统开发中,我们会创建房间表和房间类型表(房型表)这两个表,如下图所示: 房型表:RoomType 房间表:Room 首先这两个表的关系:Room是从表,RoomType是主表,两表有主外键 ...

  2. C语言基础知识汇总

    c语言执行步骤: 一.编辑程序 1.编写c语言的代码,保存在扩展名.c的文件中,源文件. 2.编写代码有三种方式: a.vi命令方式系统自带 b.ultraedit网络下载 c.xcode网络下载 二 ...

  3. NPOI通过DataTable导出和读取Excel

    Excel导入及导出问题产生: 从接触.net到现在一直在维护一个DataTable导出到Excel的类,时不时还会维护一个导入类.以下是时不时就会出现的问题: 导出问题: 如果是asp.net,你得 ...

  4. python调win32api调整屏幕分辨率

    需要频繁切换屏幕分辨率,想写个脚本来实现,需要切换时运行一下就好 在网上查到,需要用windows的api,ChangeDisplaySettings 实现代码如下 import win32api d ...

  5. javascript统计输入文本的简易方法

    计算文本框的输入字符数的简易方法: ]; var tValue = text.value; num = Math.ceil(getLength(tValue)/); //正则:用于区分中文为两个字节 ...

  6. 解决mac ssh连linux中文乱码的问题[转]

    将Mac下/etc/ssh_config中的SendEnv LANG LC_*这一行用#号注释掉 reference: http://www.zhihu.com/question/20117388

  7. [转]MySQL 5.6 全局事务 ID(GTID)实现原理(二)

    原文连接:http://qing.blog.sina.com.cn/1757661907/68c3cad333002qsk.html 原文作者:淘长源 转载注明以上信息 前文 MySQL 5.6 全局 ...

  8. 像asp.net Mvc一样开发nodejs+express Mvc站点

    像asp.net Mvc一样开发nodejs+express Mvc站点 首先,我是个c#码农.从事Mvc开发已然4个年头了,这两年前端MVC的兴起,我也跟风学了一些,对前端的框架也了解一些,angu ...

  9. Linux下安装Perl和Perl的DBI模块

    今天在虚拟机测试shell脚本的时候,有些命令使用不了. 比如说 mysqlhotcopy ,它提示Perl的版本太低. 我用的 RedHat9 的Perl才5.8.0版本...(2002年以前的) ...

  10. ***.M51文件详细注释

    ;说明:这是1950编译后生成的Keil_1910.M51文件,以此为例来讲解M51文件 // :: PAGE BL51 BANKED LINKER/LOCATER V6., INVOKED BY: ...