科技>计算机>网络与互联网
OpenHarmony轻量设备开发理论与实战  

OpenHarmony轻量设备开发理论与实战  "

作者:齐耀龙
ISBN:9787121456770
定价:¥149.0
字数:877千字
页数:576
出版时间:2023-06
开本:16开
版次:01-01
装帧:
出版社:电子工业出版社
简介

本书系统地介绍了OpenHarmony轻量设备开发的必备知识。在本书完稿时,相关课程已经在高校完成了三个学期的教学,并持续优化迭代。本书的学习门槛低、内容深入浅出、知识结构合理。本书注重知识间的关联性、连贯性和阶梯性,将计算机理论知识和OpenHarmony实践紧密结合,更加注重实践内容对理论理解的反哺,同步培养知识和能力,“授人以鱼,并且授人以渔”。本书的内容支持目前所有在用的OpenHarmony版本,并且有能力支持未来的新版本,注重教/学效率,创立了“OpenHarmony轻量设备教/学全家桶”。全书共分10章,包括OpenHarmony及其开发套件、搭建OpenHarmony开发环境、OpenHarmony开发入门、OpenHarmony内核编程接口、控制I/O设备、感知环境状态、OLED显示屏的驱动和控制、控制Wi-Fi、网络编程及MQTT编程。本书适合高等院校作为建设OpenHarmony课程的指定教材,可以完善相关专业人才培养体系,也非常适合个人或企业开发者阅读学习。

前言

亲爱的读者朋友,您好!本书将带您进入OpenHarmony的知识殿堂。 OpenHarmony是一个完整的操作系统,在现阶段(截至2023年4月)我们可以使用OpenHarmony开发轻量设备、复杂的富媒体设备,也可以只开发OpenHarmony的上层应用(类似于安卓平板电脑/安卓手机App开发)。本书重点介绍的是轻量设备的相关开发,具备软硬件结合的特性。因此,上层应用开发(纯软件方向)、硬件设计与制造(纯硬件方向)不是本书介绍的重点内容。 在本书中,您将会系统地学习OpenHarmony轻量设备开发的必备知识。 本书有以下几个特点: 第一,学习门槛较低,便于快速入门、快速学习核心知识。入门的门槛高,是现阶段很多OpenHarmony初学者遇到的最大的困难。为了解决这个痛点问题,我将OpenHarmony的知识体系进行了完整的梳理,将知识呈现的方式进行了优化。只有“踏平门槛”,才能让初学者轻松入门、愉悦地进入OpenHarmony的知识殿堂。 第二,文字通俗易懂,内容的呈现由浅入深,阶梯性强。作为一名从业20余年并撰写过十余本高校教材的高等教育工作者,我深知阅读一本过于“文言化”的技术类图书是非常头疼的。因此,我将文字通俗化,让您能够阅读得轻松、理解得透彻,这是本书的重要着力点。另外,我非常尊重学习的规律,将OpenHarmony的知识体系从易到难逐级展开,并且注重知识间的关联性、连贯性和阶梯性。您在阅读本书时会发现,每向前走一步,都会有一种水到渠成的感觉。这将使您持续地拥有学习动力和积极的学习心态,不会出现“从入门到放弃”的尴尬结果。从这个角度来讲,本书非常适合个人开发者作为上手OpenHarmony开发的“第一本书”。 第三,将计算机的理论知识和OpenHarmony实践紧密结合,并以案例驱动。我会打通理论和实践环节,让您学有所用。比如,大学本科阶段的计算机专业设置了“数字电路”“操作系统”“数据结构”“计算方法”“C语言程序设计”“计算机网络”“数据库原理”等课程。对这些课程中的相关理论知识,我都进行了恰当的融合。理论可以指导实践,而实践反过来又能帮助我们加深对理论的理解。从这个角度来讲,本书不仅适合个人开发者阅读学习,还非常适合高校将其作为建设OpenHarmony应用型课程的教材,完善计算机专业人才培养体系。 第四,本书有对应的慕课视频,视频与本书章节同步、内容翔实,时长达到了1440分钟以上。在慕课中,我会“手把手”地教学,带着您逐行编程,您可以边看边练。这样可以帮助您快速地消化理论和实践知识,并且建立“编程感”。 第五,本书采用了“知识主线+能力辅线”的双线结构。我既讲授知识本身,又培养您的自主学习能力,也就是人们常说的“授人以渔”。

目录

目  录 第1章 OpenHarmony及其开发套件 | 1 1.1 初识OpenHarmony | 2 1.1.1 OpenHarmony是什么 | 2 1.1.2 OpenHarmony的重要性 | 3 1.1.3 OpenHarmony南向开发与北向开发 | 4 1.1.4 OpenHarmony的版本 | 5 1.1.5 OpenHarmony官网 | 7 1.1.6 OpenHarmony官网文档获取 | 8 1.1.7 本书内容概述 | 8 1.1.8 学习本书需要的基础知识 | 9 1.2 润和Pegasus智能家居开发套件简介 | 10 1.2.1 海思Hi3861V100芯片简介 | 11 1.2.2 核心板 | 12 1.2.3 底板 | 14 1.2.4 交通灯板 | 15 1.2.5 炫彩灯板 | 16 1.2.6 环境监测板 | 17 1.2.7 OLED显示屏板 | 18 1.2.8 NFC扩展板 | 19 1.2.9 开发套件的组装 | 20 1.2.10 轻量系统开发快速入门 | 23 第2章 搭建OpenHarmony开发环境 | 26 2.1 搭建开发环境(Windows系统) | 26 2.1.1 安装虚拟机工具 | 26 2.1.2 安装CH340芯片驱动 | 31 2.1.3 安装串口调试工具 | 31 2.1.4 安装开发工具 | 35 2.1.5 安装烧录工具 | 37 2.1.6 首次烧录运行 | 39 2.2 搭建编译环境(Ubuntu系统) | 43 2.2.1 安装Ubuntu系统 | 43 2.2.2 配置编译环境 | 56 2.2.3 使用预搭建的编译环境 | 63 2.3 下载和编译OpenHarmony源码 | 67 2.3.1 获取OpenHarmony源码 | 67 2.3.2 源码目录简介 | 73 2.3.3 编译源码 | 73 2.3.4 烧录固件 | 75 2.3.5 在智能家居开发套件上运行 | 78 2.3.6 OpenHarmony的系统架构 | 79 2.4 构建开发网络 | 81 2.4.1 物联网 | 81 2.4.2 构建适用于个人和团队的开发网络 | 82 2.4.3 构建适用于学校机房的开发网络 | 83 2.4.4 AT命令介绍 | 90 2.4.5 使用AT命令建立网络连接 | 91 2.4.6 使用MobaXterm脚本快速联网 | 93 第3章 OpenHarmony开发入门 | 95 3.1 HelloWorld | 95 3.1.1 编写程序源码 | 95 3.1.2 编译源码 | 98 3.1.3 烧录固件 | 98 3.1.4 通过串口调试工具查看程序的运行结果 | 98 3.1.5 OpenHarmony系统启动的8个阶段 | 99 3.1.6 VS Code的IntelliSense设置 | 100 3.1.7 VS Code解析.gn文件 | 102 3.1.8 屏蔽OpenHarmony内置的XTS | 103 3.1.9 快速查找文件和代码 | 104 3.1.10 快速重复烧录和测试最佳实践方案 | 105 3.2 轻量系统的编译构建 | 107 3.2.1 OpenHarmony的编译构建系统 | 107 3.2.2 编译构建系统的配置规则 | 111 3.3 编译构建系统的使用 | 122 3.3.1 案例:新增组件 | 122 3.3.2 案例:新增产品解决方案 | 125 3.3.3 案例:组件/模块开发 | 129 3.4 轻量系统的数据持久化 | 135 3.4.1 数据持久化概述 | 135 3.4.2 键值存储 | 136 3.4.3 键值存储案例程序 | 139 3.4.4 文件操作 | 142 3.4.5 文件操作案例程序 | 142 第4章 OpenHarmony内核编程接口 | 146 4.1 OpenHarmony内核简介 | 146 4.1.1 内核子系统 | 146 4.1.2 轻量系统内核简介 | 148 4.1.3 小型系统内核简介 | 150 4.1.4 标准系统内核简介 | 152 4.1.5 CMSIS简介 | 153 4.1.6 CMSIS-RTOS2 | 154 4.2 线程管理 | 155 4.2.1 线程 | 156 4.2.2 API介绍 | 156 4.2.3 内核编程的VS Code IntelliSense设置 | 158 4.2.4 案例程序1 | 159 4.2.5 案例程序2 | 162 4.3 通用等待功能 | 166 4.3.1 时间管理 | 167 4.3.2 API介绍 | 169 4.3.3 案例程序 | 172 4.4 定时器管理 | 176 4.4.1 软定时器 | 176 4.4.2 API介绍 | 177 4.4.3 案例程序 | 179 4.5 互斥锁管理 | 183 4.5.1 互斥锁 | 183 4.5.2 API介绍 | 190 4.5.3 案例程序 | 192 4.6 信号量管理 | 196 4.6.1 信号量 | 197 4.6.2 API介绍 | 200 4.6.3 案例程序 | 202 4.7 消息队列管理 | 210 4.7.1 消息队列 | 211 4.7.2 API介绍 | 213 4.7.3 案例程序 | 214 第5章 控制I/O设备 | 220 5.1 GPIO输出电平 | 220 5.1.1 GPIO | 220 5.1.2 轻量设备的IoT接口现状 | 221 5.1.3 相关API介绍 | 223 5.1.4 核心板的可编程LED灯介绍 | 225 5.1.5 IoT编程的VS Code IntelliSense设置 | 225 5.1.6 案例程序 | 226 5.1.7 给未知函数或库增加IntelliSense | 228 5.2 GPIO按键输入 | 229 5.2.1 轮询与中断 | 229 5.2.2 相关API介绍 | 230 5.2.3 核心板的按键介绍 | 231 5.2.4 案例程序:轮询方式 | 231 5.2.5 案例程序:中断方式 | 235 5.2.6 案例程序:中断方式低能耗 | 238 5.3 PWM输出方波 | 241 5.3.1 PWM | 241 5.3.2 相关API介绍 | 246 5.3.3 交通灯板的蜂鸣器介绍 | 247 5.3.4 案例程序:控制蜂鸣器发声 | 247 5.3.5 案例程序:控制蜂鸣器播放音乐 | 250 5.3.6 案例程序:控制蜂鸣器的音量 | 258 5.3.7 交通灯板的三色灯介绍 | 261 5.3.8 案例程序:交通灯演示 | 261 5.3.9 炫彩灯板的三色灯介绍 | 267 5.3.10 案例程序:控制三色灯的亮度 | 269 第6章 感知环境状态 | 275 6.1 使用ADC获取模拟传感器的数据 | 275 6.1.1 ADC | 275 6.1.2 相关API介绍 | 278 6.1.3 炫彩灯板的光敏电阻介绍 | 278 6.1.4 案例程序:通过光敏电阻感知环境光 | 279 6.1.5 炫彩灯板的人体红外传感器介绍 | 282 6.1.6 案例程序:通过人体红外传感器感知人体靠近 | 283 6.1.7 案例程序:智能夜灯 | 285 6.1.8 OLED显示屏板的按键介绍 | 291 6.1.9 案例程序:使用ADC值区分同一个引脚的不同按键 | 291 6.2 使用ADC获取可燃气体传感器的数据 | 298 6.2.1 可燃气体传感器 | 298 6.2.2 环境监测板的MQ-2可燃气体传感器介绍 | 298 6.2.3 案例程序:使用可燃气体传感器感知空气状态 | 299 6.2.4 案例程序:可燃气体报警器 | 302 6.3 使用I2C获取数字温湿度传感器的数据 | 306 6.3.1 I2C | 306 6.3.2 相关API介绍 | 309 6.3.3 环境监测板的AHT20数字温湿度传感器介绍 | 310 6.3.4 案例程序:实现AHT20数字温湿度传感器的驱动程序 | 311 6.3.5 案例程序:获取AHT20数字温湿度传感器的状态 | 326 第7章 OLED显示屏的驱动和控制 | 330 7.1 I2C驱动OLED显示屏 | 330 7.1.1 OLED简介 | 330 7.1.2 OLED显示屏板介绍 | 330 7.1.3 OLED的初始化 | 331 7.1.4 在OLED显示屏上绘制画面 | 334 7.1.5 案例程序:实现OLED显示屏简化版驱动程序 | 339 7.1.6 在OLED显示屏上绘制ASCII字符 | 346 7.1.7 案例程序:在OLED显示屏上显示西文字符 | 349 7.2 在OLED显示屏上显示汉字 | 363 7.2.1 中文字体 | 363 7.2.2 定义中文字库 | 363 7.2.3 显示汉字 | 366 7.2.4 案例程序 | 366 7.3 第三方OLED显示屏驱动库 | 373 7.3.1 驱动库简介 | 373 7.3.2 驱动库的源码结构 | 373 7.3.3 驱动库API介绍 | 374 7.3.4 增强驱动库功能 | 374 7.3.5 驱动库的接入方法 | 375 7.3.6 案例程序 | 377 7.4 二维码生成器模块 | 387 7.4.1 模块简介 | 387 7.4.2 模块的源码结构 | 387 7.4.3 模块API介绍 | 388 7.4.4 模块的接入方法 | 389 7.4.5 案例程序 | 391 第8章 控制Wi-Fi | 396 8.1 Wi-Fi的基本概念 | 396 8.1.1 Wi-Fi简介 | 396 8.1.2 Wi-Fi的连接过程 | 399 8.1.3 Wi-Fi工作模式简介 | 400 8.2 Wi-Fi STA模式编程 | 401 8.2.1 Wi-Fi编程的VS Code IntelliSense设置 | 401 8.2.2 相关API介绍 | 402 8.2.3 扫描Wi-Fi热点 | 404 8.2.4 案例程序:扫描Wi-Fi热点 | 404 8.2.5 连接Wi-Fi热点 | 411 8.2.6 案例程序:连接Wi-Fi热点 | 411 8.3 Wi-Fi AP模式编程 | 419 8.3.1 相关API介绍 | 419 8.3.2 创建Wi-Fi热点 | 420 8.3.3 提供DHCP服务 | 421 8.3.4 案例程序:创建Wi-Fi热点 | 421 8.4 EasyWiFi模块 | 430 8.4.1 EasyWiFi模块简介 | 430 8.4.2 EasyWiFi模块的源码结构 | 430 8.4.3 EasyWiFi模块的API介绍 | 430 8.4.4 模块的接入方法 | 431 8.4.5 案例程序 | 433 第9章 网络编程 | 439 9.1 TCP客户端编程 | 439 9.1.1 LwIP开源项目简介 | 439 9.1.2 相关API介绍 | 440 9.1.3 网络编程的VS Code IntelliSense设置 | 440 9.1.4 TCP客户端的工作流程 | 441 9.1.5 网络工具netcat | 442 9.1.6 案例程序 | 442 9.2 TCP服务端编程 | 450 9.2.1 相关API介绍 | 450 9.2.2 TCP服务端的工作流程 | 451 9.2.3 案例程序 | 452 9.3 UDP客户端编程 | 460 9.3.1 相关API介绍 | 460 9.3.2 UDP客户端的工作流程 | 461 9.3.3 案例程序 | 461 9.4 UDP服务端编程 | 468 9.4.1 相关API介绍 | 468 9.4.2 UDP服务端的工作流程 | 469 9.4.3 案例程序 | 470 第10章 MQTT编程 | 478 10.1 MQTT简介 | 478 10.1.1 MQTT | 478 10.1.2 MQTT的应用场景 | 479 10.1.3 MQTT的技术特性 | 479 10.1.4 广义上的发布/订阅模式 | 480 10.1.5 MQTT的订阅与发布模型 | 482 10.2 Paho-MQTT | 486 10.2.1 Paho-MQTT简介 | 486 10.2.2 Paho-MQTT源码的结构 | 488 10.2.3 Paho-MQTT编程的VS Code IntelliSense设置 | 489 10.2.4 Paho-MQTT的编译 | 489 10.2.5 MQTT代理Mosquitto | 491 10.2.6 在设备端发布消息 | 493 10.2.7 在设备端订阅消息 | 494 10.3 MQTT客户端编程 | 494 10.3.1 对Paho-MQTT进行封装 | 495 10.3.2 Paho-MQTT模块的接入方法 | 496 10.3.3 案例程序 | 498 10.4 案例:灯光控制 | 511 10.4.1 灯光控制案例项目简介 | 511 10.4.2 实现灯光控制案例项目 | 512 10.5 案例:环境光采集 | 522 10.5.1 环境光采集案例项目简介 | 522 10.5.2 实现环境光采集案例项目 | 522 10.6 案例:人体感应 | 530 10.6.1 人体感应案例项目简介 | 530 10.6.2 实现人体感应案例项目 | 531 10.7 案例:可燃气体报警 | 538 10.7.1 可燃气体报警案例项目简介 | 539 10.7.2 实现可燃气体报警案例项目 | 539 10.8 案例:温湿度收集 | 547 10.8.1 温湿度收集案例项目简介 | 547 10.8.2 实现温湿度收集案例项目 | 547 10.9 案例:广告屏 | 557 10.9.1 广告屏案例项目简介 | 557 10.9.2 实现广告屏案例项目 | 557

作者简介

编辑推荐

作者寄语

电子资料

www.luweidong.cn

下一个