当前位置: 首页 > news >正文

建网站哪个好网站免费申请空间

建网站哪个好,网站免费申请空间,宁波做网站优化哪家好,哪个网站做平面能兼职搞定蓝牙-第六篇#xff08;HID#xff09; ble与HIDHOGPGAPP与HID ESP32程序分析 ble与HID HOGP 我们发现#xff0c;电脑连接了蓝牙键盘就可以直接使用了#xff0c;不需要配置任何东西#xff0c;那么#xff0c;这两者是怎么通讯的呢。我们使用的电脑windows系统内… 搞定蓝牙-第六篇HID ble与HIDHOGPGAPP与HID ESP32程序分析 ble与HID HOGP 我们发现电脑连接了蓝牙键盘就可以直接使用了不需要配置任何东西那么这两者是怎么通讯的呢。我们使用的电脑windows系统内置一段程序来自动识别鼠标、键盘的数据 windows系统的这个程序和鼠标、键盘内部的程序的需要使用同一套规则两者才能正常通讯。除了鼠标、键盘还有游戏手柄、多媒体控制器等等都可以使用这套规则这类设备叫做HIDHuman Interface Device。在ble中我们称这套规则为HOGP(HID Over GATT Profile)。 GAPP与HID HOGP的层次比GAP、GATT协议要高一层也就是HOGP是基于这两个协议的也就是说要实现HOGP首先需要实现GAP和GATT。 之前的内容说到ble设备的通讯是基于GATT的通讯的内容最小单元是Attribute所以HOGP也不例外而GATT的核心是属性表程序中要做的就是维护属性表。我们来看看HOGP的属性表是怎么样的。 我们用电脑连接有些键盘、鼠标会看到能显示电池电量这个也是通过GATT实现的也就是一个普通的键盘中的ble的GATT实现了HID服务和电池服务。从上图也能看出来确实如此。 首先了解电池服务这个比较简单就三个属性特征值、客户端特性配置CCC和特征展示格式。前两个在GATT那一章说过了特征值就是实际要传输的电池电量数据而这里的特征展示格式就是表示这个电池电量数据以什么样的方式来传输是百分百还是其他、是毫安还是安、是带小数点还是放大了十倍。 HID服务就比较复杂了包含了五个属性。HID信息用于显示这个HID的一些基础信息它的值就是由这些部分组成版本号、硬件本地化一个本地ID如果有多个HID服务需要设置不同ID和是否支持远程唤醒。 协议模式我们发现windows在启动的时候可以输入键盘的键值来进入bios模式但是在进入bios模式的时候还没初始化HID的程序呢那么键盘是怎么和他正常通讯的呢。所以HID设备需要支持两种模式一种用于在系统HID程序初始化之前使用更加底层的协议来通讯另外一种在系统初始化了HID程序之后也就是配置启动模式或报告模式。 控制点一般蓝牙键盘是需要低功耗设计的HID的保持连接是需要一直传输数据的而射频是很耗电的所以在系统注销、长时间未检测到用户使用这个设备的时候键盘应该能自动休眠这个时候可以通过控制点这个属性通知键盘进入低功耗模式了主动关闭HID连接等。 报告地图这个东西在USB HID那边叫做报告描述符。我们使用的键盘可能是87键、104键、108键还有一些宏键盘是几个按键的那么HOGP是怎么支持这些所有这些不同类型的键盘的呢所以键盘需要告诉系统我有多少个键、我有多少个LED、我的键值从哪些到哪些等等。这些内容通过报告地图固定在键盘的芯片里面了。举个栗子。 //表示用途页为通用桌面设备 0x05, 0x01, // USAGE_PAGE (Generic Desktop) //表示用途为键盘 0x09, 0x06, // USAGE (Keyboard) //表示应用集合必须要以END_COLLECTION来结束它见最后的END_COLLECTION 0xa1, 0x01, // COLLECTION (Application) //表示用途页为按键 0x05, 0x07, // USAGE_PAGE (Keyboard) //用途最小值这里为左ctrl键 0x19, 0xe0, // USAGE_MINIMUM (Keyboard LeftControl) //用途最大值这里为右GUI键即window键 0x29, 0xe7, // USAGE_MAXIMUM (Keyboard Right GUI) //逻辑最小值为0 0x15, 0x00, // LOGICAL_MINIMUM (0) //逻辑最大值为1 0x25, 0x01, // LOGICAL_MAXIMUM (1) //报告大小即这个字段的宽度为1bit所以前面的逻辑最小值为0逻辑最大值为1 0x75, 0x01, // REPORT_SIZE (1) //报告的个数为8即总共有8个bits 0x95, 0x08, // REPORT_COUNT (8) //输入用变量值绝对值。像键盘这类一般报告绝对值 //而鼠标移动这样的则报告相对值表示鼠标移动多少 0x81, 0x02, // INPUT (Data,Var,Abs) //上面这这几项描述了一个输入用的字段总共为8个bits每个bit表示一个按键 //分别从左ctrl键到右GUI键。这8个bits刚好构成一个字节它位于报告的第一个字节。 //它的最低位即bit-0对应着左ctrl键如果返回的数据该位为1则表示左ctrl键被按下 //否则左ctrl键没有按下。最高位即bit-7表示右GUI键的按下情况。中间的几个位 //需要根据HID协议中规定的用途页表HID Usage Tables来确定。这里通常用来表示 //特殊键例如ctrlshiftdel键等 //这样的数据段个数为1 0x95, 0x01, // REPORT_COUNT (1) //每个段长度为8bits 0x75, 0x08, // REPORT_SIZE (8) //输入用常量值绝对值 0x81, 0x03, // INPUT (Cnst,Var,Abs) //上面这8个bit是常量设备必须返回0 //这样的数据段个数为5 0x95, 0x05, // REPORT_COUNT (5) //每个段大小为1bit 0x75, 0x01, // REPORT_SIZE (1) //用途是LED即用来控制键盘上的LED用的因此下面会说明它是输出用 0x05, 0x08, // USAGE_PAGE (LEDs) //用途最小值是Num Lock即数字键锁定灯 0x19, 0x01, // USAGE_MINIMUM (Num Lock) //用途最大值是Kana这个是什么灯我也不清楚^_^ 0x29, 0x05, // USAGE_MAXIMUM (Kana) //如前面所说这个字段是输出用的用来控制LED。变量值绝对值。 //1表示灯亮0表示灯灭 0x91, 0x02, // OUTPUT (Data,Var,Abs) //这样的数据段个数为1 0x95, 0x01, // REPORT_COUNT (1) //每个段大小为3bits 0x75, 0x03, // REPORT_SIZE (3) //输出用常量值绝对 0x91, 0x03, // OUTPUT (Cnst,Var,Abs) //由于要按字节对齐而前面控制LED的只用了5个bit //所以后面需要附加3个不用bit设置为常量。 //报告个数为6 0x95, 0x06, // REPORT_COUNT (6) //每个段大小为8bits 0x75, 0x08, // REPORT_SIZE (8) //逻辑最小值0 0x15, 0x00, // LOGICAL_MINIMUM (0) //逻辑最大值255 0x25, 0xFF, // LOGICAL_MAXIMUM (255) //用途页为按键 0x05, 0x07, // USAGE_PAGE (Keyboard) //使用最小值为0 0x19, 0x00, // USAGE_MINIMUM (Reserved (no event indicated)) //使用最大值为0x65 0x29, 0x65, // USAGE_MAXIMUM (Keyboard Application) //输入用变量数组绝对值 0x81, 0x00, // INPUT (Data,Ary,Abs) //以上定义了6个8bit宽的数组每个8bit即一个字节用来表示一个按键所以可以同时 //有6个按键按下。没有按键按下时全部返回0。如果按下的键太多导致键盘扫描系统 //无法区分按键时则全部返回0x01即6个0x01。如果有一个键按下则这6个字节中的第一 //个字节为相应的键值具体的值参看HID Usage Tables如果两个键按下则第1、2两个 //字节分别为相应的键值以次类推。 //关集合跟上面的对应 0xc0 // END_COLLECTION 这个报告总共有8字节输入一个字节ctrl~win键、一个字节led、六个字节普通按键使用普通键可以一次发送六个1字节输出。如果只有左ctrl键按下则返回01 00 00 00 00 00 00 00十六进制如果只有数字键1 按下则返回00 00 59 00 00 00 00 00如果数字键1 和2 同时按下则返回00 00 59 5A 00 00 00 00如果再按下左shift 键则返回02 00 59 5A 00 00 00 00然后再释放1 键则返回02 00 5A 00 00 00 00 00然后全部按键释放则返回00 00 00 00 00 00 00 00。这些数据即报告都是通过中断端点返回的。当按下Num Lock键时PC会发送输出报告从报告描述符中我们知道Num Lock的LED对应着输出报告的最低位当数字小键盘打开时输出xxxxxxx1二进制打x的由其它的LED状态决定当数字小键盘关闭时输出xxxxxxx0同前。取出最低位就可以控制数字键锁定LED了。 报告特征有些键盘带有一个旋钮调节音量所以这个键盘既是多媒体类型的HID又是键盘类型HID但是只需要连接一个HID就能实现这个功能这是因为报告地图实现了多种HID的配置为了区分是那种HID以及这种HID的类型使用报告特征来表示。 基础理论已经到此下面是ESP32的程序分析。 ESP32程序分析
http://www.tj-hxxt.cn/news/228265.html

相关文章:

  • 如何仿制手机版网站营业执照官网申请入口
  • 做网站有哪些行业wordpress落地页模板
  • 重庆荣昌网站建设价格长寿网站建设
  • 长尾关键词爱站网怎么制作网页页面
  • 怎么建设一个自己的网站首页wordpress rpc
  • 汕头网站建设技术支持网址生成短链接
  • 网站设置请求桌面网站wordpress防止文章被采集
  • 这样建立网站wordpress安装方式
  • 公众号的微网站怎么做深圳市住房和建设局红色警示
  • 如何建设农业推广网站WordPress数据库和网站文件
  • 辽宁市场网站建设销售广州网站改版 网站建设
  • 重庆有哪些做网站公司苏州市规划建设局网站
  • dedecms 5.7 通用企业网站模板一个域名可以做两个网站吗
  • 旅游网站建设主要工作手机排行榜软件
  • 东莞网站建设企慕网站安装出现dir
  • 做网站多少钱一张页面建设网站企业运营
  • 工商局网站年检怎么做前端响应式布局
  • 便捷的网站建设北京最大的互联网公司
  • 极致优化WordPress网站速度南京网站网站建设公司
  • 国外扁平化网站上海企业网站推广
  • 自己做网站卖衣服wordpress如何建立多种语言
  • 新开的公司做网站多少钱台州网站建设方案
  • 南京手机网站设计网站开发项目建设经验
  • 浙江金顶建设公司网站青岛品牌设计公司
  • 公司做网站价格快速搭建网站域名绑定设置
  • 淘宝网站的建设与运营设计思路网站与网页之间的区别是什么
  • 电商网站构建开发者模式怎么关闭华为
  • 中专网站建设课程南京广告公司地址
  • 宁夏建设职业技术学院官方网站汉口江岸区城市建设局网站
  • 黑龙省建设厅网站首页网站设计厂