登录社区云,与社区用户共同成长
邀请您加入社区
本文基于 Hi3861(HarmonyOS LiteOS)智能家居项目实战,完整记录 MQTT 通信从 0 到稳定收发的踩坑全过程:Broker 选择与 MQTTX 配置、Topic 匹配、cJSON 指令解析、无心跳被踢下线、PINGREQ 保活、断线自动重连、AT+CIPSTART 超时、I2C 等不到 ACK 卡死等问题,每个坑都附真实串口日志、原因分析和可直接复用的代码。
图 1:C/C++ 三方库适配封面图,用来概括本文主题和适配边界。C/C++ 库能在 Linux 上编译,不代表可以直接放进 HarmonyOS 应用。目标三元组、libc、符号导出、动态库目录和 ABI 不一致,都会让安装或运行阶段失败。这篇按源码适配链路展开:先把库编成 OHOS 目标产物,再接入应用工程,最后通过 Native 包装层给 ArkTS 页面使用。图 2:C/C++ 三方库适配流
摘要:本文介绍了Flutter开发中不可变对象状态管理的痛点及解决方案——copy_with_extension_gen库。该工具通过代码生成自动创建类型安全的copyWith方法,避免了手动编写大量重复代码的问题。文章详细解析了其核心原理(基于Extension Method)、基础配置与进阶用法(包括空值处理和字段忽略),并展示了在OpenHarmony应用开发中的实战应用场景(如复杂表单状态
也是C/C++库鸿蒙化的核心,该文件定义了:库的基础元信息、源码下载地址、交叉编译环境配置、编译构建逻辑、打包安装路径、测试准备、环境清理等所有核心流程。的定义,所有适配工作均围绕「固定6个文件」展开,无任何额外开发工作,所有C/C++库的适配流程、文件结构完全一致。这是本次指南的核心内容,鸿蒙的底层能力、三方库生态均依赖C/C++库的支撑,官方对C/C++库的鸿蒙化适配做了。,统一采用「交叉编译
本文摘要: 介绍了一种利用TypeScript生成mavlink消息并发送的实现方法。通过mavlink生成工具直接生成TS代码,避免了手动创建和编码每条消息的繁琐过程。作者展示了如何创建自定义降落消息(CommandLong),通过LinkMsgManager静态方法构造消息对象。在NDK层实现了mavLinkObject2buffer函数,将TS对象转换为二进制数据包,并使用mavlink_m
本文详细介绍了在鸿蒙开发中如何通过C代码调用ArkTS类的方法。首先需要创建NDK工程和ArkTS类并暴露SayHello方法,然后在C代码中实现对该方法的调用及对外暴露。关键步骤包括:在.cpp文件中编写调用逻辑、在Index.d.ts中导出方法、在ArkTS中进行测试验证,尤其是必须在build-profile.json5中配置ArkTS导出类。文章还提供了相关代码示例和参考链接,帮助开发者解
FFRT框架支持两种任务依赖构建方式:任务依赖和数据依赖。任务依赖通过任务句柄建立明确执行顺序,适用于流程控制场景;数据依赖通过数据签名建立生产者-消费者关系,适用于数据驱动的并行计算。框架自动处理三种数据依赖关系:读写、写读和写写依赖。示例展示了流媒体视频处理的任务依赖编排和斐波那契数列的数据依赖计算,体现了FFRT在动态构建任务依赖图和高并行度计算方面的优势。
本文介绍了在鸿蒙NDK开发中如何通过C语言调用ArkTS方法。关键使用napi_call_function函数实现C与ArkTS的交互,详细说明了函数参数及实现步骤:获取参数、验证参数类型、创建参数数组后调用JS函数。提供了完整的C代码示例,包括模块初始化和错误处理,并展示了如何在JS层调用该原生方法。最后提到需要将C接口暴露给TS层,为开发者解决了C/ArkTS互调问题。
本文系统性地介绍了操作系统中断机制的核心概念,包括中断源、中断控制器和CPU的协同工作,以及中断处理流程中的关键环节。通过生动的"海公公"比喻,阐释了中断控制器作为CPU与外设之间仲裁者的重要作用。文章详细讲解了中断的硬件架构、中断源分类(外部/内部)、中断类型(PPI/SGI/SPI)以及中断处理过程中的优先级管理、中断请求触发机制等核心概念。最后提及中断向量表作为中断服务程
鸿蒙系统调用全流程解析:从用户态到内核态的七段代码追踪 本文通过一张流程图和七段代码详细剖析了鸿蒙操作系统从用户态到内核态的系统调用全过程。关键环节包括: 应用程序通过mq_open发起系统调用 库函数将调用号存入R7寄存器,参数存入R0-R3 SVC指令触发模式切换至内核态 汇编处理程序_osExceptSwiHdl保存用户现场 内核根据调用号执行注册函数SysMqOpen 处理完成后恢复用户现
鸿蒙的HAP包中的C调用HSP包中的C
本文介绍了鸿蒙系统(HarmonyOS)中器件驱动的移植方法,主要包括LCD、触摸屏(TP)和WLAN三种设备的驱动开发流程。 对于LCD驱动移植,需要在panel目录中创建驱动文件,通过RegisterPanel接口注册模型实例,并在device_info.hcs配置文件中添加相应模块信息。 触摸屏驱动移植需要在touchscreen目录创建驱动文件,实现ChipDevice模型的初始化、检测、
本文介绍了在鸿蒙Niobe Wifi IoT开发板上使用CMSIS 2.0接口进行定时器开发的方法。文章首先分析了osTimerNew()和osTimerStart()两个核心API的功能和使用要点,然后详细讲解了软件设计思路:通过创建两个周期性定时器(1秒和3秒间隔),分别触发对应的回调函数打印日志。编译调试部分说明了如何修改BUILD.gn文件将示例代码加入编译,最后展示了运行结果:定时器1每
FFRT串行队列基于协程调度模型,提供高效消息队列功能,支持异步通信、流量削峰等场景。主要功能包括队列创建销毁、任务延迟、串行调度、任务取消/等待/优先级设置等。通过异步日志系统示例展示了FFRT的使用方式:主线程提交日志任务到队列,后台线程处理写入文件操作,既保证日志顺序性又避免阻塞主线程。关键接口包括ffrt_queue_create、ffrt_queue_destroy和ffrt_queue
这篇文章介绍了鸿蒙全栈开发中的GPIO接口使用指南。主要内容包括: GPIO接口概述:定义了操作GPIO管脚的标准方法集合,如设置方向、读写电平、中断配置等。 接口分类说明:详细列出了初始化、方向配置、读写操作、中断配置等各类接口的功能描述。 使用指导: 提供了GPIO使用流程图 强调需要结合开发板电路图确定GPIO管脚号 包含开发板电路原理图示例 注意事项: 方向暂不支持高阻态 电平值可为低电平
FFRT并发队列通过设置任务优先级和队列并发度实现高效并行处理。银行服务系统示例展示了VIP用户优先处理机制,通过设置并发度控制窗口数量、优先级区分用户等级。主要接口包括队列创建/销毁、任务提交/取消/等待等。使用需注意属性初始化/释放、合理设置并发度等约束。该机制有效平衡系统资源利用与任务优先级管理,适合需要高效并发的应用场景。
本文包含两部分内容:鸿蒙开发系列文章推荐和内核技术要点解析。 鸿蒙开发系列文章探讨了移动开发行业前景、鸿蒙应用与系统开发比较、嵌入式开发转型、大前端开发者转鸿蒙等问题,并提供了鸿蒙全栈学习笔记。 内核技术解析重点讲述了: 任务(线程)是CPU执行指令的基本单位,内核通过任务调度管理CPU资源 多线程的实现机制,包括main函数和新线程的入口处理 定时器是通过高优先级系统任务实现的 Percpu结构
鸿蒙内核互斥锁机制解析 本文深入剖析了鸿蒙内核中的互斥锁实现机制。互斥锁主要用于解决线程间共享内存竞争问题,与自旋锁形成互补。鸿蒙默认采用递归锁设计,允许同一线程多次加锁。文章详细解读了互斥锁的数据结构、初始化流程和三种申请模式(无阻塞、永久阻塞、定时阻塞),并重点分析了核心函数OsMuxPendOp的实现逻辑。当高优先级任务等待低优先级任务释放锁时,系统会临时提升低优先级任务的优先级,确保锁能及