harmonyOS的电脑界面,HarmonyOS应用开发 — 设备虚拟化特性开发

一、介绍

本篇将实现的内容

通过本活动,您将能够使用我们的DevEco Device Tool完成摄像头设备的开发。达到以下效果:在使用华为手机畅联通话的过程中,可以将开发板摄像头虚拟化为手机的摄像头,在手机上展示摄像头设备拍摄到的画面

您将会学到什么

如何通过HPM包管理器获取基于HarmonyOS的具有设备虚拟化能力的摄像头解决方案工程。 使用DevEco Device

Tool开发环境完成代码开发、代码安全检查、编译、调试、烧录全流程。

二、您需要什么

1. 硬件要求

H3518EV300+H3861WiFi模组的开发板、配套摄像头

华为手机(EMUI 10.1)

PC电脑

2. 软件要求

VS Code。

DevEco Device Tool插件。

3. 需要的知识点

硬件基础开发能力

C语言基础能力

提示:所有软硬件环境已经在CodeLab现场为大家准备好了

三、能力接入准备(可选)

参考文档第"3 环境搭建"

上述环境在CodeLab现场已经为大家准备好。

四、Codelabs操作步骤(1、2、3···)

1. 访问站点https://hpm.cbg.huawei.com/#/home,如下图

f1c150cd75e02e29fee69de3fe5d7a63.png

2. 点击"直接下载"获取到文件"xxx.zip",如果没有登录,会弹出登录页面,输入用户名,密码。Codelab现场已经登录。

3. 打开vscode编辑器,找到"Welcome页面->Create Project" 如下图

在插件welcome首页,选择Import Project按钮

a5d443ec1940c3f1d81ac17c461d3aa8.png

出现下面的窗口,选择源码路径,点击Import:

9d07304abb4972483043a0597015bf39.png

导入源码后的窗口,左边栏会显示源码的目录结构:

5892f97e7d0b35ea52b4f5a3833eac25.png

4. 点击

e26006c8d7bc932aa65b44f6f3c3babd.png

打开TERMINAL窗口,如下图:

1abcf949990af6187e914dfbabfc280e.png

5. 在TERMINAL窗口中,输入命令hpm install,如下图:

971bb30f653aa111b28e60838b842897.png

6. hpm install命令行执行完毕,源码工程就准备就绪了。

7. 代码片段

Camera虚拟化接口适配,此类接口用于定义DV Engine对智能设备Camera硬件的调用接口,智能设备厂商需实现对应的libdmsdpcamerahandler.so。如果智能设备厂商不具备Camera硬件或者不需要将Camera硬件虚拟化,不需要关注此接口,默认不实现此so即可。下面为实现功能前的部分接口代码,所属文件为\vendor\hisi\camera\dvkit_product\sample\ohos3518ev300\dvkit\dvkit_camera\dmsdp_camera_sdk.c:

将OpenCamera接口函数补充完整,就可以实现camera的虚拟化功能,代码如下:

int32_t OpenCamera(const DMSDPCameraParam *param)

{

if (param == NULL) {

return DMSDP_ERR_INVALID_PARAMETER;

}

if (!IsCameraIdValid(param->id, param->idLen)) {

LOGD("OpenCamera camera id invalid");

return DMSDP_ERR_INVALID_PARAMETER;

}

LOGD("OpenCamera sdk camera=%s,width=%d,height=%d,fps=%d,dataType=%d", param->id, param->width, param->height,

param->fps, param->dataFormat);

int32_t ret = VideoStartPIPE(param->dataFormat);

return ret;

}

代码目录如下:

ba2d0d9bab653eb817647e9be87574ce.png

上述代码会被编进应用程序sample_dvkit中,该应用程序在板子的/bin/目录下,见下图:

ae4fefcc94055b8ca9387ecc54c5bd3d.png

8. 安全检查

选择需要安全检查的代码目录,右键:code check

ab90f621cd2530dab8ca21bbc36b4ba5.png

点击错误项,跳转到对应文件的对应代码行数

9. HarmonyOS Demo源码Linux编译

通过"Terminal""New Terminal"打开终端窗口,其中

方框1表示新建终端窗口按钮;

方框2表示打开终端窗口后的界面;

方框3,通过SSH连接Linux机器,并输入Linux机器的账号和IP地址:ssh –p22 root@10.30.237.175;

方框4,输入Linux机器的密码N6O%sUFoXBD!,,成功连上Linux机器;

由于编译代码需要root权限,如果使用其它非root账号连接Linux机器,这需要在终端中输入sudo su命令切换成root账号或者将源码文件夹设置权限为777;

接下来的操作均是在下方的终端工具中,完全是等同Linux机器下的操作,如编译的话,则进入源码路径,输入编译脚本即可;

01f79643bd9943dda89dfb0b8f3280d9.png

其中编译脚本命令为python build.py ipcamera -p hi3518ev300_liteos_a -b debug,见下图:

a79f2e74085f274a04cac99c9af214e4.png

成功编译完成如下图:

859bf0beae0df30a33b78ab469bdf2e6.png

编译出的结果在out目录下,有三个需要烧录的文件OHOS_Image.bin、rootfs.img、userfs.img,一个可以调试的可执行程序OHOS_Image如下图:

1159da522239d5fef1d305377491507e.png

如果非首次编译,并且未改动内核代码,文件OHOS_Image.bin和OHOS_Image可能需要去如下目录下:

\vendor\hisi\hi35xx\hi35xx_init\hi3518ev300

u-boot-hi3518ev300.bin的路径为:

./vendor/hisi/camera/hi3518ev300/Hi3516EV200_SDK_V6.0.0.1_B010/osdrv/pub/u-boot-hi3518ev300.bin

10. HarmonyOS源码烧录

目前烧录方法主要是USB烧录:

USB烧录具体步骤如下:

打开插件,找到方框1的按钮Configure,左键点击;

弹出的窗口,找到方框2的按钮Burn,左键点击;

右侧窗口找Burning Mode选择usbport;

下方的Dependent Tools的依赖文件,需要选择依赖文件的存放目录HiBurnCmdLine-v5.3.30,依赖文件单独提供,搭建vscode环境时提供;

a4658853771ffe7e21da83e5a25ff6fe.png

在窗口下方的Burn Files中选择待烧录的三文件路径,分别是u-boot-hi3518ev300.bin(单独提供,不需要编译生成)、OHOS_Image.bin(在编译OHOS源码时生成,在out目录下,上面的编译源码已经提及)、rootfs.img(在编译OHOS源码时生成,在out目录下,上面的编译源码已经提及)、userfs.img(在编译OHOS源码时生成,在out目录下,上面的编译源码已经提及),烧录的起始地址如下图所示,最后点击保存按钮,USB烧录的配置完成,其中下图1对应的u-boot-hi3518ev300.bin,2对应的是OHOS_Image.bin,3对应的是rootfs.img,4对应的是userfs.img:

9b7e4f4e802c18240b5fa6ccf0fde0b4.png

如下图,先点击下方的Burn按钮,会弹出选择串口的打印,输入开发板对应的串口号

a195695bf02fac07d6f7e6cb7dfa3cd4.png

出现下图,需要插拔下电源:

16169fb4a050bd10b199d7a65ca4dbbc.png

显示擦除完uboot后如果提醒还需要重新插拔下电源,则需要插拔下电源开关,log为Please power off and restart the board within 15 seconds如下:

92e4e5d06371d96dcf1758d650c92e61.png

下图显示正在烧录:

14ef9586fb5acf6809d61bb4f7bebdbd.png

烧录完成:

80899332eb94bd80aaae41ab33a44e9d.png

烧录完成后,通过下方的串口功能,设置uboot的参数

setenv bootargs 'console=ttyAMA0,115200n8 root=flash fstype=jffs2 rw rootaddr=7M rootsize=8M'

setenv bootcmd 'sf probe 0;sf read 0x40000000 0x100000 0x600000;mw 0x112c0048 1a04 1;mw 0x112c004c 1004 1;mw 0x112c0064 1004 1;mw 0x112c0060 1004 1;mw 0x112c005c 1004 1;mw 0x112c0058 1004 1;mw 0x120C0020 0430 1;go 0x40000000'

saveenv

reset

327f47171519ad6b3e3762d4899edb0b.png

最后出现下面的结果,则表示系统已经正常启动:

11. HarmonyOS源码单步调试

目前调试主要支持的是GDB调试,还有LLDB调试;

GDB调试:

通过"Configure"“Debug"打开调试配置页,然后将方框4中的调试类型选"openocd-debug-gdb”;

方框5表示GDB调试过程中需要依赖的软件名称、安装状态、配置路径;

方框6表示调试过程中经常涉及的一些参数设置,包括:

Executable File:内核文件,选择out目录下编译生成的内核文件,如liteos;

Symbol Files:应用程序符号表文件,请手动配置程序符号表文件所在路径;

OpenOCD Load Commands:OpenOCD加载命令,保持默认值"init"即可;

Set Substitute Path:当源码在Linux环境下进行编译,借助IDE进行烧录、调试时,请设置

映射路径,把Linux路径映射到Windows,格式参考提示

“set substitute-path {Linux路径} {映射的后的Windows路径}”;

Default Breakpoint Address:默认的断点位置,启动调试功能后,程序会自动在该位置停止;

Restart Commands:重启调试任务时,工具发给单板的命令,保持默认值即可;

Max Breakpoints:设置断点的最大数量(主要是硬件断点,不同的硬件可能存在差异),当用

户在调试过程中添加的断点数过多,可能导致调试功能崩溃;

e529776bd3074e7cb54c5a9591121b5a.png

f538bebbafc73dc725962e1477dcd6f1.png

12. HUAWEI DevEco Device Tool终端工具

IDE还集成了一些常用的工具,满足开发者不同的需求:

串口工具

当开发板链接PC时,通过点击Visual Studio Code最下面的状态栏中的"Serial",通过配置端口号、波特率、数据位、停止位串口参数,可以打开一个串口工具。通过串口工具可以执行一些常见的操作,包括:设置u-boot的环境参数、进入开发板中烧录的HarmonyOS系统、调试等。

五、恭喜你

到这里你已经完成了本次开发过程。您可以通过以下方式检验开发过程是否正确

请使用华为手机A,打开智慧生活APP,通过添加设备,把刚开发完成的智能设备添加到智慧生活APP中。

详细步骤如下:

a) 设备启动后,会默认启动一个AP等待手机连接,此时打开手机上的智慧生活APP,下图为智慧生活APP界面:

9e119432ad91a26a2501ac05c72637ac.png

b)开始添加设备,点击右上角"+",“添加设备”,进行设备搜索,添加设备界面如下:

0e2c836f7688d2c9a58cb796107f9906.png

c)搜索设备,搜索设备界面如下:

c3ee60d5a393edffbf1245fc79920398.png

d)搜索到的所要连接的设备后点击"连接",此时需要输入当前WiFi信息,输入WIFI SSID和密码后,点击"下一步"。 点击"确定"后开始连接。

e)连接后出现下面的界面,选择房间号,点击"完成",即完成了设备添加:

7d510a44f7608ceb41711604fd93b8bb.png

用另外一台手机的畅联通话APP拨打A手机。接通后,在A手机的屏幕左上角点击更多设备,可以发现开发完的智能设备,点击该设备,选择把摄像头虚拟化成A手机的外设,B手机视频通话能看到的界面切换成了智能设备拍摄到的画面。

具体步骤如下:

a)打开手机通话(EMUI11.0之前的版本)切换至畅联通话页或打开畅联通话APP(EMUI11.0及之后版本)如下图,输入被呼叫手机ID号,拨通畅联通话:

7379dad9a5a13804a5a679caeb70fdc8.png

b)点击测试手机左上角虚拟化按键,进行搜索,如图搜索到"XX全景摄像头":

94f889573df64646933f9b886e012015.png

c)点击搜索到的设备,虚拟化摄像头成功:

79024e1f5d2331d5f3c673e6f7eb67f6.png

【如果您想学习HarmonyOS 应用开发基础教程 请猛戳】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值