之前写了【iOS官方文档翻译】iOS的蓝牙连接、数据接收及发送一文,介绍了怎样进行蓝牙通讯,但是很多基本概念没有进行解释,看起来可能有点吃力,所以现在再翻译一篇苹果对官方蓝牙4.0一些基本概念介绍的文章。

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便是本地外围设备的服务和特征的基本结构

了解这些基本概念之后,看我的上一篇文章就轻松多了:【iOS官方文档翻译】iOS的蓝牙连接、数据接收及发送

【iOS官方文档翻译】iOS蓝牙的基本概念相关推荐

  1. About HTTP Live Streaming官方文档翻译 [iOS]

    新博客地址:About HTTP Live Streaming官方文档翻译 [iOS] 版权声明:本文为博主原创翻译,如需转载请注明出处. 苹果源文档地址 - 点击这里 About HTTP Live ...

  2. iOS 官方文档翻译

    各路大神爱发博客的.爱写写东西的.爱分享的.爱技术的.潮人.妹纸.男神.都可已加入到我们这个大家庭来.一起做些有趣的事情.iOS 官方文档翻译QQ群:486111671.github 地址:https ...

  3. 【iOS官方文档翻译】iOS的蓝牙连接、数据接收及发送

    说明:苹果官方开发文档中涉及一些名词:Central(中心设备).Peripheral(外围设备).advertising(广告).Services(服务).Characteristic(特征)等,请 ...

  4. 【iOS官方文档翻译】UICollectionView与UICollectionViewFlowLayout

    (一)先来简单回顾一下UICollectionView *UICollectionView的简单使用可以看我以前写的这篇博文:UICollectionView的基本使用 UICollectionVie ...

  5. View Programming Guide for iOS官方文档翻译一

    版权声明:本文为博主原创文章,转载请声明出处,谢谢! 本文档的官方英文原版地址 关于窗口和视图 在iOS中,您可以使用窗口(windows)和视图(views)在屏幕上显示APP的内容. 窗口(Win ...

  6. Hyperledger Fabric 1.3 官方文档翻译(三)关键概念 (Key Concepts) - 3.7 对等节点 (Peers)

    文章目录 对等节点(Peers) 术语(A word on terminology) 账本与链代码(Ledgers and Chaincode) 多账本(Multiple Ledgers) 多链代码( ...

  7. [iOS]Advanced Memory Management Programming Guide 高级内存管理编程指南(官方文档翻译)

    Advanced Memory Management Programming Guide - 高级内存管理编程指南(官方文档翻译) 版权声明:本文为博主原创翻译,如需转载请注明出处. 新博客文章地址: ...

  8. iOS程序启动原理---iOS-Apple苹果官方文档翻译

    本系列所有开发文档翻译链接地址:iOS7开发-Apple苹果iPhone开发Xcode官方文档翻译PDF下载地址 //转载请注明出处--本文永久链接:http://www.cnblogs.com/Ch ...

  9. Ionic Framework 5官方文档翻译

    Ionic Framework 5官方文档翻译 入门 Ionic Framework 5特点 Ionic Framework是什么? 核心概念 构建你的第一个应用 先进的Web应用 浏览器支持 版本控 ...

最新文章

  1. 抖音发布特效数据报告:每五个投稿有一个使用特效
  2. LeetCode Weekly Contest 27
  3. const成员或者引用成员必须使用构造函数初始化列表的方式
  4. 根目录_Linux Shell从入门到删除根目录跑路指南
  5. MaxCompute 实现增量数据推送(全量比对增量逻辑)
  6. python清空语句_怎么清除python编译器的语句
  7. 阿里巴巴整理的python_阿里P8大佬整理的2020年最全99道python面试题,文末附答案...
  8. 拳王虚拟项目公社:利用减肥健身类虚拟资源项目,如何打造一套赚钱系统?
  9. Java实现非对称加密算法-RSA加解密
  10. Qt4_使用窗体编辑记录
  11. 获取当前ip_百度定位:IP定位、浏览器定位、SDK辅助定位
  12. CSS border-style属性
  13. Android每周一轮子:Nvwa(热修复)
  14. Java:jdk8中map新增的merge方法
  15. Centos6.5 安装 Mysql-5.6.41
  16. Hello,Java!(娱乐)
  17. php 定时推送,php定时自动发送新浪微博
  18. python的空语句_Python 函数返回空值
  19. 手机怎样和宽带连接无线路由器设置路由器连接服务器,手机如何设置路由器?...
  20. 微信公众平台发红包接口

热门文章

  1. D3.js、HTML5、canvas 开发专题
  2. 程序员跳槽全攻略——读书笔记
  3. LabelMe图像数据集下载
  4. Git与Svn的区别—笔记1
  5. [原]three.js 地形纹理混合
  6. win8 metro 拖拽重排grid
  7. 我对她说,你能不能换件衣服?换种心情?换种脾气?她说,可以,换个人就行了···...
  8. 如何学习linux编程
  9. C#:消息队列应用程序
  10. Python3中__init__.py文件介绍