本文档主要讲解蓝牙 Socket 应用的开发流程和使用方法。
应用开发
本文使用的 DevEcoStudio 版本是 4.1.0.400,API 版本为 11。
- 通过 DevEcoStudio 创建项目"File->New->Create Project"创建一个工程。

-
工程创建完毕后,在 entry\src\main\ets 创建蓝牙 socket 相关目录,并且 entry\build-profile.json5 中配置 worker。
ets
├─ workers
│ └─ Worker.ets
├─ pages
│ └─ Index.ets
└─ entryability
└─ EntryAbility.ets -
界面入口为 Index.ets,此处也为蓝牙测试页面
蓝牙 Socket 相关接口可在 @ohos.bluetooth.socket(蓝牙 socket 模块)(推荐) (openharmony.cn)中查找和学习

客户端传送次数和包长度可供选择,每次传输 102 个包,包中数组元素为 0-101,如第一个包中元素皆为 0,长度为应用界面规定长度,以此类推,客户端计算发包 1~100 的发包的发包个数和长度,共发送字节为收到的长度的累加。在以上数据发送完毕后,再发送一个首个元素为 199 的数组表示发送完毕。
服务端接收数据流程如下图所示。


需要注意的是,因为客户端在主线程发送数据会存在 appfreeze 的问题,所以需要让客户端在与主线程并行的 worker 线程中发送数据,具体可参考 @ohos.worker (启动一个 Worker)。
DD一下: 欢迎大家关注公众号<程序猿百晓生>,可以了解到以下知识点。
erlang
`欢迎大家关注公众号<程序猿百晓生>,可以了解到以下知识点。`
1.OpenHarmony开发基础
2.OpenHarmony北向开发环境搭建
3.鸿蒙南向开发环境的搭建
4.鸿蒙生态应用开发白皮书V2.0 & V3.0
5.鸿蒙开发面试真题(含参考答案)
6.TypeScript入门学习手册
7.OpenHarmony 经典面试题(含参考答案)
8.OpenHarmony设备开发入门【最新版】
9.沉浸式剖析OpenHarmony源代码
10.系统定制指南
11.【OpenHarmony】Uboot 驱动加载流程
12.OpenHarmony构建系统--GN与子系统、部件、模块详解
13.ohos开机init启动流程
14.鸿蒙版性能优化指南
.......
应用使用
准备
- 两块 dayu200 开发板
- 在使用前确保两块开发板的蓝牙是开启状态,且两块开发板蓝牙配对成功
- 安装应用程序:hdc install xxx.hap
- 关于两块开发板所用镜像适配情况: (1) 5.0.0Release(OpenHarmony 5.0.0.71)版本安装应用无法出现授权弹框且会出现闪退状况,需自行在设置-隐私-权限管理-应用-Socket 应用中允许使用蓝牙权限; (2) 4.1.1Release(OpenHarmony 4.1.7.8)版本服务端接收完毕后取消订阅 spp 读请求事件失败,但不影响使用; (3) 5.0 Beta1(OpenHarmony 5.0.0.25)版本使用无故障。
使用
-
在两块开发板上安装此应用;
-
点击运行 Socket 应用,允许蓝牙权限;
-
一台开发板选 Socket 客户端,一台选 Socket 服务端;
-
客户端选择已配对的服务端蓝牙名称,并选择测试次数和包长度;
-
先点击"测试 Socket 服务端"按钮,再点击"测试 Socket 客户端"按钮;
-
客户端页面显示每次发包次数及包长,并在底部显示共测试次数和共发送字节长度,服务端会显示每次收包个数、包长、用时及速度,并在底部显示共测试次数、共收到字节、总计时以及平均速度。(点击顶部文字"蓝牙 Socket 测试"可变换背景颜色,颜色为白色时,不打印日志,为粉色时打印日志)
-
测试结果:本测试结果为在三种镜像下测试次数为 100 情况下的平均速度,具体结果如下:
4.1.1Release 版本(OpenHarmony 4.1.7.8) 5.0 Beta 版本(OpenHarmony 5.0.0.25) 5.0.0Release 版本(OpenHarmony 5.0.0.71) 包长为 10 字节时的平均速度(单位:KB/s) 13 17 24 包长为 1024 字节时的平均速度(单位:KB/s) 153 155 184 包长为 4096 字节时的平均速度(单位:KB/s) 160 160 189 包长为 10 字节时的总收包个数(单位:个) 1497 1552 1651 包长为 1024 字节时的总收包个数(单位:个) 11530 12366 12962 包长为 4096 字节时的总收包个数(单位:个) 47407 51999 55193 相比之下,包长为 10 字节时的传输速率较低,其原因可能是:每次回调中内存包含 1 到 100 的每次回调包含数据较少,而较小的数据包可能会导致更多的头部信息和开销,从而降低实际的传输速率。相反,较大的数据包可以减少这种开销,故传输速率较大。
常见问题及解决办法
- 问题描述:应用打开出现闪退情况 可能原因:该开发板蓝牙处于关闭状态 解决方法:在设置中打开蓝牙
- 问题描述:点击按钮,按钮变成红色,按钮中显示"蓝牙未打开,请再试一次" 可能原因:开发板蓝牙处于关闭状态或按钮点击顺序有误 解决方法:检查两块开发板蓝牙状态,将处于关闭状态的蓝牙打开,如两端蓝牙皆处于开启状态,则为按钮点击顺序有误,应先点击"测试 Socket 服务端"按钮,再点击"测试 Socket 客户端"按钮