【鸿蒙开发】蓝牙Socket应用开发案例

本文档主要讲解蓝牙 Socket 应用的开发流程和使用方法。

应用开发

本文使用的 DevEcoStudio 版本是 4.1.0.400,API 版本为 11。

  1. 通过 DevEcoStudio 创建项目"File->New->Create Project"创建一个工程。
  1. 工程创建完毕后,在 entry\src\main\ets 创建蓝牙 socket 相关目录,并且 entry\build-profile.json5 中配置 worker。

    ets
    ├─ workers
    │ └─ Worker.ets
    ├─ pages
    │ └─ Index.ets
    └─ entryability
    └─ EntryAbility.ets

  2. 界面入口为 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)版本使用无故障。

使用

  1. 在两块开发板上安装此应用;

  2. 点击运行 Socket 应用,允许蓝牙权限;

  3. 一台开发板选 Socket 客户端,一台选 Socket 服务端;

  4. 客户端选择已配对的服务端蓝牙名称,并选择测试次数和包长度;

  5. 先点击"测试 Socket 服务端"按钮,再点击"测试 Socket 客户端"按钮;

  6. 客户端页面显示每次发包次数及包长,并在底部显示共测试次数和共发送字节长度,服务端会显示每次收包个数、包长、用时及速度,并在底部显示共测试次数、共收到字节、总计时以及平均速度。(点击顶部文字"蓝牙 Socket 测试"可变换背景颜色,颜色为白色时,不打印日志,为粉色时打印日志)

  7. 测试结果:本测试结果为在三种镜像下测试次数为 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 的每次回调包含数据较少,而较小的数据包可能会导致更多的头部信息和开销,从而降低实际的传输速率。相反,较大的数据包可以减少这种开销,故传输速率较大。

常见问题及解决办法

  1. 问题描述:应用打开出现闪退情况 可能原因:该开发板蓝牙处于关闭状态 解决方法:在设置中打开蓝牙
  2. 问题描述:点击按钮,按钮变成红色,按钮中显示"蓝牙未打开,请再试一次" 可能原因:开发板蓝牙处于关闭状态或按钮点击顺序有误 解决方法:检查两块开发板蓝牙状态,将处于关闭状态的蓝牙打开,如两端蓝牙皆处于开启状态,则为按钮点击顺序有误,应先点击"测试 Socket 服务端"按钮,再点击"测试 Socket 客户端"按钮
相关推荐
冉冉同学9 小时前
【HarmonyOS NEXT】解决微信浏览器无法唤起APP的问题
android·前端·harmonyos
别说我什么都不会9 小时前
【仓颉三方库】 数据库驱动——kv4cj
harmonyos
进击的圆儿10 小时前
鸿蒙应用(医院诊疗系统)开发篇2·Axios网络请求封装全流程解析
华为·harmonyos
鸿蒙布道师10 小时前
鸿蒙NEXT开发文件预览工具类(ArkTs)
android·ios·华为·harmonyos·arkts·鸿蒙系统·huawei
鸿蒙布道师10 小时前
鸿蒙NEXT开发全局上下文管理类(ArkTs)
android·ios·华为·harmonyos·arkts·鸿蒙系统·huawei
别说我什么都不会16 小时前
【仓颉三方库】 数据库驱动——redis-sdk
harmonyos
悬空八只脚16 小时前
React-Native开发鸿蒙NEXT-环境配置问题(续)
harmonyos
寒雪谷17 小时前
用户登陆UI
开发语言·javascript·ui·harmonyos·鸿蒙
simple_lau17 小时前
鸿蒙项目如何调起微信功能
harmonyos
simple_lau17 小时前
如何发布HarmonyOS应用
harmonyos·arkts·arkui