网站开发移动端移动端网站优化
2026/2/25 10:12:24 网站建设 项目流程
网站开发移动端,移动端网站优化,怎么给QQ名片做网站,jfinal怎么做网站#x1f4fa; B站视频讲解#xff08;Bilibili#xff09;#xff1a;https://www.bilibili.com/video/BV1k1C9BYEAB/ #x1f4d8; 《Yocto项目实战教程》京东购买链接#xff1a;Yocto项目实战教程 基于 Yocto 的蓝牙 Peripheral 设备实战#xff1a;初始化、连接与数…B站视频讲解Bilibilihttps://www.bilibili.com/video/BV1k1C9BYEAB/《Yocto项目实战教程》京东购买链接Yocto项目实战教程基于 Yocto 的蓝牙 Peripheral 设备实战初始化、连接与数据传输全流程解析本文以Rockchip 平台 Yocto 系统为背景结合你当前使用的蓝牙设备从 Peripheral从设备视角完整讲清楚蓝牙 Peripheral 在系统中的角色定位如何在 Yocto 中配置蓝牙的初始信息Peripheral 如何被 Central 发现并建立连接连接建立后如何进行数据传输实战中真正重要的协议与接口推荐的资料与调试方法全文以工程实战为主线不做无关扩展目标是你看完就能在自己的板子上跑起来并知道每一步在干什么。一、从工程视角重新理解蓝牙角色模型在任何蓝牙系统中首先必须明确角色Role否则后续配置一定会混乱。1. Central 与 Peripheral 的工程含义角色常见设备工程职责Central手机、PC、工控主机发起扫描、建立连接、读取/写入数据Peripheral传感器、嵌入式板卡广播自身信息、等待连接、提供数据服务你当前的 Rockchip Yocto 设备典型就是 Peripheral。也就是说你的设备不主动扫描别人而是周期性广播Advertising等待 Central 连接提供可被访问的数据接口这决定了我们后面所有配置的方向。二、蓝牙 Peripheral 的整体软件架构Yocto Rockchip在 Yocto 系统中一个典型的蓝牙 Peripheral 软件栈如下应用层你的程序 └── 使用 D-Bus / socket / GATT 接口 BlueZbluetoothd ├── GAP设备发现 / 连接管理 ├── GATT Server数据服务 └── 安全 / 配对策略 Linux Kernel └── HCI 驱动UART / USB 蓝牙控制器BT 芯片核心结论在 Yocto 中做蓝牙 Peripheral99% 的工作都在 user spaceBlueZ 应用不是内核驱动。三、第一步在 Yocto 中配置 Peripheral 的“初始信息”所谓“初始信息”从 Peripheral 角度核心只有四类设备名Central 扫描时看到的名字是否自动上电power on是否可被发现discoverable支持的蓝牙模式BLE / BR-EDR3.1 BlueZ 的核心配置文件main.conf路径/etc/bluetooth/main.conf这是Peripheral 行为的根配置文件。3.2 一个适合 Rockchip Peripheral 的实战配置示例[General] Name RK-Peripheral Class 0x000100 DiscoverableTimeout 0 PairableTimeout 0 ControllerMode dual AutoEnable true [Policy] AutoEnable true配置项逐条解释工程意义NameCentral 扫描时看到的设备名等同于“蓝牙对外身份”DiscoverableTimeout 0永久可发现对嵌入式 Peripheral 非常重要ControllerMode dual同时支持 BLE 经典蓝牙AutoEnable truebluetoothd 启动即打开控制器这一份配置已经定义了 Peripheral 的“开机形态”。四、第二步确保 Peripheral 在系统启动后处于“可连接状态”仅有main.conf在工程上往往不够稳妥实际项目中一定会再加一层 systemd 兜底。4.1 为什么要加 systemd 初始化服务因为在 Rockchip 平台上蓝牙固件加载UART 设备就绪bluetoothd 启动顺序存在时序不确定性。4.2 一个工程常用的 Peripheral 初始化服务[Unit] DescriptionBluetooth Peripheral Init Afterbluetooth.service [Service] Typeoneshot ExecStart/usr/bin/bluetoothctl power on ExecStart/usr/bin/bluetoothctl discoverable on ExecStart/usr/bin/bluetoothctl pairable on RemainAfterExityes [Install] WantedBymulti-user.target这一步的效果是无论系统怎么启动最终你的设备一定是一个“可发现、可连接的 Peripheral”。五、第三步Peripheral 是如何被 Central 发现的GAP5.1 广播Advertising在做什么当 Peripheral 没有连接时会周期性发送广播包内容包括设备地址MAC设备名Name支持的服务 UUID可选Central 做的事情很简单扫描 → 显示 → 用户选择 → 发起连接5.2 用手机验证 Peripheral 是否正确工作这是最基础、也是最重要的一步。Android / iOS 打开蓝牙搜索设备是否能看到RK-Peripheral如果这一步失败问题一定在初始化 / 广播阶段不要继续往下查六、第四步Peripheral 与 Central 的连接建立过程连接建立由Central 主动发起Peripheral 只是被动响应。6.1 连接阶段发生了什么Central 发送 Connection RequestPeripheral 接受连接双方进入 Connected 状态建立 L2CAP 信道你在系统中能看到的典型现象bluetoothctldevicesinfo XX:XX:XX:XX:XX:XX状态从Connected: no变为Connected: yes七、真正的数据传输核心GATT重点如果你只记住一个协议那一定是 GATT。7.1 为什么 GATT 是 Peripheral 的核心因为Peripheral ≠ socket serverPeripheral 提供的是属性AttributeCentral 做的事情只有三种Read读Write写Notify / Indicate订阅7.2 GATT 的层级结构非常重要GATT Server在 Peripheral 上 └── Service服务 └── Characteristic特征 ├── Value └── Properties读/写/通知你要传输的数据最终都体现在 Characteristic 的 value 上。八、实战在 Yocto 设备上实现一个最小 GATT Server下面给你一个工程可用、逻辑清晰的最小示例。8.1 使用 BlueZ 的 D-Bus GATT 接口推荐方式BlueZ 官方推荐Peripheral →实现 GATT Server通过 D-Bus 向 bluetoothd 注册8.2 示例一个自定义数据 Service1️⃣ 定义 Service UUID12345678-1234-5678-1234-56789abcdef02️⃣ 定义 Characteristic87654321-4321-6789-4321-fedcba987654属性ReadWriteNotify8.3 Python 示例清晰、适合 YoctoclassDataCharacteristic(Characteristic):def__init__(self,bus,index,service):super().__init__(bus,index,87654321-4321-6789-4321-fedcba987654,[read,write,notify],service)self.value[0x00]defReadValue(self,options):returnself.valuedefWriteValue(self,value,options):self.valuevalueprint(Received data:,value)defnotify_data(self,data):self.valuedata self.PropertiesChanged(GATT_CHRC_IFACE,{Value:self.value},[])8.4 数据流向说明非常关键Central 写数据 →WriteValue()Peripheral 主动推送 →notify_data()Central 订阅后即可实时接收这就是蓝牙 Peripheral 数据传输的本质。九、协议重点总结只保留工程必要部分协议是否必须工程作用GAP✅发现 / 连接管理GATT✅数据模型与传输ATT⭕GATT 底层实现SMP⚠️配对 / 加密可选L2CAP⭕底层信道记住一句话Peripheral 工程开发90% 的精力都在 GATT 设计上。十、调试与验证非常实用10.1 在 Peripheral 端bluetoothctl show info10.2 在 Central 端nRF ConnectAndroid / iOS查看 Service / Characteristic读 / 写 / 订阅数据这是验证 GATT Server 是否正确的最佳工具。十一、推荐参考资料不多但够用BlueZ 官方文档GATThttps://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/docBluetooth Core Specification只查 GATT / GAPVolume 3, Part GBlueZ 示例代码test/example-gatt-server十二、工程级总结在 Yocto Rockchip 平台上实现蓝牙 Peripheral本质是用 BlueZ 定义好设备的“对外形态”Name / Discoverable通过 systemd 保证启动稳定使用 GATT Server 向 Central 提供数据接口所有数据交互最终都映射到 Characteristic 上B站视频讲解Bilibilihttps://www.bilibili.com/video/BV1k1C9BYEAB/《Yocto项目实战教程》京东购买链接Yocto项目实战教程

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询