今日看点

鸿蒙HarmonyOS技术社区

发表于话题:HarmonyOS 2
发布时间:2021-06-02

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

 

您将会学到什么

如何通过HPM包管理器获取基于HarmonyOS的具有设备虚拟化能力的摄像头解决方案工程。 使用DevEco Device
Tool开发环境完成代码开发、代码安全检查、编译、调试、烧录全流程。
二、您需要什么
1. 硬件要求

1.H3518EV300+H3861WiFi模组的开发板、配套摄像头
2.华为手机(EMUI 10.1)
3.PC电脑

2. 软件要求
VS Code。
DevEco Device Tool插件。


3. 需要的知识点
硬件基础开发能力
C语言基础能力
提示:所有软硬件环境已经在CodeLab现场为大家准备好了

 

三、能力接入准备(可选)
参考文档第"3 环境搭建"
上述环境在CodeLab现场已经为大家准备好。

 

四、Codelabs操作步骤(1、2、3···)
1. 访问站点https://hpm.harmonyos.com/#/home,如下图,选择摄像头类产品

2. 进入页面后点击"直接下载"下载文件到Linux虚拟机映射的网络驱动器路径并解压。

3. 打开vscode编辑器,在HUAWEI DevEco Device Tool插件welcome首页,选择Import Project,如下图:

出现下面窗口,选择上一步解压文件所在路径,点击Import:

4. 打开TERMINAL窗口

如下图:

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

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

7. 添加代码片段
打开 ./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; } /* camera paramter convert */ 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; }

8. 安全检查
选中需要安全检查的代码文件或者目录,点击右键,选择"Code Check"进行安全检查

检查完毕后,点击具体的错误项,跳转到对应文件的对应代码行。

9. HarmonyOS Demo源码编译
通过Terminal > New Terminal打开终端窗口,其中
方框1表示新建终端窗口按钮;
方框2表示打开终端窗口后的界面;
方框3在终端窗口中通过SSH连接Linux机器,并输入Linux机器的账号和IP地址:ssh–p22 account@IP;
方框4 输入Linux机器的密码,成功连上Linux机器;

在终端窗口执行cd进入源码路径,输入编译脚本命令:python build.py ipcamera -p hi3518ev300_liteos_a -b debug,见下图:

成功编译完成如下图:

编译结果位于out目录。待烧录文件:OHOS_Image.bin、rootfs.img、userfs.img;调试可执行文件:OHOS_Image,图示如下:

如果out目录下不能找到对应的文件,则从./vendor/hisi/i35xx/hi35xx_init/hi3518ev300 目录中查找OHOS_Image.bin、OHOS_Image。

 

10. HarmonyOS镜像烧录
目前烧录方法主要是USB烧录,具体步骤如下:
1)打开插件,找到方框1的按钮Configure,左键点击;
2)弹出的窗口,找到方框2的按钮Burn,左键点击;
3)右侧窗口找Burning Mode选择usbport;
4)下方的Dependent Tools的依赖文件,需要选择依赖文件的存放目录HiBurnCmdLine-v5.3.30,依赖文件单独提供;

5)在窗口下方的Burn Files中选择待烧录文件的路径,分别是u-boot-hi3518ev300.bin(./vendor/hisi/camera/hi3518ev300/Hi3516EV200_SDK_V6.0.0.1_B010/osdrv/pub/u-boot-hi3518ev300.bin)、OHOS_Image.bin、rootfs.img、userfs.img,烧录的起始地址如下图所示,最后点击保存按钮,USB烧录的配置完成。如下图:其中标记1对应u-boot-hi3518ev300.bin,标记2对应OHOS_Image.bin,标记3对应rootfs.img,标记4对应userfs.img:

6)点击Burn按钮,输入开发板对应的串口号:

烧录过程中出现"Please power off and restart the board within 15 seconds"如下图所示,则复位单板:

7)烧录完成:

烧录完成后,关闭当前终端窗口。点击下图所示"串口"按钮,打开串口终端, 

输入如下命令:

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

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

11. HarmonyOS源码单步调试
目前调试支持GDB调试和LLDB调试。如下以GDB调试为例来介绍单步调试:
通过Configure > Debug打开调试配置页,将方框4中调试类型选为"openocd-debug-gdb";
方框5 GDB调试过程中需要依赖的软件名称、安装状态、配置路径;
方框6 调试过程中经常涉及的一些参数设置,包括:
1)Executable File:选择内核文件OHOS_Image ;
2)OpenOCD Load Commands:OpenOCD加载命令,保持默认值"init"即可;
3)Set Substitute Path:当前源码在Linux环境下进行编译,借助IDE进行烧录、调试时,设置映射路径,把Linux路径映射到Windows,格式参考提示 "set substitute-path {Linux路径} {映射的后的Windows路径}";
4)Default Breakpoint Address:默认的断点位置,启动调试功能后,程序会自动在该位置停止;
5)Restart Commands:重启调试任务时,工具发给单板的命令,保持默认值即可;
6)Max Breakpoints:设置断点的最大数量(主要是硬件断点,不同的硬件可能存在差异),当用户在调试过程中添加的断点数过多,可能导致调试功能崩溃;

开始调试,点击下图的按钮,

正式进入调试阶段:

 

调试工作界面如下图所示,主要分为调试功能区、调试侧边栏和调试控制台。

启动调试功能后,当代码执行到设置的断点时,程序会暂停,你可以根据调试功能区的按钮进行代码的调试。

调试过程中可以使用IDE查看函数的反汇编和内存的内容,使用快捷键ctrl+shift+p,在弹出的窗口中输入 DevEco Device Tool:View Disassembly(Function),然后再输入函数名字,即可查看当前函数的对应的汇编。输入 DevEco Device Tool:View Memory,输入内存地址和要显示的内存长度,即可显示内存内容:

 

12. 摄像头虚拟化特性验证
1)请使用华为手机A,打开智慧生活APP,通过添加设备,把刚开发完成的智能设备添到智慧生活APP中。

详细步骤如下:

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

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

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

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

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

2)用B手机的畅连通话APP拨打A手机。接通后,在A手机的屏幕左上角点击更多设备,可以发现开发完的智能设备,点击该设备,选择把摄像头虚拟化成A手机的外设,B手机视频通话能看到的界面切换成了智能设备拍摄到的画面。
具体步骤如下:
a)打开手机通话(EMUI10.0之后的版本)切换至畅连通话页或打开畅连通话APP如下图,输入被呼叫手机号,拨通畅连通话:

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

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

 

 恭喜您
您已经成功完成了Codelab并学到了:

如何通过HPM软件包管理器获取基于HarmonyOS的具有设备虚拟化能力的摄像头解决方案。
使用HUAWEI DevEco Device Tool开发环境完成代码开发、代码安全检查、编译、调试、烧录全流程。

 

感谢关注HarmonyOS,如果想学习更多鸿蒙2.0基础教学请点击下面链接
HarmonyOS应用开发 — HelloWorld应用开发E2E体验
https://harmonyos.51cto.com/posts/ids/?id=707

HarmonyOS应用开发-元程序交互
https://harmonyos.51cto.com/posts/ids?id=709

HarmonyOS应用开发-分布式任务调度
https://harmonyos.51cto.com/posts/ids/?id=710

HarmonyOS应用开发-剪切板
https://harmonyos.51cto.com/posts/ids/?id=712

HarmonyOS应用开发-应用偏好数据读写
https://harmonyos.51cto.com/posts/ids/?id=713

HarmonyOS应用开发—UI开发与预览
https://harmonyos.51cto.com/posts/ids/?id=711

HarmonyOS应用开发-基本控件
https://harmonyos.51cto.com/posts/ids/?id=708

HarmonyOS应用开发-视频播放
https://harmonyos.51cto.com/posts/ids/?id=706

 

标签组:[软件] [程序调试] [应用开发

本文来源:https://www.kandian5.com/articles/23991.html

相关阅读

怀孕期间阴道出现褐色分泌物,要尽快就医

阴道分泌物,一般指「白带」,正常呈白色或透明。在孕期出现褐色分泌物,一般是由阴道出血、宫腔胚胎异常或是胎盘异常出血等引起,由于分泌物在阴道停留时间长、排出较晚,就会变成褐色。妊娠期一般分为三个阶段,妊...

2025-10-31

胎梦暗示生女孩?专家拆解梦见小鸟、白色羽毛、晨露含义

自古以来,胎梦就被视为预测胎儿性别和未来发展的重要线索。许多准妈妈在怀孕期间会做各种奇特的梦,其中 梦见小鸟、白色羽毛和晨露 等意象尤为常见,且常被民间解读为可能预示生女孩的征兆。这些梦境究竟蕴含着怎...

2025-10-31

生女孩胎梦大全:梦见花卉、水果、水的预兆与解析!

从古至今,胎梦一直被准父母们视为预测宝宝性别与未来发展的重要线索。本文将深入解析梦见 花卉、水果、水 等常见意象与生女孩之间的神秘联系,为您提供一份详尽的胎梦指南。一、胎梦文化背景与科学认知胎梦,即...

2025-10-31

生女孩胎梦TOP10:月亮、雪花、紫藤花等吉祥梦境盘点

关于生女孩的胎梦,传统解读中往往与 柔和、纯净、优雅的意象 相关联。月亮代表阴柔之美,花朵象征生命的绽放,水元素寓意温柔如水,这些都在文化符号学中与女性特质紧密相连。而现代心理学则认为,这些梦境可能反...

2025-10-31

胎梦里的温柔暗示:梦见月亮、珍珠、蝴蝶大概率生女儿?

在东亚传统文化中,胎梦一直被视为预测胎儿性别和未来命运的重要征兆。当准妈妈们梦见 皎洁的月亮、晶莹的珍珠或翩翩的蝴蝶时,常常会听到"这可能是怀女孩的征兆"的说法。这些美丽而温柔的梦境意象,为何会与女孩...

2025-10-31

生女孩胎梦科学吗?心理学+民间说法双角度解析梦见蝴蝶

在备孕和怀孕期间,许多准父母都会经历各种奇妙的梦境,其中 "梦见蝴蝶" 常被认为与生女孩有关。这种关联不仅存在于中国民间传统中,在世界各地的文化里也有着丰富的解读。本文将从 心理学科学视角 和 民间传...

2025-10-31

生女孩胎梦VS生男孩胎梦:5大关键区别,你梦对了吗?

自古以来,胎梦就被视为预测胎儿性别和未来发展的重要征兆。许多准父母在怀孕期间都会经历各种生动奇特的梦境,这些梦境往往被赋予特殊的含义。在传统文化中, 生女孩和生男孩的胎梦有着显著的区别 ,从梦境内容到...

2025-10-31

社区医生:怀孕别养猫了,二手烟反倒没事!孕妇无语了

河南有一个孕妈妈怀孕五周去社区医院做阴道B超,确定自己有没有怀孕。当时夫妻俩想到怀孕了都非常关注,所以两夫妻都去医院了。而这个孕妈妈的老公有吸烟的习惯,她就希望能跟医生说一下,让老公戒烟,而且她家里面...

2025-10-31

男人抽烟对家庭伤害多大?老婆流产,女儿肺癌,儿子身高少10厘米

虽然每一包香烟上面都写着‘吸烟有害健康’,但是抽烟的人感受到的是烟可以带给他快乐。比如饭后抽一根烟就感觉自己像是神仙一样;比如说在困的时候抽一根烟能够解乏;比如说在无聊的时候抽...

2025-10-31

宝宝摔下床后,别急着立刻扶起来,了解"黄金十秒"很重要

广东中山一位宝妈面对孩子头朝下摔下床后的做法在短视频平台获得了众多网友的称赞。一是她没有慌乱;二是处理方法十分科学,连不少专家都留言夸赞“妈妈的做法让孩子受到的伤害降到最低”、...

2025-10-31