蓝牙调试助手开发(03):概要设计

视频地址:哔哩哔哩

项目概述

蓝牙调试助手是一个用于蓝牙低功耗(BLE)设备开发和调试的移动应用程序,旨在帮助开发者更高效地进行蓝牙相关项目的调试和分析。

主要功能包括:

  1. 蓝牙数据捕获:实时捕获蓝牙设备之间的通信数据,包括连接状态、传输数据等。
  2. 数据包分析:解析蓝牙数据包,显示详细信息如信号强度、设备地址、数据内容等。
  3. 设备管理:支持对蓝牙设备的扫描、连接、数据收发和断开操作。
  4. 实时监控:提供实时的蓝牙设备状态监控,帮助开发者快速定位问题。
  5. 配置管理:支持对蓝牙设备的配置参数进行调整和管理。

该工具以图形化界面呈现,操作简单,适用于需要进行蓝牙通信测试和调试的场景。

用户使用App的流程见下表:

步骤 具体内容
1 用户打开App并扫描蓝牙设备
2 用户连接目标蓝牙设备
3 选择需要读写的UUID
4 根据通信协议,发送数据测试

项目框图

功能概述

1.蓝牙列表

  • 蓝牙搜索
    • 支持 蓝牙名称、mac地址、RSSI(0到-100范围)搜索过滤
  • 蓝牙列表,显示 设备名称(没有显示 N/A)mac地址、rssi
  • 蓝牙连接,只有支持连接的设备才会显示连接按钮,点击跳转到收据收发页面
  • 广播数据解析,按照官方的格式进行解析,参考 https://www.bluetooth.com/specifications/assigned-numbers/
参考图
功能描述
触发方式

应用初始化时进入此页面

页面展示内容
  • 初始化时,开始扫描附近的蓝牙设备
  • 扫描到设备后进行数据处理,并渲染
    • 将设备的mac地址、rssi、名称 封装到一个map对象中,方便取值
    • 将map 添加到 数组中
  • 点击连接按钮进入数据收发界面
    • 只有当设备支持连接时才会展示连接按钮

2.数据收发功能

  • 蓝牙通信设置
    • 基本设置,mtu、phy
    • 通信协议设置,支持拼接帧头、帧尾、校验位、帧长、控制字,用户只需发送数据位
    • 追加符设置,支持追加换行符 0x0D(回车)、 0x0A(换行)
  • 日志管理
    • 自动滚屏,可以进行设置日志是否自动滚屏
    • 日志显示,在日志中高亮显示不同UUID的内容
    • 时间戳拼接,可以进行设置日志是否拼接时间戳
    • 日志一键清理
    • 日志存储限制,当前窗口显示的数据 不超过 1000条
      • 用户每次打开软件,清空日志文件,一旦有数据接收并将日志追加写入到此文件(该文件保留的是全部日志内容)
    • 日志保存,默认存储日志文件到系统位置
  • 数据收发
    • 支持Hex和文本两种数据格式发送与显示

    • 支持监听多个读UUID,写只写一个UUID

参考图
功能描述
触发方式

在蓝牙列表页面点击蓝牙连接时进入此页面

页面展示内容
  • 初始化时
    • 配置蓝牙连接状态监听,并赋值给isConnect;
    • 配置蓝牙数据接收监听,将接收到的数据进行处理。
  • 页面上方有两个tab切换,分别是 蓝牙服务、实时日志
    • 蓝牙服务 主要展示了该设备的服务列表和读写UUID,该部分用于选择设备的接收UUID、写UUID
    • 实时日志 主要展示了该设备从连接以来的收发记录、连接、断开连接等记录
  • 页面下方主要就是发送按钮 及 发送相关的配置
    • 循环发送
    • 拼接换行
    • 协议配置
  • 快捷发送按钮 是跳转到 自定义数据界面,选择已经配置好的自定义数据发送给硬件

3.自定义数据功能

  • 添加自定义数据

    • 通过输入数据描述和数据内容添加自定义数据,数据内容支持Hex格式
  • 编辑自定义数据

    • 在自定义数据列表中点击编辑按钮即可编辑自定义数据
  • 删除自定义数据

    • 在自定义数据列表中点击删除按钮即可删除自定义数据
  • 使用自定义数据

    • 在数据收发界面 点击快捷发送 跳转至自定义数据页面,选择自定义数据后并携带返回结果
参考图
功能描述
触发方式

在数据收发页面点击快捷发送时进入此页面

页面展示内容
  • 初始化时
    • 读取缓存文件中的自定义数据列表并赋值。
  • 点击添加
    • 跳出添加数据弹窗,结束后并将输入结果添加到list中
  • 点击发送
    • 将该项数据的值保存在缓存中,并由上层页面调用
  • 点击删除
    • 删除该项的值

4.数据波形图功能

窗口展示区根据设备发送的数据自动调整窗口宽度,可设置当前窗口展示的最大点数

通信协议参考如下

规则

<计数戳>{窗口名称}数据\n

备注

1.任意数据都可以分窗

2.当数据为逗号分隔数字时可以绘图

3.不支持中文,花括号、尖括号、换行符\n不可省略

4.计数戳为纯数字,作为X轴数据,不可带单位

数据示例

<0.0>{plotter}1,2,3,4

<1.0>{plotter}1,2,3,4

<2.5>{plotter}1,2,3,4

功能描述
触发方式

在数据收发页面点击数据波形时进入此页面

页面展示内容
  • 初始化时
    • 开始蓝牙状态监听操作,一旦断开连接返回到上个页面
    • 蓝牙数据监听,对读取到的数据进行处理
      • 根据通信协议解析 不同窗口的x、y值
  • 页面销毁
    • 取消蓝牙状态监听、蓝牙数据监听
  • 页面上方是窗口的列表,用来选择窗口
  • 页面中间是波形展示区域,用来显示处理好的波形数据
相关推荐
西西学代码1 天前
Flutter---框架
前端·flutter
消失的旧时光-19431 天前
Flutter 与原生通信机制全解析:MethodChannel / EventChannel / BasicMessageChannel,一篇讲透(工程级)
flutter·dart·channel
kirk_wang1 天前
Flutter Widget核心概念深度解析
flutter·移动开发·跨平台·arkts·鸿蒙
傅里叶1 天前
Flutter移动端获取相机内参
前端·flutter
RaidenLiu1 天前
Offstage / Visibility:不可见真的就不消耗性能吗
前端·flutter·性能优化
火柴就是我1 天前
学习一些常用的混合模式之BlendMode. SRC_OVER
android·flutter
程序员Agions1 天前
Flutter 邪修秘籍:那些官方文档不会告诉你的骚操作
前端·flutter
CodeOfCC1 天前
flutter-elinux 编译linux arm64程序
linux·flutter