HarmonyOS开发:串行通信开发详解

简介: 在电子设备和智能系统的设计中,数据通信是连接各个组件和设备的核心,串行通信作为一种基础且广泛应用的数据传输方式,因其简单、高效和成本效益高而被广泛采用。HarmonyOS作为一个全场景智能终端操作系统,不仅支持多种设备和场景,还提供了强大的开发框架和API,使得开发者能够轻松实现串行通信功能。随着技术的不断进步,串行通信技术也在不断发展。在HarmonyOS中,串行通信的开发不仅涉及到基本的数据发送和接收,还包括设备配置、错误处理和性能优化等多个方面。那么本文就来深入探讨在HarmonyOS中如何开发串行通信应用,包括串行通信的基础知识、HarmonyOS提供的API、开发步骤和实际代码示例

目录

  • 前言
  • 关于串行通信
  • 使用场景
  • 开发步骤
  • 结束语

前言

在电子设备和智能系统的设计中,数据通信是连接各个组件和设备的核心,串行通信作为一种基础且广泛应用的数据传输方式,因其简单、高效和成本效益高而被广泛采用。HarmonyOS作为一个全场景智能终端操作系统,不仅支持多种设备和场景,还提供了强大的开发框架和API,使得开发者能够轻松实现串行通信功能。随着技术的不断进步,串行通信技术也在不断发展。在HarmonyOS中,串行通信的开发不仅涉及到基本的数据发送和接收,还包括设备配置、错误处理和性能优化等多个方面。那么本文就来深入探讨在HarmonyOS中如何开发串行通信应用,包括串行通信的基础知识、HarmonyOS提供的API、开发步骤和实际代码示例,旨在帮助大家更好地理解和应用串行通信技术。

关于串行通信

先来了解一下串行通信,串行通信是指数据按位顺序一次发送的技术,它在嵌入式系统和外部设备间的数据交换中扮演着重要角色。SPP是Serial Port Profile(串口协议)的缩写,是一种蓝牙协议,用于在蓝牙设备之间建立串行通信连接。通过SPP,蓝牙设备可以像使用串口一样进行数据传输,例如传输文件、文本等。在HarmonyOS中,串行通信通常涉及以下基本概念:

  • 串行端口(Serial Port):物理接口,用于连接设备。
  • 波特率(Baud Rate):数据传输速率。
  • 数据位(Data Bits):每个字节的数据位数。
  • 停止位(Stop Bits):标识数据结束的位。
  • 奇偶校验(Parity):用于错误检测的位。

    使用场景

    再来介绍一下具体的使用场景,HarmonyOS提供了一套丰富的API来控制串行通信,主要场景有:
  • 服务端向客户端写入数据。
  • 通过socket连接对端设备。

    开发步骤

    接下来分享主要的开发步骤及使用场景的具体使用示例,具体通过服务端向客户端写入数据和通过socket连接对端设备两个使用场景来分享,具体如下所示。

    (一)服务端向客户端写入数据

    服务端向客户端写入数据的主要使用流程,如下所示。
    1.import需要的socket模块。
    2.需要SystemCapability.Communication.Bluetooth.Core系统能力。
    3.开启设备蓝牙。
    4.创建服务端socket,返回serverId。
    5.服务端等待客户端连接,返回clientId。
    6.服务端向客户端写入数据。
    7.(可选)服务端订阅客户端写入的数据。
    8.注销服务端socket。
    9.注销客户端socket。
    具体的使用示例代码如下所示:
    ```
    import { socket } from '@kit.ConnectivityKit';
    import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit';
    // 创建服务器监听Socket, 返回serverId
    let serverNumber = -1;
    let sppOption: socket.SppOptions = {
    uuid: '00001101-0000-1000-8000-00805f9b34fb',
    secure: true,
    type: 0
    };
    socket.sppListen('server1', sppOption, (code, serverSocketID) => {
    if (code != null) {
    return;
    } else {
    serverNumber = serverSocketID;
    }
    });
    // socket等待客户端连接,连接成功返回clientId
    let clientNumber = -1;
    socket.sppAccept(serverNumber, (code, clientSocketID) => {
    if (code != null) {
    return;
    } else {
    clientNumber = clientSocketID;

    }
    })
    // 向客户端写入数据
    let array = new Uint8Array(990);
    array[0] = 'A'.charCodeAt(0);
    array[1] = 'B'.charCodeAt(0);
    array[2] = 'C'.charCodeAt(0);
    array[3] = 'D'.charCodeAt(0);
    socket.sppWrite(clientNumber, array.buffer);

// 订阅读请求事件
socket.on('sppRead', clientNumber, (dataBuffer: ArrayBuffer) => {
const data = new Uint8Array(dataBuffer);
if (data != null) {
} else {
}
});

// 取消订阅读请求事件
socket.off('sppRead', clientNumber, (dataBuffer: ArrayBuffer) => {
const data = new Uint8Array(dataBuffer);
if (data != null) {
} else {
}
});

// 注销服务端socket
socket.sppCloseServerSocket(serverNumber);

// 注销客户端socket
socket.sppCloseClientSocket(clientNumber);


# (二)通过socket连接对端设备
通过socket连接对端设备的主要使用流程,如下所示。
1.import需要的socket模块。
2.需要SystemCapability.Communication.Bluetooth.Core系统能力。
3.开启设备蓝牙。
4.开启ble扫描,获取对端设备mac地址。
5.连接对端设备。
具体的使用示例代码如下所示:
AI 代码解读

import { socket } from '@kit.ConnectivityKit';
import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit';
// 开启ble扫描,获取对端设备mac地址
let deviceId = 'xx:xx:xx:xx:xx:xx';
// 连接对端设备
socket.sppConnect(deviceId, {
uuid: '00001101-0000-1000-8000-00805f9b34fb',
secure: true,
type: 0
}, (code, socketID) => {
if (code != null) {
return;
}
})
```

结束语

通过本文的详细介绍和示例代码,想必大家已经对HarmonyOS中的串行通信开发有了全面的了解。从串行通信的基本概念到实际的应用开发,每一步都是构建高效、可靠通信系统的重要组成部分,串行通信在HarmonyOS开发中扮演着重要角色,尤其是在与外部设备进行数据交换时。物联网和智能设备市场的不断扩大,掌握串行通信技术将成为开发者的一项重要技能,深入理解串行通信的原理和实践将使大家在面对这些挑战时更加从容不迫。最后,随着技术的不断发展,串行通信技术将在HarmonyOS生态中发挥更大的作用,为开发者提供更多的开发体验。

目录
打赏
0
2
2
0
1043
分享
相关文章
|
6天前
鸿蒙开发:V2版本装饰器@Once
@Once装饰器只能与@Param搭配使用,仅此一个组合,无其他使用方式,还有就是,必须在V2版本,也就是@ComponentV2装饰的自定义组件中,否则会报异常。
鸿蒙开发:V2版本装饰器@Once
|
4天前
|
鸿蒙开发:实现AOP代码插桩能力
正确的运用AOP,可以提升代码的模块化、复用性、可维护性和灵活性,同时降低了耦合度,使系统更易于扩展和维护。
36 13
鸿蒙开发:实现AOP代码插桩能力
|
1天前
|
鸿蒙开发:相对布局RelativeContainer
当然了,RelativeContainer组件还有着其它的属性,但是最重要的也就是位置的摆放,其实也就是相对于锚点组件的摆放;通过上述的案例,我们不难发现,所谓的左上右下,反着来就是对的,比如在锚点上边,我用bottom,在锚点下面,我用top,在实际的开发中,可极大节约我们的开发时间。
鸿蒙开发:相对布局RelativeContainer
|
7天前
鸿蒙开发:熟知@BuilderParam装饰器
在实际的开发中,我们经常会遇到自定义组件的情况,比如通用的列表组件,选项卡组件等等,由于使用方的样式不一,子组件是动态变化的,针对这一情况,就不得不让使用方把子组件视图传递过来,如何来接收这个UI视图,这就是@BuilderParam装饰器的作用。
鸿蒙开发:熟知@BuilderParam装饰器
【04】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-正确安装鸿蒙SDK-结构目录介绍-路由介绍-帧动画(ohos.animator)书写介绍-能够正常使用依赖库等-ArkUI基础组件介绍-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
【04】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-正确安装鸿蒙SDK-结构目录介绍-路由介绍-帧动画(ohos.animator)书写介绍-能够正常使用依赖库等-ArkUI基础组件介绍-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
78 5
【04】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-正确安装鸿蒙SDK-结构目录介绍-路由介绍-帧动画(ohos.animator)书写介绍-能够正常使用依赖库等-ArkUI基础组件介绍-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
|
6天前
|
鸿蒙开发:校验构造传参装饰器@Require
@Require装饰器依赖ArkTs的类型检查,仅在编译阶段拦截类型错误和缺失参数,对于运行时才能确定的动态值,如从网络请求获取的数据,仍需在生命周期函数中进行二次校验。
41 18
|
2天前
鸿蒙开发:wrapBuilder来封装全局@Builder
首先第一点,在同一个UI组件内,同一个wrapBuilder只能初始化一次,第二点就是WrappedBuilder对象的builder属性方法只能在struct内部使用。
鸿蒙开发:V2版本装饰器之@Monitor装饰器
如果要实现@Monitor监听,其变量一定要被@Local、@Param、@Provider、@Consumer、@Computed装饰,未被修饰则无法被监听,还有,如果监听对象的变化,则不建议在一个类中对同一个属性进行多次@Monitor的监听,多次监听,只有最后一个定义的监听方法才会有效。
HarmonyOS NEXT开发-ArkUI六
本文介绍了颜色渐变(线性渐变和径向渐变)与阴影效果的应用,通过具体代码示例展示了如何在组件中实现这些视觉效果,帮助开发者提升界面美观度。君志所向,一往无前,欢迎一起探索! 简介字数:239
16 0
HarmonyOS NEXT开发-ArkUI六
HarmonyOS NEXT开发-ArkUI八
本文介绍了Harmony OS开发中的线性布局技巧,包括交叉轴对齐、自适应缩放及综合实践案例,帮助开发者轻松掌握相关技能。每天学习一个知识点,一起加油!
18 0
HarmonyOS NEXT开发-ArkUI八

热门文章

最新文章

  • 1
    原生鸿蒙版小艺APP接入DeepSeek-R1,为HarmonyOS应用开发注入新活力
    19
  • 2
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
    13
  • 3
    EMAS 性能分析全面适配HarmonyOS NEXT,开启原生应用性能优化新纪元
    9
  • 4
    鸿蒙开发:了解@Builder装饰器
    8
  • 5
    【04】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-正确安装鸿蒙SDK-结构目录介绍-路由介绍-帧动画(ohos.animator)书写介绍-能够正常使用依赖库等-ArkUI基础组件介绍-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
    30
  • 6
    【01】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-优雅草卓伊凡拟开发一个一站式家政服务平台-前期筹备-暂定取名斑马家政软件系统-本项目前端开源-服务端采用优雅草蜻蜓Z系统-搭配ruoyi框架admin后台-全过程实战项目分享-从零开发到上线
    11
  • 7
    Harmony os next~HarmonyOS Ability与页面跳转开发详解
    32
  • 8
    HarmonyOS使用系统图标
    6
  • 9
    【02】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-准备工具安装-编译器DevEco Studio安装-arkts编程语言认识-编译器devco-鸿蒙SDK安装-模拟器环境调试-hyper虚拟化开启-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
    16
  • 10
    鸿蒙H5离线包技术分享
    29