Bluetooth 开发科普

news2024/11/14 20:51:54

Bluetooth 开发科普

1、蓝牙协议结构

在这里插入图片描述
Controller运行在蓝牙芯片上,host运行在主控上,两芯片通过硬件通信接口(uart或usb),进行通信连接(HCI)。
实际使用中有不同场景,根据场景需求,SIG定义了不同的规范(Profile),对于Controller只关心数据收发,不用用户场景,所以有了host端的L2CAP规范,屏蔽上层不同用户协议。
Profile,大致分三类,经典蓝牙(黄色),ble(紫色),mesh(绿色)

区别

当设备支持蓝牙4.0时,还得进一步确认设备是支持BT单模、BLE单模还是BT和BLE都支持的双模。  放一张经典蓝牙和BLE的软件层次区分,中间的是双模的。
在这里插入图片描述

2、常见测试工具使用

bluetoothd --version //bluez版本查询
连接设备 E0:CC:F8:CE:05:1A //yf的小米10

hciconfig -a
hcidump -w /tmp/xxx.cfa //hci log
hciconfig hci0 leadv //广播
首先启动bluetoothctl启动

常用命令

  • power on/off 打开电源或者关闭
  • scan on/off 开始扫描
  • pair xx:xx:xx:xx:xx 匹配某个设备
  • paired-devices显示已经匹配的设备
  • connect xx:xx:xx:xx:xx 连接蓝牙设备

首先运行
./bluetoothctl
给芯片上电,
power on
使芯片可发现
Discoverable on

作为主机连接从设备
进入bluetoothctl命令行 bluetoothctl
进入bluetoothctl命令行后,类似:[bluetooth]#
Controller代表arm板上的蓝牙设备,Device代表蓝牙耳机

按如下步骤初始化蓝牙设备,并连接蓝牙耳机

  • 查看帮助 help
  • power on
  • agent on
  • default-agent
  • 启动扫描 scan on
    假如蓝牙耳机地址为:E0:CC:F8:CE:05:1A
    trust E0:CC:F8:CE:05:1A
  • 配对 pair E0:CC:F8:CE:05:1A
  • 连接 connect E0:CC:F8:CE:05:1A
  • 查看蓝牙耳机信息
    info E0:CC:F8:CE:05:1A
  • 断开连接
    disconnect E0:CC:F8:CE:05:1A
    不想自动连接上蓝牙耳机,可以删除配对信息
    remove E0:CC:F8:CE:05:1A

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/732313.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第三章 SSD存储介质:闪存 3.2-3.3

3.2 闪存实战指南 闪存接口有同步异步之分。一般来说,异步传输速率慢,同步传输速率快。 (1)异步接口没有时钟,每个数据读由一次RE_n信号触发,每个数据写由一次WE_n信号触发。 (2)同步…

又曝新作!阿里P9再出山,操作性超强的Spring源码实践

如果你看懂了 Spring 源码,再去看 MyBatis、Spring Security 源码,你会发现这些源码都非常容易,稍微瞅几眼就懂了。 然而源码的学习是一个枯燥的过程,源码解读也是一个枯燥的过程,但是一旦你把源码搞懂了,…

远程接口调用工具Feign

JAVA 项目中如何实现接口调用? Httpclient HttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的、最新的、功能丰富的支持 Http 协议的客户端编程工具包,并且它支持 HTTP 协议最新版本和建议。HttpClient 相比传统 JDK 自带的 U…

C++、QT(GUI)知识库系统

目录 一、项目介绍 二、项目展示 三、源码分享 一、项目介绍 知识库系统 为一些常用知识进行统一储存、管理、更新、检索等功能的系统,整体类似于博客之类的系统。 用户的使用流程: 查看知识:搜索知识关键字 -> 点击查看知识内容 -…

Simulink仿真模块 - Delay

Delay:按固定或可变采样期间延迟输入信号 在仿真库中的位置为:Simulink / Commonly Used Blocks Simulink / Discrete HDL Coder / Commonly Used Blocks HDL Coder / Discrete 模型为: 双击模型打开参数设置界面,如图所示: 说明 Delay 模块会在一段延迟之后再输出模块的…

FreeRTOS ~(五)队列的常规使用 ~ (5/5)队列集

举例子说明:队列集的使用 队列集:Queue Set 多个队列的集合,一个队列中依次存放多个队列的句柄一般使用API的流程如下: 1.创建几个队列 2.创建队列集 3.把这几个队列添加进队列集中 然后可以创建任务去使用队列和队列集static QueueHandle_t xQueu…

[MySQL]可重复读下的幻读

一、幻读的定义 根据MySQL官网的描述,幻读是“相同的查询在不同时间返回了不同的结果” The so-called phantom problem occurs within a transaction when the same query produces different sets of rows at different times. 同时官网还举例说明了,如…

图形学 | 期末复习(上)| games101笔记 | 补档

博客基于GAMES101-现代计算机图形学入门-闫令琪,但不是其完整笔记,基于复习要求有一定的删减。考试以图形学入门基本概念和核心研究内容为主,少量公式。即以论述概念为主,涉及少量算法。p1:29:12是对应的games101视频节点&#xf…

maven在vscode添加依赖操作

1.maven查找依赖 点击进入网站,搜索需要的依赖包名选择一个合适的依赖 根据自己需要选择版本 选中maven,复制好代码,粘贴到pom.xml 2. 添加新的依赖 在pom.xml文件中,添加了依赖后,打开vscode终端,输入以…

matlab解微分方程

1.匿名函数 1.1创建 f(变量) 表达式; f(x1,x2) x1.^2x2;1.2 求解 x1为2 3 4 5;x2为3 4 5 6的情况下求解函数f的值 f(x1,x2) x1.^2x2; yf(2:5,3:6); subplot(121);%选择子图位置 plot(y)%画图2.一阶微分方程 用“dsolve” 2.1例 y.-y0 step1: 申明自变量和因…

一文2000字从0到1用Jmeter全流程性能测试实战

项目背景: 我们的平台为全国某行业监控平台,经过3轮功能测试、接口测试后,98%的问题已经关闭,决定对省平台向全国平台上传数据的接口进行性能测试。 01、测试步骤 1、编写性能测试方案 由于我是刚进入此项目组不久&#xff0c…

Linux--调试器:gdb

gcc与g默认动态链接形成的可执行程序(比如a.out)是release 版本,不可调试!!! 如何搞成debug可调试版本? gcc 程序名 -o 可执行程序名 -g //添加了-g就表明该程序是debug方式发布的 查看可执行…

归并排序和基数排序包含完整程序和结果

一,归并排序 1.定义:将两个或者两个以上的有序表合并成一个新的游戏表的过程。 2路归并排序:假设排序表中有n个记录,则可以将其视为n个有序子表,每个子表的长度为1,然后两两合并,得到n/2&…

前端vue入门(纯代码)24_Modules

穷不怪父,苦不责妻,方为真男人! 【23.Vuex中的模块化和命名空间】 [可以去官网看看Vuex3文档](Module | Vuex (vuejs.org)) 由于使用单一状态树,应用的所有状态会集中到一个比较大的对象。当应用变得非常复杂时,sto…

SQLServer2005位安装教程(图解)

进入下载的文件中,双击打开 :splash.hta 文件进行安装 根据自己的系统来选择性进行安装,这里我们选择第二项:基于 x64 的操作系统(6)。 然后在安装中选择“服务器组件、工具、练级丛书和示例©”的选项进行安装。 此处的注册信息可以忽略,非必填选项

第二章 模型评估和选择

文章目录 第二章 模型评估和选择2.1经验误差与过拟合2.2评估方法2.2.1留出法2.2.2交叉验证法2.2.3自助法2.2.4调参与最终模型 2.3性能度量2.3.1错误率与精度2.3.2查准率、查全率和F12.3.3ROC与AUC2.3.4代价敏感错误率与代价曲线 第二章 模型评估和选择 2.1经验误差与过拟合 通…

Unity-3d小游戏开发-----走迷宫

本人是在学习完c,c,数据结构算法,操作系统网络这些基础的课程之后,打算学习自己喜欢的游戏开发方向的东西,然后在B站上自学了几天unity,用到unity的触发器,碰撞,刚体,以及…

图像处理入门教程:从Python到Opencv

Python编程 这里主要针对有一定基础的读者,在Python编程中,掌握基础语法和数据类型是非常重要的。它们是构建程序的基石,是提供解决问题和开发应用的工具。在这里,我将简单介绍一些常用的语法和数据类型。 一、环境搭建 详细请…

14 - 信号优先级与安全性

---- 整理自狄泰软件唐佐林老师课程 查看所有文章链接:(更新中)Linux系统编程训练营 - 目录 文章目录 1. 信号优先级1.1 问题1.2 信号优先级的概念1.3 信号优先级实验设计1.3.1 发送端1.3.2 接收端1.3.3 编程实验:信号优先级实验 …

普通索引VS唯一索引

查询性能 假设 我们有一列int 类型的value 对它进行查询 (VALUE无重复字段) SELECT value FROM table where value 8; 如过是普通索引 找到value 8 的记录后还会继续找,直到碰到第一个不满足 k5 条件的记录。 如过是唯一索引 找到value 8这条记录就不会往下找…