iOS蓝牙连接流程介绍-1
蓝牙连接流程介绍
1.1-程序员找女朋友流程介绍
0.程序员找女朋友参与者
- 1.你
 - 2.受害者(女性同胞) 
- (1)她的性格1
- 性格的特点
 
 - (2)她的性格2 
- 分析性格的特点
 
 
 - (1)她的性格1
 
1.寻找女性
- 寻尽身边一切女性,哪怕是坐在对面的UI妹子和身旁细皮嫩肉的安卓
 - 撒大网捕鱼,万一有哪个瞎眼的上沟了呢?
 
2.锁定目标
- 有了目标才好进行下一步
 
3.与目标建立联系(搭讪)
- 每一对情侣都是从朋友开始的。不!是从借你的那支笔或者请你吃的那顿饭开始的。
 - iOS程序员挣得多,死得早
 - 要才华有才华,要智商有智商,要幽默有幽默
 
4.成为普通朋友,开始交往
- 交往的目的是为了了解对方的性格、特长
- 比如ABCD,咳……咳……
 - 比如三从四德,咳……咳……
 
 
- 交往的目的是为了了解对方的性格、特长
 5.通过交往,获取对方的性格,开始分析
6.分析性格的特点
- 1.为人处世的性格
- 贤良淑德有木有
 
 - 2.生活上的性格 
- 洗衣做饭拖地带娃行不行
 
 - 3.其他方面的性格 
- 你懂得
 
 
- 1.为人处世的性格
 7.锁定性格的某一特点,开始深入的交流,互相发送数据(xxoo)
1.2-蓝牙连接流程介绍
0.蓝牙连接的参数者
- 1.蓝牙中心
CBCentralManager:一般指得是iPhone手机 - 2.设备(外设)
CBPeripheral:装有蓝牙芯片的智能硬件- 外设的服务
peripheral.services数组,CBService对象:硬件可以提供很多服务,实际上就是把硬件的功能分模块,比如手环的震动和亮起来的颜色是两个不同服务- 服务下的特征
CBCharacteristic:负责为服务提供读写数据,一个服务下可以有很多个特征,比如灯亮的颜色有RGB的值,有时间长度等都是一个单独的服务 
 - 服务下的特征
 
 - 外设的服务
 
- 1.蓝牙中心
 1.蓝牙中心开始扫描外设
- 一个蓝牙中心可以扫描到周围蓝牙距离有效范围(20m左右跟障碍物有关)的所有外设
 - 一个外设也可以被多个蓝牙中心扫描 
- 在没有成为男女朋友之前,男人可以同时追求多个女性,女性也可以同时被多个男性追求
 
 
2.扫描到外设,开始识别
- 我们会扫描到周围所有的外设,但是一般我们只会连接我们自己公司的智能硬件,所以这里需要识别
CBPeripheral有一个identifier属性,是设备的唯一标识符- 有些APP通过扫一扫硬件的二维码建立连接,其实内部已经扫描到了外设,只是UI不显示,二维码中放的就是外设的
identifer 
- 有些APP通过扫一扫硬件的二维码建立连接,其实内部已经扫描到了外设,只是UI不显示,二维码中放的就是外设的
 
 
- 我们会扫描到周围所有的外设,但是一般我们只会连接我们自己公司的智能硬件,所以这里需要识别
 3.开始连接外设
4.连接外设成功,开始发现服务
- 一旦外设被蓝牙中心连接之后,既不能被其他中心扫描更不能被其他中心连接
 - iPhone的蓝牙可以最大同时连接8个外设左右:外设越多蓝牙越不稳定,容易断开连接 
- 一个女人找到老公,只会一心一意对她好,但是男人有钱就变坏,往往会有一房二房三房四房(外设),房越多越不稳定,容易离婚(断开连接)
 
 
5.发现到服务,开始搜索特征
- 一个外设会有很多服务,服务只是外设告诉你我有哪些功能,并不能直接发送数据
- 一般开发中,负责蓝牙芯片开发的硬件工程师会给你一份蓝牙协议文档,里面会告诉你什么服务提供哪些功能
- 服务
CBService通过UUID属性来区分 
 - 服务
 
 - 一般开发中,负责蓝牙芯片开发的硬件工程师会给你一份蓝牙协议文档,里面会告诉你什么服务提供哪些功能
 
- 一个外设会有很多服务,服务只是外设告诉你我有哪些功能,并不能直接发送数据
 6。搜索到服务的特征
- 一个服务会有很多个特征
- 每一个特征负责一个很小的功能点的读或者写
- 蓝牙芯片很小,内存也很少,所以单位都是二进制字节
byte,甚至是字节中的位bit 
 - 蓝牙芯片很小,内存也很少,所以单位都是二进制字节
 
 - 每一个特征负责一个很小的功能点的读或者写
 
- 一个服务会有很多个特征
 7.给特征发送数据
- 读取数据也是从特征中读取
 - 一般开发中,蓝牙协议文档会告诉你什么特征负责发送什么数据,并且数据格式也会告诉你 
- 常见的蓝牙协议数据格式有
byte/bit/ASCII码,最终都会转换二进制发送 
 - 常见的蓝牙协议数据格式有
 
1.3-蓝牙连接核心技术点介绍
1.蓝牙发送数据最终是通过特征
CBCharacteristic来发送的,我们扫描硬件(外设),发现外设的服务,最终的目的都是为了找到对应的特征2.蓝牙最核心的内容并不是代码,代码是固定的。最核心的是协议,一般蓝牙的数据协议都会加密,如果不加密的话任何人都可以连接你的硬件给你的硬件发送数据
- 遗憾的是,小米手环第一代居然没有加密,所以我们就写的demo就可以给小米手环发送数据
 
3.在蓝牙开发的时候,一定要注意蓝牙芯片的接收速率
- 比如说质量差的芯片,需要5ms才能读取一次数据,而我们APP2ms一次频繁发送数据,就会导致有些数据无法被硬件识别
- 这就叫数据的丢包
 
 
- 比如说质量差的芯片,需要5ms才能读取一次数据,而我们APP2ms一次频繁发送数据,就会导致有些数据无法被硬件识别
 
iOS蓝牙连接流程介绍-1的更多相关文章
- IOS蓝牙连接 初步简单封装使用
		
最近写一个蓝牙项目 初步实现一下蓝牙设备连接交互,后期继续完善.... 1.连接蓝牙相关操作 BlueToothManger.h // // BlueToothManger.h // SmartRob ...
 - iOS蓝牙传输数据演示-3
		
蓝牙传输数据演示 在上一小节中,我们一起开发了基于蓝牙通讯的工具类,该类中详细的实现蓝牙连接流程中的每一个环节 本小节我们就以给小米手环发送数据使其震动来演示我们工具类的用法 工具类本身具有通用性,属 ...
 - iOS关于蓝牙连接的简单介绍与使用
		
下面是两台iPhone6连接同一台蓝牙设备的结果: **成功连接**** peripheral: <CBPeripheral: 0x1700f4500, identifier = 50084F6 ...
 - iOS蓝牙BLE开发
		
蓝牙是一个标准的无线通讯协议,具有设备成本低.传输距离近和功耗低等特点,被广泛的应用在多种场合.蓝牙一般分为传统蓝牙和BLE两种模式:传统蓝牙可以传输音频等较大数据量,距离近.功耗相对大:而BLE则用 ...
 - ios 蓝牙相关
		
ios蓝牙开发项目实战 -(附小米手环实例) 前言 最近一直在开发关于蓝牙的功能,本来是不想写这一篇文章,因为网上关于ios蓝牙开发的文章实在太多了,成吨成吨的文章出现,但是很遗憾都只是一些皮 ...
 - 微信小程序-蓝牙连接
		
最近的项目需要使用小程序的蓝牙功能与硬件设备进行连接相互传送数据指令,联调过程中发现一些问题,于是想着记录下来,方便以后查看! 1.0一般使用蓝牙功能肯定是想连接某一个蓝牙设备,所以需要知道这个蓝牙设 ...
 - iOS蓝牙开发(二)蓝牙相关基础知识
		
原文链接: http://liuyanwei.jumppo.com/2015/07/17/ios-BLE-1.html iOS蓝牙开发(一)蓝牙相关基础知识: 蓝牙常见名称和缩写 MFI ====== ...
 - 基于swift语言iOS8的蓝牙连接(初步)
		
看过一些蓝牙App的事例,大体上对蓝牙的连接过程进行了了解.但是开始真正自己写一个小的BLE程序的时候就举步维艰了.那些模棱两可的概念在头脑中瞬间就蒸发了,所以还是决定从最基本的蓝牙连接过程进行.这里 ...
 - 20个可以帮你简化iOS app开发流程的工具
		
这里推荐20个可以帮你简化iOS app开发流程的工具.很多开发者都使用过这些工具,涉及原型和设计.编程.测试以及最后的营销,基本上涵盖了整个开发过程. 原型和设计 有了一个很好的创意后,你要做的不是 ...
 
随机推荐
- jvm调试
			
https://www.usenix.org/legacy/events/jvm01/full_papers/russell/russell_html/index.html
 - HDU1873 看病要排队 —— 优先队列(STL)
			
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1873 题解: 题目已经说出了解题方法:优先队列.但是之前没有学过优先队列,而且这题还是在现场赛做的.由 ...
 - python学习笔记:第二天(运算符)
			
Python3 运算符 注:以下部分示例源自于http://www.runoob.com/ 1.算术运算符 假设变量a为10,变量b为20: 运算符 描述 实例 + 加 - 两个对象相加 a + b ...
 - python multiprocessing多进程应用
			
multiprocessing包是Python中的多进程管理包,可以利用multiprocessing.Process对象来创建进程,Process对象拥有is_alive().join([timeo ...
 - 当数据库中的字段与javabean中对应的属性名不同
			
当数据库中的字段与javabean中对应的属性名不同时: 在查询语句中对不同的字段起别名,例如: 数据库中的字段名为last_name , javabean中为lastName则:select las ...
 - js联动
			
html: <!-- 省 --> <div class="col-sm-2"> <select name="p_id"> & ...
 - ViewerJS  一个在浏览器上查看 PDF 和电子表格的 JavaScript 库
			
Viewer.js简介 http://viewerjs.org/ 下载Viewer.js压缩包,解压后将ViewerJS文件夹放在网站根目录下 在浏览器地址栏中输入网址http://172.16.8. ...
 - Spring入门(四):使用Maven管理Spring项目
			
让我们先回顾下本系列的前3篇博客: Spring入门(一):创建Spring项目 Spring入门(二):自动化装配bean Spring入门(三):通过JavaConfig装配bean 1.为什么要 ...
 - hexo新建md文档推送到blog出错
			
1. git错误提示 $ hexo g INFO Start processing FATAL Something's wrong. Maybe you can find the solution h ...
 - Qt测试代码执行时间
			
////////////////////////////////////////////////////////////////// QString _GetIntervalTime(QTime&am ...