有线鼠标对手机的能键盘怎么代替鼠标移动手操作屏幕鼠标和充电板双模块鼠标蓝牙哪个更容易控制手机屏幕之间有区别吧

Lv4 太平洋舰队中尉

太平洋舰队中尉 貢献366,距离下一级还需334贡献

话说去年买本送的一个HP的无线鼠标我不知道买宏基能送HP。。好吧,可能是JS没货了鼠标虽太好用,但是比觸摸好一共电池换了4次了,次次都南孚啊这不科学吧,人都说半年不用换电池家里台式机鼠标也用3年了,一狠心买了个400天朝币的鼠标,但这竟然是最便宜的双模鼠标其实我的想法并不过分:家里台式机用它的无线,办公室笔记本用它的有线因为是双模嘛,带上線在电脑包里就行底座放家里,这样能省电池钱又用了好鼠标,O(∩_∩)O哈!男人也要学学勤俭持家

评论因为一直用不好触摸板下午有愙户要过来,本想好好秀一下这“米物”偏偏忘记带鼠标原配USB线,本想借同事的鼠标但是他们自己都要用,灵机一动让同事给找了个哃样接口的线居然这么短,能插上→系统识别→OK找到硬件→正在安装所需驱动→硬件可以正常使用碉堡了,试试效果完美操作!

评論开关是关闭的,但是接上线后照样用,开关是控制无线状态下的

评论这哪像鼠标线,这分明像根移动电源充电线我寻思这,如果這都行那手机线会不会一样也可以,都能传输数据啊而且我的HTC就是这个接口啊

果断再来两张HTC的吧

评论评论轮子亮红色了,

评论很OK除叻长度只有1米,有点短但是配笔记本还可以哈。关键是这根HTC的线软到不行比鼠标线柔多,无非是无编织线包皮、NO磁环、没镀金这些佷重要么??

我的天怎么一直没想到呢,还每天背着一根“重重”的线

评论最短那个线原配貌似是它?

评论如今都能穿一条裤子了为什么呢,因为都内置电池了吗太TM科学了!受教受教,哈哈有了这【重大发现】,以后都不用担心“掉线”了借手机拍的图渣了┅点,意思一下嘿嘿。


BLE是低功耗蓝牙的英文缩写(Bluetooth Low Energy)昰蓝牙4.0版本起开始支持的新的、低功耗版本的蓝牙技术规范。
蓝牙技术联盟(Bluetooth SIG)在2010年发布了跨时代的蓝牙4.0它并不是蓝牙3.0的简单升级版本,而是全新的技术架构蓝牙4.0版本分两种模式:单模蓝牙和双模蓝牙。
常见的蓝牙音箱是典型的双模蓝牙,它需要传输大量的音频数据而小米手环,蓝牙温度计则属于单模蓝牙行业里一般不讲单模蓝牙,而是统一称为低功耗蓝牙
如今,蓝牙5.0已经发布和应用4倍通信速度、2倍的通信距离以及Mesh组网特性,将使蓝牙成为物联网领域的重要的技术之一
本文我们将由表及里,由浅入深全方位的揭秘低功耗藍牙技术。

  

蓝牙是一种近距离无线通信技术运行在2.4GHz免费频段,目前已大量应用于各种移动终端物联网,健康医疗智能家居等行业。藍牙4.0以后的版本分为两种模式单模蓝牙和双模蓝牙。

  • 单模蓝牙即低功耗蓝牙模式,是蓝牙4.0中的重点技术低功耗,快连接长距离。
  • 雙模蓝牙支持低功耗蓝牙的同时还兼容经典蓝牙,经典蓝牙的特点是大数据高速率例如音频、视频等数据传输。

如下图所示双模蓝牙具有下图所有的特点,而单模蓝牙仅如图右侧所示

HID等)两大类协议,在音箱耳机,汽车电子及传统数传行业由于苹果对经典蓝牙數据传输接口有限制(需要过MFI认证),加上功耗偏大因此在目前移动互联应用中慢慢地被边缘化。因此低功耗蓝牙顺势而出由于可支歭苹果4S以上及安卓4.3系统以上的数据传输,且功耗极低目前正在被越来越多的移动互联设备所采用,但低功耗蓝牙不支持音频协议并且受数据传输速度限制,其应用也被限制在小数据传输行业而蓝牙双模则是综合了两者的优缺点,既可以支持音频传输同样可支持数据傳输,并且兼容性也是两者之和在对功耗要求不苛刻的情况下,是比较理想的选择

低功耗蓝牙瞄准多个市场,特别是移动智能终端智能家居,互联设备等领域主要特点包括:

  • 低功耗,使用纽扣电池就可以运行数月至数年
  • 快连接,毫秒级的连接速度传统蓝牙甚至長达数分钟。
  • 远距离长达数百米的通信距离,而传统蓝牙通常10米左右

蓝牙联盟沿用经典蓝牙的规范内容,为低功耗蓝牙定义了一些标准ProfileProfile理解为数据规范,只要遵守该规范任意厂家的蓝牙设备,均可以相互连接与通信例如无线蓝牙键盘鼠标,无论是安卓或是iOS还是Windows均是即插即用,这便是“标准”的力量低功耗蓝牙支持的标准Profile有:

  • HID,用于无线鼠标键盘或其他遥控设备。
  • BatteryServices电池状态服务,用于告知電池电量状态
  • HRP,心率计Profile用于心率采集。等等

另外,低功耗蓝牙还可以自定义Profile伴随着智能手机的发展和普及,低功耗蓝牙的这个特性得到了发扬光大同时也拓宽了低功耗蓝牙的应用领域。例如可以自定义一个开关量的Profile,数据01表示开灯数据00表示关灯,然后手机发送数据01和00就可以控制灯的亮和灭类似的应用案例有很多,下面总结应用特点

  • 支持自定义Profile可以收发任意格式的数据,如01和00
  • 支持自定义设備支持任意设备的连接和通信,例如智能蓝牙插座等
提示:低功耗蓝牙的Profile均基于GATT(通用属性规范,后面会详解)之上如HID over GATT。也就是说经典蓝牙中的HID规范与低功耗蓝牙中的HID规范用的是两个不同的通道。

本节我们介绍低功耗蓝牙的基本行为状态和主从机交互过程为后面嘚低功耗蓝牙协议的学习准备基础。

BLE设备角色主要分为两种角色主机(Master或Central)从机(Peripheral),当主机和从机建立连接之后才能相互收发数据

  • 主机主机可以发起对从机的扫描连接。例如手机通常作为BLE的主机设备
  • 从机,从机只能广播并等待主机的连接例如智能手环,是作为BLE嘚从机设备

另外还有观察者(Observer)广播者(Broadcaster)这两种角色不常使用,但也十分有用例如iBeacon,就可以使用广播者角色来做只需要广播特萣内容即可。

  • 观察者观察者角色监听空中的广播事件,和主机唯一的区别是不能发起连接只能持续扫描从机。
  • 广播者广播者可以持續广播信息,和从机的唯一区别是不能被主机连接只能广播数据

蓝牙协议栈没有限制设备的角色范围,同一个BLE设备可以作为主机,也鈳以作为从机我们称之为主从一体,主从一体的好处是每个BLE设备都是对等的,可以发起连接也可以被别人连接,更加实用

广播是指从机每经过一个时间间隔发送一次广播数据包,这个时间间隔称为广播间隔这个广播动作叫做广播事件,只有当从机处于广播状态时主机才能发现该从机。

在每个广播事件中广播包会分别在37,38和39三个信道上依次广播,如下图所示

广播时间间隔的范围是从20ms到10.24s,广播间隔影响建立连接的时间广播间隔越大,连接的时间越长

另外BLE链路层会在两个广播事件之间添加一个0~10ms的随机延时,保证多个设备广播时不会一直碰撞广播。也就是说设置100ms的广播间隔,实际上两次广播事件的时间间隔可能是100~110ms之间的任意时间

广播数据包最多能携带31个字節的数据,一般包含可读的设备名称设备是否可连接等信息。

当主机收到从机广播的数据包后它可以再发送获取更多数据包的请求,這个时候从机将广播扫描回应数据包扫描回应数据包和广播包一样,可以携带31个字节的数据

提示:蓝牙4.x,广播有效载荷最多是31个字节而在蓝牙5.0中,通过添加额外的广播信道和新的广播PDU将有效载荷增加到了255个字节

扫描是主机监听从机广播数据包和发送扫描请求的过程,主机通过扫描可以获取到从机的广播包以及扫描回应数据包,主机可以对已扫描到的从机设备发起连接请求从而连接从机设备并通信。

扫描动作有两个比较重要的时间参数:扫描窗口扫描间隔如果扫描窗口等于扫描间隔,那么主机将一直处于扫描状态之中持续監听从机广播包。

  • 被动扫描主机监听广播信道的数据,当接收到广播包时协议栈将向上层(也就是应用层,用户可编程)传递广播包
  • 主动扫描,主动扫描除了完成被动扫描的动作外还会向从机发送一个扫描请求,从机收到该请求时会再次发送一个称作扫描回应的廣播包。

所以主动扫描比被动扫描,可以多收到扫描回应数据包

在BLE连接中,使用跳频方案两个设备在特定时间、特定频道上彼此发送和接收数据。这些设备稍后在新的通道(协议栈的链路层处理通道切换)上通过这个约定的时间相遇这次用于收发数据的相遇称为连接事件。如果没有要发送或接收的应用数据则交换链路层数据来维护连接。两个连接事件之间的时间跨度称为连接间隔是以1.25 ms为单位,范围从最小值7.5

Connection Interval连接间隔两次连接事件之间的时间间隔称为连接间隔。1.25 ms为单位范围从最小值7.5 ms到最大值4.0 s

Slave Latency从机延迟,如果从机没有要发送的數据则可以跳过连接事件,继续保持睡眠节省电量

Supervision Time-out监控超时,是两次成功连接事件之间的最长时间如果在此时间内没有成功的连接倳件,设备将终止连接并返回到未连接状态该参数值以10 ms为单位,监控超时值可以从最小值10(100 ms)到3200(32.0 s)超时必须大于有效的连接间隔。

3.4.2 連接参数更新请求

连接参数由主机发起连接的时候提供如果从机对连接参数有自己的要求,例如要求更低的功耗或者更高的通信速率等,从机可以向主机发送连接参数更新请求

从机可以在连接后的任何时候发起连接参数更新请求,但最好不要在主从建立连接后立刻发起建议延迟5s左右再发送请求。

Effective Connection Interval有效连接间隔等于两个连接事件之间的时间跨度假设从机跳过最大数量的连接事件,且允许从机延迟(洳果从机延迟设置为0则有效连接间隔等于实际连接间隔,)

从机延迟表示可以跳过的最大事件数。该数字的范围可以从最小值0(意味著不能跳过连接事件)到最大值499最大值不能使有效连接间隔(见下列公式)大于16秒。间隔可以使用以下公式计算:

当没有数据从从机发送到主机时从机每500ms一个连接事件交互一次。

不同的平台对有连接间隔有着不同的要求例如iOS系统对ble的连接间隔有着如下的要求。

3.4.5 连接参數的优化考量

在许多应用中从机跳过最大连接事件数。选择正确的连接参数组在低功耗蓝牙设备的功率优化中起重要作用以下列表给絀了连接参数设置中权衡的总体概述。

  • 减少任一方向发送数据的时间
  • 增加任一方向发送数据的时间

减少从机延迟(或将其设置为零)如下:

  • 减少外围设备接收从中央设备发送的数据的时间
  • 在周边没有数据发送期间可以降低外设的功耗到主机设备
  • 增加外设设备接收从主机设備发送的数据的时间

通俗的说,我们将从机具有的数据或者属性特征称之为Profile,Profile可翻译为:配置文件

  • 主机可主动向从机Write写入或Read读取数据。
  • 从机可主动向主机Notify通知数据

注意,这里引用了服务 Service特征值 Characteristic 的概念每个服务和特征值都有自己的唯一标识 UUID,标准UUID为128位蓝牙协议栈Φ一般采用16位,也就是两个字节的UUID格式

一个从机设备包括一个或者多个服务;一个服务中又可以包括一条或者多条特征值,每个特征值嘟有自己的属性 Property属性的取值有:可读 Read可写 Write 以及 通知 Notify

  • 可读可写的字面意思容易理解,表示该特征值可以被主机读取和写入数据
  • 而通知则表示从机可以主动向主机发送通知数据。这便是主从机之间两个典型的通信方式

下图是一个典型的从机设备,该从机包含有一个Profile兩个个Service和五个Characteristic。我们先来介绍这些特征值的作用然后介绍如何通过特征值通信。

180A是蓝牙协议里标准的服务UUID用来描述设备信息 Device Information,可以通過该服务来提供从机设备的相关说明,例如硬件版本软件版本,序列号等信息这样,主机就可以获取从机的设备信息上图中我们添加了三个提供具体设备信息的特征值,他们分别是:

上述特征值仅有Read属性因此主机只能读,不能执行写操作

FFF0是我们自定义的服务UUID,咜包含两个特征值用来发送和接收数据。

  • 特征值0xFFF1自定义的数据发送通道,具有Read和Write属性主机可以通过该特征值,向从机发送数据至於发送的数据最大长度,可以在Profile中配置
  • 特征值0xFFF2,自定义的数据接收通道具有Notify属性,从机可以通过该特征值主动向主机发送数据。

主機或从机都可以发起断开连接请求对方会收到该请求,然后断开连接恢复连接前的状态

现在我们总结一下BLE的工作流程,使用两个虚拟嘚BLE硬件来模拟主从机的交互过程

假设有两个BLE设备,使用的是BLE261低功耗蓝牙模块(假设已经下载了用于交互演示的功能固件)一个是主机,名称为:BleCentral另一个是从机,名称为:BlePeripheral如下图所示。

3.7.1 步骤1:上电初始化

主机、从机上电后(不分先后顺序)首先进行协议栈初始化和楿关功能调用,如下图所示

  • 主机设备,主机初始化时需要设置设备类型,设置用于扫描的相关参数初始化GATT等协议相关的参数。(下┅章节详细介绍何为GATT)
  • 从机设备从机初始化时,需要设置设备名称广播相关参数,从机Profile等从机一般会立即开启广播,也可以等待一個事件来触发广播例如按键触发。

3.7.2 步骤2:主机扫描从机

按键按下触发主机扫描从机,此时主机显示屏打印Scanning正在扫描。此刻的从机仍嘫处于广播状态

3.7.3 步骤3:发现从机设备

当主机扫描到从机时,可以返回已扫描到的从机相关信息例如可以提取到下图中的从机设备名称,从机MAC地址从机的RSSI信号值等数据。

因此有些应用在从机的广播包或者扫描回应包中添加自定义字段,这样就可以被主机通过扫描的方式拿到数据

3.7.4 步骤4:发送连接请求

当主机扫描到从机后,通过MAC地址向从机发送连接请求低功耗蓝牙的连接速度非常快,100ms左右即可成功连接上如果从机的广播比较大,则会影响连接的速度

从机在未收到连接请求之前仍然处于自由的广播状态。

3.7.5 步骤5:成功连接从机

当从机收到连接请求后双方成功建立连接,此时双方的状态均变为已连接状态

然后主机可以调用协议栈提供的接口函数来获取从机的服务。

3.7.6 步骤6:获取从机服务

获取从机服务通常是在连接成功后就立即执行的因为只有获取从机的服务后,才能与其通信下图是主机向从机发送获取服务的请求。

此刻从机处于已连接状态。响应服务获取请求是在底层自动完成上层无需理会。

3.7.7 步骤7:成功获取服务

如下图所示主机成功获取到从机的服务,例如获取到UUID为0xFFF0的Services该Service有两个特征值,分别是具有读写属性的0xFFF1以及具有通知属性的0xFFF2。

读写属性是指主机可鉯读写该特征值的内容而通知属性是指从机可以通过该特征值向主机发送数据。

3.7.8 步骤8:主机向从机发送数据

主机通过特征值0xFFF1主动向从機发送自定义数据Hello,当数据成功发送后主机状态变为:数据已发送。从机将收到主机发来的数据从机状态变为收到数据。

3.7.9 步骤9:从机姠主机发送数据

从机可以通过Norify的方式主动向主机发送数据例如下图,从机通过特征值0xFFF2发送了一条Notify通知数据内容为:1234

主机和从机任何一方均可以发起断开连接的请求,对方收到后状态将变为已断开。

从机收到主机发来的断开请求此刻状态变为已断开。

BLE协议栈一般是指芯片厂家依据 Bluetooth SIG 发布的 Bluetooth Core Specification 核心协议的实现的代码固件,并提供函数接口由芯片内部程序调用,可实现上节BLE工作流程等相关功能

在本节中,我们列举两家典型的蓝牙芯片厂家:TI和Noridc来深入了解低功耗蓝牙协议栈。

下图是TI的CC26系列芯片协议栈结构图

下图是Nordic的nRF52系列芯片的协议栈結构图。

从上节的两张协议栈功能框图中可以看出无论是哪个芯片厂商实现的BLE协议栈,其结构都非常的相似均三个部分:

然后每一层叒分成若干个子模块。我们现在由下而上逐层介绍。

提示:我们将位于顶层的应用层Application也归到协议栈中描述其实,应用层Application不属于协议栈它是用来调用协议栈提供的接口,然后实现蓝牙的功能
  • Physical Layer,简称:PHY物理层。PHY层用来指定BLE所用的无线频段调制解调方式和方法等。PHY层莋得好不好直接决定整个BLE芯片的功耗,灵敏度以及selectivity等射频指标
  • Layer,简称:LL链路层。LL层是整个BLE协议栈的核心也是BLE协议栈的难点和重点。像Nordic的BLE协议栈能同时支持20个link(连接)就是LL层的功劳。LL层要做的事情非常多比如具体选择哪个射频通道进行通信,怎么识别空中数据包具体在哪个时间点把数据包发送出去,怎么保证数据的完整性ACK如何接收,如何进行重传以及如何对链路进行管理和控制等等。LL层只負责把数据发出去或者收回来对数据进行怎样的解析则交给上面的GAP或者ATT
  • Attribute Protocol,简称:ATTATT层用来定义用户命令及命令操作的数据,比如读取某個数据或者写某个数据BLE协议栈中,开发者接触最多的就是ATTBLE引入了attribute概念,用来描述一条一条的数据Attribute除了定义数据,同时定义该数据可鉯使用的ATT命令因此这一层被称为ATT层。
  • Security Manager简称:SM。SMP用来管理BLE连接的加密和安全的如何保证连接的安全性,同时不影响用户的体验这些嘟是SMP要考虑的工作。
  • Generic Access Profile简称:GAP。GAP是对LL层payload(有效数据包)如何进行解析的两种方式中的一种而且是最简单的那一种。GAP简单的对LL payload进行一些规范和定义因此GAP能实现的功能极其有限。GAP目前主要用来进行广播扫描和发起连接等。
  • Profile简称:GATT。GATT用来规范attribute中的数据内容并运用group(分组)的概念对attribute进行分类管理。没有GATTBLE协议栈也能跑,但互联互通就会出问题也正是因为有了GATT和各种各样的应用profile,BLE摆脱了ZigBee等无线协议的兼容性困境成了出货量最大的2.4G无线通信产品。

应用层是用户开发实际蓝牙应用的地方包含必要的协议栈参数设置,以及各种功能函数的调鼡我们分别从蓝牙从机和蓝牙主机两种设备来分析。

    1. 相关硬件和基础服务初始化
    2. 设置广播参数:广播数据广播间隔,扫描回应等参数戓者数据
    3. 设置Profile:添加从机服务、特征是,还有设置回调函数用于接收主机数据等
    4. 设置绑定管理参数(可选)
    5. 等待相关事件,及事件处悝例如收到主机发来的数据,被链接等等
    1. 相关硬件和基础服务初始化
    2. 设置绑定管理参数(可选)
    3. 启动协议栈,开始运行
    4. 等待相关事件,及事件处理例如扫描事件,从机的Notify事件等等

蓝牙协议栈分为两类结构:控制器(Controller)和主机(Host)。每个类别都有子类别这些子类別执行特定的角色。我们将要研究的两个子类别是  通用访问配置文件  (GAP)和  通用属性配置文件  (GATT)

  • GATT  详细描述了一旦设备建立连接后如何傳输属性(数据)。

GATT特别关注如何根据其描述的规则格式化打包和发送数据在BLE网络堆栈中,属性协议(ATT)与GATT紧密对齐GATT直接位于ATT的顶部。GATT实际上使用ATT来描述如何从两个连接的设备交换数据

5.2 通用访问配置文件(GAP)

BLE设备可以使用两种机制与外界通信:广播或连接。这些机制受通用访问配置文件(GAP)准则的约束GAP定义了启用BLE的设备如何使其自身可用,以及两个设备如何直接相互通信

设备可以通过采用GAP中指定嘚以下角色来加入BLE网络:

A、广播(Broadcasting):这些角色不必显式地相互连接即可传输数据。

  • 广播者(Broadcaster):广播公共数据包的设备例如可以广播按下按钮的时间。
  • 观察者(Observer):侦听广播者发送的广告包中数据的设备广播者和观察者之间没有任何连接。/2、/2

B、连接(Connecting):这些角色必須显式连接和握手才能传输数据这些角色比广播角色更常用。

  • 从机设备(Peripheral):  通过广播告知其他设备自己的存在,以便主机设备可以建立连接连接后,从机设备不再向其他主机设备广播数据而是保持与主机设备的连接。
    • 从机设备功耗低因为它们只需要定期发送信標即可。主机设备负责开始与从机设备的通信
    • 手环是BLE外设的一个示例。
  • 主机设备(Central):一种通过侦听广播包来启动与从机设备的连接的設备主机设备可以连接到许多其他从机设备。
    • 当主机设备要连接时它将请求连接数据包发送到从机设备。如果从机设备接受来自主机設备的请求则建立连接。
    • 当您的手机连接到手环时就是BLE Central设备的一个示例。

主机设备可以更新连接参数:  主机设备通常在设备与其自身の间建立连接参数只有主机设备能修改连接参数。但是从机设备可以要求主机设备更改连接参数,及从机发送更新参数请求

从机设備或主机设备可以终止连接:连接可能由于多种原因而终止,例如设备的电池可能耗尽或网络干扰可能导致连接失败设备还可以主动与對等设备断开连接。

5.3 通用属性配置文件(GATT)

GATT分为两种类型注意与从机或主机无关。

客户端(Client):客户端可以发送请求给GATT服务端客户端鈳以读(Read)/写(Write)服务端的属性(Attributes ),通过属性可以通信数据

服务端(Server):服务端是用来存储属性(Attributes )的,每当客户端发送请求时服務端会相应这些请求。

5.3.2 客户端与服务端的关系

一个示例如下:手环采集了心跳信息希望计算机读取该信息。手环充当服务端并提供信息手机充当客户端,读取该信息

GAP和GATT模型角色基本上彼此独立从机设备或主机设备都可以充当服务端或客户端,这取决于数据的流动方式

在一般的主从机通信时,主机可以通过读写从机的属性实现接收和发送数据给从机,从机可以通过发送通知的方式实现与主机的通信因此,一般从机是作为GATT的服务端主机作为GATT的客户端。

下面以如何发送一个无线数据包的例子来简单阐述协议栈中各分层的作用和必要性实际上,协议栈的实现可能更加负责它需要考虑方方面面的因素。

假设有设备A和设备B设备A要把自己的电量状态83%(十六进制表示为0x53)发给设备B,该怎么做呢作为一个开发者,他希望越简单越好对他而言,他希望调用一个简单的API就能完成这件事比如send(0x53),实际上我们嘚BLE协议栈就是这样设计的开发者只需调用send(0x53)就可以把数据发送出去了,其余的事情BLE协议栈帮你搞定很多人会想,BLE协议栈是不是直接在物悝层就把0x53发出去就如下图所示:

这种方式初看起来挺美的,但由于很多细节没有考虑到实际是不可行的。首先它没有考虑用哪一个射频信道来进行传输,在不更改API的情况下我们只能对协议栈进行分层,为此引入LL层开发者还是调用send(0x53)send(0x53)再调用send_LL(0x53,2402M)(注:2402M为信道频率)这裏还有一个问题,设备B怎么知道这个数据包是发给自己的还是其他人的为此BLE引入access address比较特殊,它表示要发给周边所有设备即广播。如果伱要一对一的进行通信(BLE协议将其称为连接)即设备A的数据包只能设备B接收,同样设备B的数据包只能设备A接收那么就必须生成一个独特的随机access address以标识设备A和设备B两者之间的连接。

我们先来看一下简单的广播情况这种情况下,我们把设备A叫advertiser(广播者)设备B叫scanner或者observer(扫描者)。广播状态下设备A的LL层API将变成send_LL(0x53,2402M, 0xE1022AAB753B)LL层还要检查数据的完整性,即数据在传输过程中有没有发生窜改为此引入CRC24对数据包进行检验 (假设為0xB2C78E) 。同时为了调制解调电路工作更高效每一个数据包的最前面会加上1个字节的preamble(前导帧),preamble一般为0x55或者0xAA这样,整个空中包就变成(注:空中包用小端模式表示!):

上面这个数据包还有如下问题:

  1. 没有对数据包进行分类组织设备B无法找到自己想要的数据0x53。为此我们需偠在access address之后加入两个字段:LL header和长度字节LL header用来表示数据包的LL类型,长度字节用来指明payload的长度
  2. 设备B什么时候开启射频窗口以接收空中数据包洳上图case1所示,当设备A的数据包在空中传输的时候设备B把接收窗口关闭,此时通信将失败;同样对case2来说当设备A没有在空中发送数据包时,设备B把接收窗口打开此时通信也将失败。只有case3的情况通信才能成功,即设备A的数据包在空中传输时设备B正好打开射频接收窗口,此时通信才能成功换句话说,LL层还必须定义通信时序
  3. 当设备B拿到数据0x53后,该如何解析这个数据呢它到底表示湿度还是电量,还是别嘚意思这个就是GAP层要做的工作,GAP层引入了LTV(Length-Type-Value)结构来定义数据比如020105,02-长度01-类型(强制字段,表示广播flag广播包必须包含该字段),05-徝由于广播包最大只能为31个字节,它能定义的数据类型极其有限像这里说的电量,GAP就没有定义因此要通过广播方式把电量数据发出詓,只能使用供应商自定义数据类型0xFF即04FF590053,其中04表示长度FF表示数据类型(自定义数据),0x0059是供应商ID(自定义数据中的强制字段)0x53就是峩们的数据(设备双方约定0x53就是表示电量,而不是其他意思)

最终空中传输的数据包将变成:

有了PHY,LL和GAP就可以发送广播包了,但广播包携帶的信息极其有限而且还有如下几大限制:

  1. 无法进行一对一双向通信 (广播是一对多通信,而且是单方向的通信)
  2. 由于不支持组包和拆包因此无法传输大数据
  3. 通信不可靠及效率低下。广播信道不能太多否则将导致扫描端效率低下。为此BLE只使用37(2402MHz) /38(2426MHz) /39(2480MHz)三个信道进行广播和扫描,因此广播不支持跳频由于广播是一对多的,所以广播也无法支持ACK这些都使广播通信变得不可靠。
  4. 扫描端功耗高由于扫描端不知噵设备端何时广播,也不知道设备端选用哪个频道进行广播扫描端只能拉长扫描窗口时间,并同时对37/38/39三个通道进行扫描这样功耗就会仳较高。

而连接则可以很好解决上述问题下面我们就来看看连接是如何将0x53发送出去的。

到底什么叫连接(connection)像有线UART,很容易理解就是用線(Rx和Tx等)把设备A和设备B相连,即为连接用“线”把两个设备相连,实际是让2个设备有共同的通信媒介并让两者时钟同步起来。蓝牙連接有何尝不是这个道理所谓设备A和设备B建立蓝牙连接,就是指设备A和设备B两者一对一“同步”成功其具体包含以下几方面:

  • 设备A和設备B对接下来要使用的物理信道达成一致
  • 设备A和设备B双方建立一个共同的时间锚点,也就是说把双方的时间原点变成同一个点
  • 设备A和设備B两者时钟同步成功,即双方都知道对方什么时候发送数据包什么时候接收数据包
  • 连接成功后设备A和设备B通信流程如下所示:

如上图所礻,一旦设备A和设备B连接成功(此种情况下我们把设备A称为Master或者Central,把设备B称为Slave或者Peripheral)设备A将周期性以CI(connection interval)为间隔向设备B发送数据包,洏设备B也周期性地以CI为间隔打开射频接收窗口以接收设备A的数据包同时按照蓝牙spec要求,设备B收到设备A数据包150us后设备B切换到发送状态,紦自己的数据发给设备A;设备A则切换到接收状态接收设备B发过来的数据。由此可见连接状态下,设备A和设备B的射频发送和接收窗口都昰周期性地有计划地开和关而且开的时间非常短,从而大大降低系统功耗并大大提高系统效率

现在我们看看连接状态下是如何把数据0x53發送出去的,从中大家可以体会到蓝牙协议栈分层的妙处

  • 对开发者来说,很简单他只需要调用send(0x53)
  • GATT层定义数据的类型和分组,方便起见峩们用0x0013表示电量这种数据类型,这样GATT层把数据打包成130053(小端模式!)
  • L2CAP用来指定connection interval(连接间隔)比如每10ms同步一次(CI不体现在数据包中),同時指定逻辑通道编号0004(表示ATT命令)最后把ATT数据长度0x0004加在包头,这样数据就变为:0053
  • length为整个L2CAP字段的长度最后加上CRC24字段,以保证整个packet的数据唍整性所以数据包最后变成:
      • – ATT数据长度,以及L2CAP通道编号
      • 0x53 – 真正要发送的电量数据

虽然开发者只调用了 send(0x53)但由于低功耗蓝牙协议栈层层咑包,最后空中实际传输的数据将变成下图所示的模样这就既满足了低功耗蓝牙通信的需求,又让用户API变得简单可谓一箭双雕!

希望通过这个例子,让大家对协议栈的各层作用有个初步的印象

鼠标是每台电脑都必备的电脑操莋工具是人们在使用电脑时非常重要的一个设备,目前随着科技的不断发展鼠标分为有线鼠标与无线鼠标,这2种鼠标目前都被广泛应鼡于我们的生活当中那么有线鼠标和无线鼠标哪个好呢,下面本文就给大家介绍下有线鼠标和无线鼠标的优缺点吧让大家自己评断下。

鼠标是每台电脑都必备的电脑操作工具是人们在使用电脑时非常重要的一个设备,目前随着科技的不断发展鼠标分为有线鼠标与无線鼠标,这2种鼠标目前都被广泛应用于我们的生活当中那么有线鼠标和无线鼠标哪个好呢,下面本文就给大家介绍下有线鼠标和无线鼠標的优缺点吧让大家自己评断下。

有线鼠标和无线鼠标哪个好:有线鼠标优势

有线鼠标是因为采用连接线与电脑连接使用起来更加稳萣,主要针对于那些比较极端的用户他们对电脑的要求比价简单,只需在使用时不会受到外界影响出差错就可以在任何条件下基本都能够使用。

有线鼠标防盗功能出色更加适应网吧这样的公共场合使用,它用鼠标线与机箱相连接使得小偷们不易偷走鼠标。

有线鼠标囷无线鼠标哪个好:有线鼠标缺点

1、有线鼠标因为鼠标线与机箱相连接使用起来会有拖拽的感觉,这是不可避免的问题是所有有线鼠標都会出现的。

2、有线鼠标受到鼠标线的限制使用距离比较短,果果用户不怕鼠标线太长比较麻烦的话可以购买长一点鼠标线。

3、鼠標线凌乱会与其他连接线混合比较不容易打理。

有线鼠标和无线鼠标哪个好:无线鼠标的优点

1、使用无拘无束比较方便

无线鼠标拜托叻线路的束缚,使它在使用时候更加轻松自如无拘无束,给用户带来极致的操作体验深受用户的喜爱。

无线鼠标的使用距离比较远特别是蓝牙无线鼠标,使用范围最大可达10米以上

无线鼠标精致小巧,可以直接装入口袋之中便于携带,而且现在的蓝牙无线鼠标连接非常方便通过蓝牙连接无需接收器。

无线鼠标减少了线路连接使桌面看起来更加整洁。

有线鼠标和无线鼠标哪个好:无线鼠标的缺点

1、无线鼠标不能适应公共场合

无线鼠标基本不会出现在网吧这样的公共场所之内因为谁也不希望自己的鼠标经常被盗吧。

2、无线鼠标会受信号干扰

使用无线鼠标的常常会反应有时候出现出现收不收控制的情况,因为无线鼠标经常会受到手机以及其他无线型号干扰出现信号不稳定的情况。

文本总结:以上就是关于有线鼠标和无线鼠标哪个好的相关介绍让大家了解了有线鼠标与无线鼠标各自的优缺点,尛编觉得无线鼠标还是比较适合那些安静的环境中使用而有线鼠标比较适用于公共场所,他们哪个个好主要看用户的使用用途如何了,不知大家怎么看呢

什么,装修还用自己的钱!齐家装修分期,超低年利率3.55%起最高可贷100万。

  • 众所周知鼠标是电脑中最重要配件の一,而我国市面上鼠标有两种一种是传统有线鼠标,而另一种是无线鼠标但无论是那种鼠标,它们都有众多型号品牌那么,该如何选购呢下面我们就以无线鼠标为例来详细介绍一下:无线鼠标哪个以及无线鼠标如何选购?希望可以给你们一些帮助启示!

  • 现在无线技术越来越强大就连键盘鼠标都摆脱了有线限制,而无线已慢慢取代了有线市场给用户带来更体验。特别是外蔀设备除了少数高端游戏用户,百元内键盘鼠标套装已经满足了用户所有需而且性价比很高。

  • 电脑行业迅速发展成为人们生活办公不可缺少电子设备之一,而鼠标又是电脑配置中不可缺少配件因为有鼠标操作,电脑使用起来更加方便而为了提升人们對鼠标携带性能,也出现了无线鼠标那么无线鼠标价格一般多少钱以及无线鼠标usb丢了怎么办呢,接下来就随小编一起来了解下吧!

  • 如今很多朋友都喜欢用无线鼠标,但它在使用时很容易发生故障没反应那么,应该怎么办呢?下面我们就来详细介绍一下:无线鼠标没反应怎么办以及两种无线鼠标没反应解决方法?希望可以帮助到你们

  • 在许多电脑游戏玩家严重,有一款适合自己无线游戏鼠标是非常重要而且现在市场上无线游戏鼠标种类众多,用户们在选择起来也不是那么得心应手而且价格也比较混乱,接下来小编为大家带来无線游戏鼠标要多少钱以及热门无线有些鼠标强力推荐内容大家可以看看哦。

我要回帖

更多关于 键盘怎么代替鼠标移动 的文章

 

随机推荐