【HID基础知识】
蓝牙HID基础知识
一:定义
HID是Human Interface Device的缩写,由其名称可以了解HID设备是直接与人交互的设备,例如键盘、鼠标与游戏手柄等。
蓝牙HID 是属于蓝牙协议里面的一个profile, 不管在蓝牙2.0 2.1 3.0还是4.0,5.0的蓝牙中 ,都有HID , 而且在4.0以上协议中还多了一个HOG (HID OVER GATT)也就是低功耗HID,涉及的是蓝牙4.0以上的BLE(bluetooth low en)技术。
蓝牙HID是蓝牙的一种技术规范。
二:蓝牙HID规范
HID规范运行在蓝牙的L2CAP协议上,并基于GAP规范。 HID规范的基本要求有:
在一个微型网络中通常被推荐当作从设备(slave),但是也允许作为主设备(master)。
键盘必须支持认证和加密:只有当被HID主机要求时才激活工作模式;在认证和加密的基础上,也可以被其它HID主机选用;
作为从设备必须始终保持可连接性,例如PC在启动时寻呼键盘,或者键盘在有数据传输时寻呼PC机。
HID主机必须支持QoS。
HID主机必须支持低功耗工作模式,一般的HID终端设备(如鼠标、键盘、游戏杆)都是需求低功耗的;HID主机和HID终端设备都必须支持呼吸(sniff)工作模式和休眠(park)工作模式;保持工作模式对HID主机来说是必须的,而对HID终端设备来说是可选的。
HID终端设备只需要支持DM1格式的数据。
除了查询模式和寻呼模式,交互的寻呼扫描模式和查询扫描模式也是必需的。
对单功能设备而言并不需要支持SCO语音通道。
三 HID规范的导入模式
HID规范规定基本的键盘和指示功能使用固定格式的数据包,在HID主机端不需要HID剖析器(约占70kB)。允许用固定的PSM和辅助的设备类控制FHS数据包作为服务发现协议的定位,以及键盘与指示设备的连接。USB导入模式被保留用作最低层的终端应用。为了使得用户界面更加友好,要求系统遵从以下规定:
能够自动探测HID终端设备;
必须有硬件添加向导;
键盘必须是加密的,且安全;
在PC机导入时,HID终端设备暂时不能使用。
像鼠标、键盘等HID终端设备都是个人区域设备,它们有以下特征:
通常与HID主机都有一对一的关系;
不支持同时与一个以上的HID主机同时连接;
它们也许有一个以上的可能建立连接的HID主机。 当蓝牙HID终端设备与一个HID主机建立一对一的连接关系时,它就被称为虚拟电缆连接。这时HID终端设备与HID主机就建立了以下关系:
HID终端设备与HID主机捆绑。
如果连接断开,将会自动重新建立连接。
不会和另一HID主机相连,除非用户明确地去掉该虚拟电缆连接。
四: 蓝牙HID终端设备的解决方案,作为HID终端设备端有以下两种应用模型:
与蓝牙核心协议栈一起集成在蓝牙芯片内,以蓝牙硬件模块形式提供。 如需了解更多,可以联系飞易通团队;
作为一个软件协议栈,蓝牙HID代码也能够集成在客户指定的CPU中。 每个蓝牙HID终端设备(如键盘)都会有它自己的输入控制处理器,该控制器采集用户的输入信号,并转换成某种特定的代码传送给它的HID主机(如PC、PDA等)。由于输入处理器的资源比较少,因此通常情况下蓝牙HID软件都需要在某个特定的处理器上运行。输入控制器应按照USB格式通过串行连接发送扫描代码,当然,针对用户的特殊格式要求也是可以的。 如果输入控制器有比较大的资源空间(MIPS、RAM和闪存),蓝牙上层协议栈可以移植到输入控制器中运行,蓝牙芯片与输入控制器也可以以TTL电平串行连接。如果包含HID规范的协议栈运行在HID终端设备的输入处理器上,那么对系统硬件结构来说,只有一个带HCI接口的蓝牙芯片需要集成进客户的硬件。 由于蓝牙鼠标的应用非常简单,这时蓝牙HID代码可以和鼠标本身的应用程序一起集成在含有蓝牙核心协议栈的蓝牙芯片内。
五: 蓝牙HID主机端的解决方案:在HID主机侧,蓝牙代码有三种提供方式:
1- 提供完全的蓝牙HID主机驱动程序,使之成为一个标准的OEM产品;
2 以软件协议栈的形式帮助客户整合进他们的蓝牙PS/2接入点设备;
3 提供独立于操作系统的API,客户可以将它们整合进自己的驱动程序中。 对标准操作系统(如Windows、Linux)来说,已经有包括HID规范的完整的驱动程序可以提供。这时,除了用户用于表示包括公司及产品的名字、标志、图形和其它类似的图形界面,HID主机端不需要对HID主机的标准驱动作任何改动。这里的HID主机可以用蓝牙USB dongle或PC卡实现,HID主机侧的软件将包括上层堆栈和用户端应用程序。与HID的应用类似,USB dongle也还可用在类似DUN、FAX、FTP、LAN等应用中。因此,这种应用方式的优点是可以支持多个蓝牙规范,其缺点是它们的驱动程序依赖于操作系统。 由于蓝牙HID代码能够方便地移植到不同的操作系统,因此客户也可以用HID API开发适合自己的独特应用。例如,可以做成蓝牙HID接入点设备,所有软件作为固件运行在HID接入点设备上。这时,蓝牙HID接入点设备可以是智能化的USB dongle,或者是用户定义的其它设备。在这种应用方式下,HID主机侧不再需要安装驱动程序。HID接入点设备可被HID主机的操作系统认作标准USB或PS/2设备看待。 这种方案的优点是HID接入点设备与操作系统无关, 可用于支持在PS/2或USB 上的标准 HID的任何平台,不需在HID主机上安装任何东西。该方案的缺点是不支持多个蓝牙规范,因为所有运行于HID接入点设备的软件,只是为HID应用设计的。
六:问答
支持HID的蓝牙键盘是什么意思?
蓝牙技术中的人性化接口设备(HID)应用模式可以使人们无连线烦恼地控制他们的计算机、游戏操作杆、远程监控设备等。 蓝牙技术在成功地应用在耳机、免提设备和PC外设后,逐渐得到更广泛的应用,人们开始期望能够无连线烦恼地控制他们的计算机、游戏操作杆、遥控设备等。蓝牙SIG组织公布的HID规范正好迎合了这一需求。 与传统的只能和相互匹配的设备通信的无线键盘不同,蓝牙HID键盘能够作为一个标准键盘与任何蓝牙HID系统通信。蓝牙HID解决方案使得HID终端设备能够自动地探测和连接到需要的系统,如PDA、PC、机顶盒等。例如,一个蓝牙HID鼠标能够用来控制PC机,也可用于控制PDA,而不是像传统的模式中某个外设只能控制与它匹配的某种特定的主机。因此,蓝牙HID规范使得不同平台HID主机的输入和控制外设实现真正的互用性。
HID device设备能发起连接吗
可以的。
android手机与蓝牙HID设备连接的步骤:
1.开启蓝牙功能
2.手机搜索蓝牙HID设备
3.搜到蓝牙名称,配对HID设备
4.连接HID设备。
相关文章:
【HID基础知识】
蓝牙HID基础知识 一:定义 HID是Human Interface Device的缩写,由其名称可以了解HID设备是直接与人交互的设备,例如键盘、鼠标与游戏手柄等。 蓝牙HID 是属于蓝牙协议里面的一个profile, 不管在蓝牙2.0 2.1 3.0还是4.0,5.0的蓝牙中…...
工赋开发者社区 | 工业数字孪生:西门子工业网络与设备虚拟调试案例(TIA+MCD+SINETPLAN)
PART1案例背景及基本情况新生产系统的设计和实施通常是耗时且高成本的过程,完成设计、采购、安装后,在移交生产运行之前还需要一个阶段,即调试阶段。如果在开发过程中的任何地方出现了错误而没有被发现,那么每个开发阶段的错误成本…...
将闲置的Ipad作为Windows的副屏(Twomon SE)
目录一、前言二、方法第一步 安装软件第二步 使用步骤三、注意一、前言 在看网课的时候,总有种不得劲的感觉,来来回回的切换就很糟心~~无意间看见闲置的板砖(Ipad),计上心来-- _ – 期间也尝试过免费的软件ÿ…...
浮点数在内存中的存储——“C”
各位CSDN的uu们你们好呀,今天,小雅兰的内容是浮点数在内存中的存储,昨天我们已经写过了整型在内存中的存储,那么,浮点数在内存中是怎样存储的呢?现在,就让我们进入浮点数在内存中的存储的世界吧…...
华为OD机试 C++ 实现 - 租车骑绿岛
最近更新的博客 华为OD机试 - 入栈出栈(C++) | 附带编码思路 【2023】 华为OD机试 - 箱子之形摆放(C++) | 附带编码思路 【2023】 华为OD机试 - 简易内存池 2(C++) | 附带编码思路 【2023】 华为OD机试 - 第 N 个排列(C++) | 附带编码思路 【2023】 华为OD机试 - 考古…...
Spring Cloud Nacos源码讲解(三)- Nacos客户端实例注册源码分析
Nacos客户端实例注册源码分析 实例客户端注册入口 流程图: 实际上我们在真实的生产环境中,我们要让某一个服务注册到Nacos中,我们首先要引入一个依赖: <dependency><groupId>com.alibaba.cloud</groupId><…...
位运算(C/C++)
1. 基础知识 程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算就是直接对整数在内存中的二进制位进行操作。比如,and运算本来是一个逻辑运算符,但整数与整数之间也可以进行and运算。举个例子,6的二进制是110,11的二…...
哈希表题目:设计哈希映射
文章目录题目标题和出处难度题目描述要求示例数据范围前言解法一思路和算法代码复杂度分析解法二思路和算法代码复杂度分析题目 标题和出处 标题:设计哈希映射 出处:706. 设计哈希映射 难度 3 级 题目描述 要求 不使用任何内建的哈希表库设计一个…...
力扣解法汇总1238. 循环码排列
目录链接: 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms 原题链接: 力扣 描述: 给你两个整数 n 和 start。你的任务是返回任意 (0,1,2,,...,2^n-1) 的排列 p&…...
[数据结构]时间复杂度与空间复杂度
[数据结构]时间复杂度与空间复杂度 如何衡量一个算法的好坏 long long Fib(int N) {if(N < 3)return 1;return Fib(N-1) Fib(N-2); } 这是一个求斐波那契数列的函数,使用递归的方法求得,虽然代码看起来很简洁,但是简洁真的就好吗&#…...
Codeforces Round #848 (Div. 2)(A~D)
A. Flip Flop Sum给出一个只有1和-1的数组,修改一对相邻的数,将它们变为对应的相反数,修改完后数组的和最大是多少。思路:最优的情况是修改一对-1,其次是一个1一个-1,否则修改两个1。AC Code:#i…...
第十三届蓝桥杯Java B 组国赛 C 题——左移右移(AC)
目录1.左移右移1.题目描述2.输入格式3.输出格式4.样例输入5.样例输出6.数据范围6.原题链接2.解题思路3.Ac_code1.左移右移 1.题目描述 小蓝有一个长度为 NNN 的数组, 初始时从左到右依次是 1,2,3,…N1,2,3, \ldots N1,2,3,…N 。 之后小蓝对这个数组进行了 MMM 次操作, 每次…...
第14篇:系列二—Java抽象类/接口/枚举
目录 1、继承的定义(Inheritance) 2、继承的优点 2.1 易维护性 2.2 复用性 2.3 条理性...
深入浅出C++ ——哈希
文章目录前言一、unordered系列关联式容器1. unordered_map2. unordered_set二、哈希1. 哈希概念2. 哈希冲突3. 哈希函数4. 哈希冲突解决方法三、模拟实现unordered系列容器1. 哈希表的改造2. 模拟实现 unordered_set3. 模拟实现 unordered_map前言 在C11中,STL又提…...
Tina_Linux_系统裁剪_开发指南
文章目录Tina_Linux_系统裁剪_开发指南1 概述2 Tina系统裁剪简介2.1 boot0裁剪2.2 uboot裁剪2.3 内核裁剪2.3.1 删除不使用的功能2.3.2 删除不使用的驱动2.3.3 修改内核源代码2.3.3.1 size工具.2.3.3.2 ksize.py脚本2.3.3.3 nm命令2.3.3.4 kernel压缩方式.2.4 文件系统裁剪.2.4…...
算法刷题打卡第99天:至少在两个数组中出现的值
至少在两个数组中出现的值 难度:简单 给你三个整数数组 nums1、nums2 和 nums3 ,请你构造并返回一个 元素各不相同的 数组,且由 至少 在 两个 数组中出现的所有值组成。数组中的元素可以按 任意 顺序排列。 示例 1: 输入&…...
线程池面试题
1. 什么是线程池?为什么要使用线程池? 线程池是一种用于管理线程的技术,它可以在应用程序中重复使用一组线程来执行多个任务。线程池的优点包括提高应用程序的性能和可伸缩性、避免线程创建和销毁的开销、避免线程过多导致系统负担过重等。线…...
【学习笔记】NOIP爆零赛5
说实话是不想补题的。因为每一道题都贼难写,题解又通篇写着显然,然后自己天天搞竞赛又把注意力搞差了,调一道题又调半天,考试的题又难的要死 不会正解 ,部分分又写挂了 可能心态崩了就是从那场t1t1t1签到题考高精度数位…...
【数据结构】时间复杂度
🚀write in front🚀 📜所属专栏:初阶数据结构 🛰️博客主页:睿睿的博客主页 🛰️代码仓库:🎉VS2022_C语言仓库 🎡您的点赞、关注、收藏、评论,是对…...
vector的基本使用
目录 介绍: vector iterator 的使用 增删查改 增(push_back insert): 删(pop_back erase): swap: vector的容量和扩容: 排序(sort): 介绍ÿ…...
golang循环变量捕获问题
在 Go 语言中,当在循环中启动协程(goroutine)时,如果在协程闭包中直接引用循环变量,可能会遇到一个常见的陷阱 - 循环变量捕获问题。让我详细解释一下: 问题背景 看这个代码片段: fo…...
基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销,平衡网络负载,延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...
为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?
在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...
uniapp微信小程序视频实时流+pc端预览方案
方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度WebSocket图片帧定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐RTMP推流TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...
SpringCloudGateway 自定义局部过滤器
场景: 将所有请求转化为同一路径请求(方便穿网配置)在请求头内标识原来路径,然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...
Springboot社区养老保险系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,社区养老保险系统小程序被用户普遍使用,为方…...
10-Oracle 23 ai Vector Search 概述和参数
一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI,使用客户端或是内部自己搭建集成大模型的终端,加速与大型语言模型(LLM)的结合,同时使用检索增强生成(Retrieval Augmented Generation &#…...
安卓基础(aar)
重新设置java21的环境,临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的: MyApp/ ├── app/ …...
深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用
文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么?1.1.2 感知机的工作原理 1.2 感知机的简单应用:基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...
