• [技术干货] Pycharm初步上手
    1.Pycharm安装于jetbrains官网https://www.jetbrains.com/下载了Pycharm Edu 2020.3版本。2.配置中文环境由于英语太烂,遂改成中文环境。步骤: file–settings–plugins–搜索Chinese安装插件即可3.熟悉操作3.1 创建项目:首先是下图的三个选项可以为不同项目单独创建Python环境,保存不同项目所需的依赖项,我只简单了解过conda,后面把三个环境的各自特点补充上来。然后“继承全局站点包”与“可用于所有项目”均不用选。3.2 创建python文件:alt+insert可在创建的项目中选择需要创建的文件。3.3 输入测试代码:选择笔者为一门辣鸡专业课写的程序作为测试代码(笔者写这篇文章时还在为这门课成绩担心哈哈)。PyCharm 提供 Intelligent Coding Assistance 功能,可以执行代码补全、代码检查、错误高亮显示和快速修复建议。比如键入 main 并点击 tab 键,PyCharm 会自动补全整个 main 从句。此外,如果你在条件句前忘记键入 if,在该句子最后增添.if 并点击 Tab 键,PyCharm 将修复该 if 条件句。该用法同样适用于 True.while。这即是 PyCharm 的 Postfix Completion 功能,它可以帮助用户减少退格键使用次数。3.4 Debug:可以设置断点,进行debug。3.5 一些快捷键""" pycharm中 选中行 ctrl+/ 进行快速注释, 再  ctrl+/ 取消注释    批量修改变量名: 选中变量,ctrl+R 或者 ctrl+shift+alt+j """"""1、Ctrl + Enter:在下方新建行但不移动光标;2、Shift + Enter:在下方新建行并移到新行行首;3、Ctrl + /:注释(取消注释)选择的行;4、Ctrl + Alt + L:格式化代码(与QQ锁定热键冲突,关闭QQ的热键);5、Ctrl + Shift + +:展开所有的代码块;6、Ctrl + Shift + -:收缩所有的代码块;7、Ctrl + Alt + I:自动缩进行;8、Alt + Enter:优化代码,提示信息实现自动导包;9、Ctrl + Shift + F:高级查找;10、Alt + Shift + Q:更新代码到远程服务器;11、Ctrl + N 查找所有的类的名称12、Ctrl + Shift + N 查找项目中的任何文件13、 移动语句向上/向下操作对于重新组织文件中的代码行非常有用,选择一个代码片段,然后按Ctrl + Shift +向上箭头或Ctrl + Shift +向下箭头。"""
  • [技术干货] 小熊派学习——获取MPU6050六轴原始数据
    >本贴使用小熊派开发板+MPU6050六轴传感器,获取加速度计以及陀螺仪信息。 # 一、实验准备 ## 1.实验环境 - 一块stm32开发板(推荐使用小熊派),以及数据线 - 已经安装STM32CubeMX - 已经安装KeilMDK,并导入stm32开发板对应的芯片包(小熊派使用的是STM32L431RCT6) - 一个MPU6050模块(IIC接口)以及杜邦线 ![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202008/30/210008fo7vb37vyayhbht4.png) ![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202011/23/211454y1kqh8cliqa7goka.png) ---- ## 2.目标效果 - 通过CubeMX创建工程并配置参数 - IIC方式通信,配置MPU6050寄存器 - 小熊派通过IIC,获取陀螺仪、加速度计数据 - 串口1重定向输出编码器转动的角度、角速度 # 二、通过CubeMX生产MDK工程 ## A.芯片选择 - **打开CubeMX,进入芯片选择:** ![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202008/30/212026gwrodk54oyp4fcl0.png) - **选择自己的stm32芯片(即STM32L431RCT6):** ![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202008/30/212556cpcaurxs79c0xlnq.png) --- ## B.时钟源RCC设置 - **更改系统时钟源** >系统时钟默认使用内部的高速时钟(HSI),选择使用HSE,时钟更精确 - 设置外部时钟对应的端口 ![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202008/30/213059x5earvssmihl5hsf.png) - 配置时钟树 >STM32L431RCT6系统时钟最大可以为80MHz,我们配置到最大即可 ![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202008/30/213359df4zzbsoimhq2cgg.png) --- ## C.参数配置(对应端口设置) ### **1)配置USART1** 使用USART,模式为异步,波特率为115200,无硬件流控制 ---- ![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202008/31/113002az5kmov8zzgjmkkd.png) ---- ### **2)硬件IIC配置** ``` IIC(Inter-Integrated Circuit)其实是IICBus简称,所以中文应该叫集成电路总线,它是一种串行通信总线,使用多主从架构 ``` 我们使用小熊派的I2C1,小熊派引出的引脚为**PB7->I2C1_SDA,PB6->I2C1_SCL** 其他选项我们保持默认即可 ![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202011/23/211758a2wp3eljqb59qb6v.png) ### 3)MPU6050模块 当然,我们还需要了解MPU6050模块的电路,更好的进行配置。当然我们也可以自主制作模块 **如果AD0脚(9脚)接地,IIC地址为0X68(不包含最低位);如果AD0脚接V3.3,则IIC地址为0X69(不包含最低位).** ![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202011/23/212349tmiaru2tuniste0z.png) **可以看到,AD0引脚已经被拉低,所有默认IIC地址为0x68. ** **最后,生成代码就OK了** ## D.工程设置 一些基础的设置,包括工程名、存储位置、工程环境、工程中各个文件的组成 ---- ![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202011/23/212548euc6o7cvi4cot4wz.png) ---- ![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202008/31/114727qvkul4oarss1pxdq.png) ---- ## E.生成代码 ![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202008/31/115001f5olm8dvgsctxvko.png) ---- # 三、编写相应代码 ## 1. 串口1输出重定向 >我们知道printf是打印函数,原理是根据传入的字符串参数格式化打印输出到stdout中。我们需要让printf打印到串口之中,只需要在usart.c文件中模仿printf写一个输出函数即可 - 在添加头文件 ```c /* USER CODE BEGIN 0 */ #include <stdarg.h> #include <string.h> #include <stdio.h> /* USER CODE END 0 */ ``` - 写输出函数 ```c /* USER CODE BEGIN 1 */ void UsartPrintf(UART_HandleTypeDef *huart, char *fmt,...) { unsigned char UsartPrintfBuf[296]; va_list ap; unsigned char *pStr = UsartPrintfBuf; va_start(ap, fmt); vsprintf((char *)UsartPrintfBuf, fmt, ap); //格式化 va_end(ap); while(*pStr != 0) { USART1->TDR = *pStr++; while((USART1->ISR & 0x40) == 0); } } //注意:在usart.h中添加void UsartPrintf(UART_HandleTypeDef *huart, char *fmt,...); //使用方法:UsartPrintf(&huart1;,"hello world\r\n"); /* USER CODE END 1 */ ``` >注意:自己添加的代码,需要在begin和end之间 ## 2.写MPU6050驱动 >我们创建两个文件,分别是mpu6050.h和mpu6050.c ### a).首先我们在mpu6050.h中宏定义相应的寄存器,方便后续使用。 >因为寄存器实在太多,就没有一一列出,可以在附件中查看哦~ ![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202011/23/212837k0bqvm1dck0bwsmk.png) ### b).配置各个寄存器 >主要的函数为:IIC读写、初始化MPU6050、设置陀螺仪和加速度计满量程、设置采样率、读取数据 代码附件中有,不一一讲解。 **初始化函数** >初始化函数中,我们必须要保证IIC读写的正确,因此可以通过读某一个有确定值的寄出去,大致判断IIC通信的准确。此方法同样在SPI等通信协议时会使用到 ```c uint8_t MPUInit(void) { uint8_t res; extern I2C_HandleTypeDef hi2c1; HAL_I2C_Init(&hi2c1;); //初始化IIC /*上电后最好有一定延时,保证数据准确*/ HAL_Delay(500); MPU_Write_Byte(MPU_PWR_MGMT1_REG,0x80); //复位MPU6050,写入1000 0000 MPU_Write_Byte(MPU_PWR_MGMT1_REG,0x00);//sleep写入0,保持唤醒状态 MPU_Set_Gyro_Fsr(3); //陀螺仪满量程±2000 MPU_Set_Accel_Fsr(0); //加速度计满量程±2g MPU_Set_Rate(50); //设置采样率=50Hz MPU_Write_Byte(MPU_INT_EN_REG,0x00);//关闭所有中断 MPU_Write_Byte(MPU_USER_CTRL_REG,0x00); //关闭从iic MPU_Write_Byte(MPU_FIFO_EN_REG,0x00); //关闭FIFO MPU_Write_Byte(MPU_INTBP_CFG_REG,0x80); //INT引脚低电平有效 res = MPU_Read_Byte(MPU_DEVICE_ID_REG); //读取地址 UsartPrintf(&huart1;,"\r\nMPU6050:0x%2x\r\n",res); UsartPrintf(&huart1;,"\r\nMPU6050:0x%2x\r\n",MPU_ADDR); if(res == MPU_ADDR) //判断地址是否正确 { MPU_Write_Byte(MPU_PWR_MGMT1_REG,0x01); //001,pll,x轴为参考系统时钟源 MPU_Write_Byte(MPU_PWR_MGMT2_REG,0x00); //都不使用待机模式 MPU_Set_Rate(50); }else return 1; return 0; } ``` 需要注意到,mpu6050上电后需要有一定延时,保证数据的稳定。重启mpu6050会有睡眠模式,写入关闭睡眠。最后检测并判断IIC地址是否正确 ## 3.main函数 ```c /* USER CODE BEGIN PV */ short x; short y; short z; /* USER CODE END PV */ ``` ```c /* USER CODE BEGIN 2 */ MPUInit(); /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { /* USER CODE END WHILE */ while(MPU_Get_Gyroscope(&x,&y,&z) !=0); HAL_Delay(1000); printf("\r\n陀螺仪:x=-,y=-,z=-\r\n",x,y,z); while(MPU_Get_Accelerometer(&x,&y,&z) != 0); HAL_Delay(1000); printf("\r\n加速度计:x=-,y=-,z=-\r\n",x,y,z); /* USER CODE BEGIN 3 */ } ``` # 四、编译+下载 **点击编译后,0 error,0 warning** ---- ![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202008/31/121955njyncblcptrssxe7.png) **小熊派连接在电脑上,代码下载到开发板** ![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202008/31/122123balqwmlnq0o1x39m.png) ---- # 五、连接硬件 ## 1.将小熊派串口1和电脑相连,即拨到 AT-MUC,按下复位键 ![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202008/31/163115mub9q4eizoub4uox.png) ## 2.连接MPU6050 我们只需要使用mpu6050的SDA\SCL\GND\VCC。 即: - SDA-->PB7 - SCL-->PB6 - GND-->GND - VCC-->5V ---- ## 3.效果 打开串口调试助手,我们手动转动开发板(包括模块),看见陀螺仪和加速度数据不断变化,当静止时数据保持稳定 。 **至此,我们已经可以通过小熊派以IIC获取六轴传感器原始数据信息** >附件中包含CubeMX工程、MDK工程
  • [技术干货] 用IDEA构建一个简单的Java程序范例
    一、创建项目1.点击菜单栏File->New->Project...2.从左边栏找到Java,例如我这里是Java Enterprise(每个人的可能不一样,因为IDE版本可能不同),然后选择project SDK,没有的话点击Download JDK...,有的话点击Add JDK...3. Download JDK是这个界面,Vendor我这里选择Oracle OpenJDK(各位可以根据需要选择),Version是版本,Location是位置4.下载或者添加之后,点击Next,这里可以选择Specification和Implementation,大家根据需要选择,我这里直接Next5.创建项目和名称二、编写代码1.项目结构如下2.我们打开src的main,右键点击main里的java,选择New->Package,输入包的名字,我这里是Hello3.新建一个class,输入名字,我这里是Hello4.输入代码package Hello; public class Hello { public static void main(String []args){ System.out.println("Hello!"); } }
  • [基础介绍] 【活动未达要求,取消活动】物联网创意畅享,不限场景、不限设备,只要你有关于物联网的好的应用idea,就有机会赢取大奖
    物联网创意畅享,创意是唯一要求。不限场景!不限设备!只要你有关于物联网的好的应用idea,都可以回帖回复。【活动时间】2020年8月10日-2020年8月30日 0:00【参与方式】在本帖下直接回复你的创意即可。【盖楼要求】为了避免刷帖影响公平,活动期间每人最多可盖3楼,超过3楼将取消资格【基础奖励和额外奖励获得要求】基础奖励参与人数40,额外奖励参与人数70【活动奖品】奖品1(基础奖励):50元京东卡将从所有回复中的有效楼层数的10%、50%、90%选出3名幸运用户,获得50元京东卡      奖品2(额外奖励):荣耀移动电源2 20000mAh (Max 18W) 快充版(颜色随机)将从所有回复中选取最具创意(即获得点赞数最多的)的回复一名,获得荣耀移动电源2 20000mAh (Max 18W) 快充版(颜色随机,图片仅供参考)还等什么,快来参与吧!注:活动遵守华为云社区常规活动规则https://bbs.huaweicloud.com/forum/thread-5766-1-1.html 
  • [技术干货] 每日分享:在Windows-IDEA调试Spark的 Master、Worker、Executor、Application
    前面分享过在Idea里面启动Spark集群,接下来这个博文介绍了,如何启动spark cluster,spark app等,大家可以学习借鉴一下https://bbs.huaweicloud.com/blogs/180562
  • [技术干货] 每日分享:在Windows-IntelliJ IDEA启动Spark集群、Spark App、Spark shell和Spark
    原文地址:https://bbs.huaweicloud.com/blogs/180493该文章分享了在本地环境启动spark集群,方便了开发与调试基本功能。可以学习一下
  • [教程指导] 使用IntelliJ IDEA导入MRS样例代码工程
    获取MRS最新样例代码文件。华为云MRS服务2.0版本的样例工程下载地址为:huaweicloud-mrs-example。本地已安装IntelliJ IDEA、JDK、Maven等必备软件。配置华为云镜像站中SDK的Maven镜像仓库,可参考华为云开源镜像配置方式。注意如果本地需配置代理上网,在Maven配置文件“settings.xml”的<proxy></proxy>字段中需配置相关代理信息。如下:打开IntelliJ IDEA,选择导入Project,然后导入下载的样例代码组件的pom文件,例如导入HDFS的样例代码工程。等待工程导入及相关jar包依赖下载完成,即可查看相关样例。使用Maven编译下项目,查看项目相关依赖是否下载完成。
  • [技术干货] 《Huawei LiteOS设备开发实战》—FAQ(持续更新),萌新遇到问题先看这里
    账号、课程学习相关FAQ:1、学习这个课,要注册两个账号?    华为云账号用户登录华为云(活动报名、打卡、使用物联网平台),华为账号用于学习视频课程。2、华为账号和华为云账号有什么区别,一定要注册两个账号?    可以只注册华为账号,在华为云登录界面,可以选择使用华为账号登录。3、不知道在哪儿看视频,打卡,报名活动?    看群公告。物联网平台(IoTDA设备接入)相关FAQ1、为什么我的平台不能正常使用,各种报错?   (1)登录账号后,先去进行实名认证(2)检查下是否欠费(3)控制台区域选择北京四(4)检查下资源空间,没有资源空间的新建一个,有的用默认的即可2、上报数据,下发命令和视频中不一致?    仔细检查下功能定义和插件开发是否完全正确,是否和视频中一致,建议反复观看对比。3、messageID和mid什么区别?    messageID标记不同种类的消息,mid标记同一种消息,具体是哪一次下发的,设备回复命令响应时,带上mid,平台根据mid可以判断出具体是对哪一条命令的响应。4、设备如何激活? 在物联网平台中,激活就是将真实设备在平台进行注册后,和平台进行连接或者上报数据。更多请查看https://support.huaweicloud.com/qs-iothub/iot_05_0005.html#section3 5、NB-IoT使用电信物联卡,无法正常接入设备接入平台? 由于电信做了限制,电信卡只能连电信自己的平台,会出现接入设备接入平台失败或执行软固件升级失败等情况。 6、获取账号详细信息时后台出现错误,获取失败? 请确保华为云账号实名认证通过,并且账号不处于欠费状态。7、NB-IoT设备在线离线状态不实时更新? NB-IoT设备,大部分时间处于休眠状态,设备接入平台后,设备在超过49小时未上报数据,平台会将设备置为“离线”状态。建议根据是否获取到设备数据判断是否在线,而不是通过显示的设备状态。 MQTT设备通常处于长连接状态,因此可通过在线离线状态实时判断设备运行情况8、小熊派FAQ链接:https://bbs.huaweicloud.com/forum/thread-18757-1-1.htmlVSCode和IoT Link插件相关FAQQ: 安装完插件后底部没有Home按钮?A: 常见的原因是您使用了Linux/Mac版的VSCode,目前插件还不支持。Q: 安装完插件后底部没有Home按钮?A: 常见的原因是您使用了Linux/Mac版的VSCode,目前插件还不支持。Q: 新建的工程编译失败?A: 检查'用户设置'--'工具链'里的GCC工具目录是否配置正确,如果插件自动下载安装的GCC,路径为C:\Users\用户名\.iotlink\tools\gcc-arm-none-eabi\bin。若此处没有配置,则需要点击提示里的链接下载安装GCC,安装完成后填写GCC目录,一般为 C:\Program Files (x86)\GNU Tools Arm Embedded\9 2019-q4-major\binQ: 工程烧录失败?A: 失败可能的原因较多,可以做如下的尝试:检查开发板和电脑是否正确连接重新插拔USB线检查工程设置--'调试器'中的Adapter是否配置正确,OpenOCD类型的注意检查参数,JLink类型的检查设备名称是否和开发板匹配尝试重新安装STLink驱动Q: VSCode提示检测到#include错误,请更新includePath?A: 该错误为VSCode找不到gcc编译器的头文件,但并不影响实际的编译功能。如果想修复可打开当前工程的.vscode/c_cpp_properties.json,检查配置的includePath是否正确。一个参考的配置如下:"includePath": [  "C:/Program Files (x86)/GNU Tools Arm Embedded/9 2019-q4-major/arm-none-eabi/include",  "C:/Program Files (x86)/GNU Tools Arm Embedded/9 2019-q4-major/lib/gcc/arm-none-eabi/9.2.1/include",  "${workspaceFolder}/**",  "${sdkPath}/**"],1、本次嵌入式开发环境搭建要做什么?    只需要做这两步:(1)下载VSCode(2)VSCode内安装IoT Link插件2、VSCode在哪儿下载?    下载地址:https://code.visualstudio.com/,下载Windows64位Stable版3、编译失败?    检查IoT Link设置中的工具链GCC目录,是否设置到bin路径。    C:\XXX\GNU Tools Arm Embedded\9 2019-q4-major\bin4、VSCode如何设置中文界面?    看这里:https://bbs.huaweicloud.com/blogs/1693425、JLink下载慢?    不需要下载JLink,本次小熊派使用的是STLink,安装IoT Link过程中自动安装STLink,无需其他操作。6、GCC下载不了?    不需要单独下载GCC,安装IoT Link插件会自动安装GCC。7、烧录失败?    (1)没有小熊派开发板的,不需要执行烧录操作,只做打卡用不到烧录操作。    (2)检查下调试器配置是否正确。    (3)检查下是否将小熊派开发板用USB链接到电脑上。    (4)重新插拔下USB线。    (5)如果之前安装过STLink驱动,可以试下重装STLink驱动,驱动在帖子附件下载。8、能不能使用之前的IoT Studio?    熟练者可以使用,但不方便根据视频学习,本次课程视频里用的都是VSCode和IoT Link插件,建议用VSCode。9、安装完IoT Link插件,看不到Home?    不支持Linux、Mac,不支持Windows 32位。10、IoT Link插件是否支持Linux?    当前IoT Link插件仅支持windows 64位。
  • [视频] 【云小课】云视频 第2课 教您使用VOD处理并加速OBS中的视频
    某用户:小课呀,最近我又碰到了个问题,这个不是最近要求远程上课吗?以前一直有使用华为云的OBS服务,所以想把制作的视频课程上传到我自个的OBS桶中,但我现在又想到把这些课程引用到网站的课程板块。视频课程的格式没有统一,有没办法把OBS桶里的视频转换的同一格式和分辨率的。此外,还能截取一些视频课程图片。还有,因为观看课程的量可能不会很小,有没办法保障流畅度呀?小课:等等,让我搜索下小课:有了,您可以用华为云视频点播服务(VOD),VOD提供了一个托管功能,可以直接通过VOD来处理OBS桶中的视频课程,此外,VOD自带CDN加速功能,可以把托管的视频课程预热到广泛的CDN节点中,如此,我们的同学就可以直接在最用户最近的CDN节点获取到视频课程。你再把课程播放地址引用到网页中,可以直接使用VOD提供的Web播放器,更便捷,播放体验也是棒棒的哦~!某用户:听起来好像还比较简单,怎么操作?可否指导下?小课:OK,安排~~~操作流程整个操作过程可以分为如下几步,其中配置转码模板或配置工作流您可以根据实际需求选择配置。步骤一:开通VOD在开始使用前,先需要开通VOD,VOD服务提供按需计费和套餐包,在本次场景中,可能会产生流量费、转码费等费用,所以建议在使用前购买套餐包,更优惠~~步骤二:配置转码模板或工作流(可选)转码模板:VOD提供了3个预置的系统转码模板,同时也支持根据实际需求自定义转码模板,支持转码成DASH、HLS和MP4格式。 视频转码模板(system_template_group):内置了常用的视频清晰度流畅、标清、高清、超清、2K、4K六种清晰度,该模板适用于对分辨率、码率、帧率等音视频具体参数不熟悉的用户。 转封装模板(original_template_group):只转换音视频的封装格式,不改变其它参数,支持将FLV和HLS格式转换为MP4格式,将MP3、MP4和FLV格式转换成HLS格式。该模板主要适用于只需改变格式,无分辨率和码率等更改需求的场景。视频自适应转码模板(adaptive_template_group):支持视频画质增强功能,支持编辑具体的分辨率和码率。该模板适用于有修复视频受损图像需求的场景。建议优先使用系统模板,若不满足需求,再具体配置自定义转码模板,具体配置指南请戳此处。工作流:VOD提供了工作流处理功能, 支持流程化地对视频进行转码、转封装、审核、截图、音频提取、剪切等操作。工作流中所有任务并发执行,所以能在一定程度上提高视频处理效率。具体配置指南戳此处。步骤三:配置托管配置增量音视频托管后,被托管的OBS桶中新增文件将被同步到VOD,您可以对桶中的音视频文件进行相关管理操作。将用于存储原始视频文件和处理后的视频文件的OBS桶托管给点播服务。a.  登录视频点播控制台。b.  在左侧导航栏选择“音视频托管 > 桶授权”,显示您当前已创建的OBS桶。c.  在对应的桶右侧,单击“授权”,完成OBS桶授权。授权如果,点播服务才可读写对应桶里的视频文件。存储原始文件的OBS桶和存储视频处理后输出文件的OBS桶都需要完成授权。 在左侧导航栏选择“音视频托管 > 增量托管”。单击“添加配置”,进入创建托管配置页面,配置托管参数。托管桶:存储视频课程的OBS桶,可以选择一个或多个。托管文件类型:视频课程的格式。音视频处理:选择步骤二配置的转码模板或工作流。输出存储位置:选择使用点播服务处理视频后的文件的存储位置。  单击“确定”,完成配置。步骤四:上传视频课程根据原始视频文件存储的位置,选择不同的上传方式,具体如下所示:若原始文件存储在本地,您可以在OBS控制台或者OBS Browser+上传。若原始文件存储在其它云服务厂商,您可以通过对象存储迁移服务将视频文件迁移到华为云OBS桶中。由于在上传视频前,配置了OBS增量托管,所以上传后,视频文件会同步在点播服务控制台显示,转码或经过工作流处理输出的文件也会存储在配置的OBS桶中。温馨提示:   华为云在“华北-北京一”、“华北-北京四”和“华东-上海2”提供了VOD服务,VOD不支持跨区域处理OBS桶中的视频文件,因此建议将视频课程存储在这三个区域的OBS桶中。步骤五:引用到网站原始视频同步到点播服务后,点播服务会为其生成原始视频播放地址。视频若做了转码处理,点播服务会生成转码播放地址。可以通过如下方式获取视频文件的播放地址,然后引用到网站中。 登录视频点播控制台。在左侧导航栏选择“音视频管理”,进入音视频管理页面。勾选需要导出的视频文件,单击“导出”,导出视频文件信息,其中包含原始文件和转码文件的播放地址。在网站中集成web播放器,将导出的播放地址引用到播放器中。【云小课】云视频第1课《如何将一场直播录制到VOD》:https://bbs.huaweicloud.com/forum/thread-34078-1-1.html
  • 5G 2B 生态套件--业务性能评估平台ViaSLA(单机版)
      目前各类应用对业务质量的要求差别主要在帧率,分辨率,E2E总时延的要求。在视频帧级,视频流级和基于视频协议的包级上对网络传输质量,业务质量进行映射分析,通过对影响业务质量的关键指标进行建模,从而得出业务质量的综合评分。ViaSLA监测平台介绍       ViaSLA(Vertical Industry Application Service Level Agreement)监测平台是Xlabs推出的对5G 2B 行业生态解决方案中业务性能评估平台,包括对实时视频的评估和控制业务的评估,通过被合作伙伴集成的方式,对现场实时业务进行监测,并对历史数据进行分析。SLA监测评估平台分为单机版ia和平台版。单机版主要面向单应用性能可视,能满足一线项目的轻量级部署,对现场业务问题进行界定。平台版能满足多应用场景,并能进行运营分析。本次主要介绍ViaSLA监测平台单机版。  比如在云直播上,找出能评估应用质量好坏的ia关键指标有码率,时延,丢包率,丢帧率,从业务层来看,主要有码率和丢帧率,从网络层的KPI指标来看,主要有时延和丢包率。通过ViaSLA监测平台对上述关键指标进行量化直观的呈现,并对系统的可靠性进行分析得出业务质量评分,如下图所示:       而通过建立业务SLA评估模型:基于帧可靠性的直播安全区模型;来预测当前直播是否会出现卡顿和花屏。 上图实时安全区统计曲线中,红线以下为业务安全区,红线以上为业务的非安全区意味着直播业务会出现视频卡顿和花屏。SLA工具套件使用步骤  1、环境准备     一台windowsPC,最好安装有chrome浏览器;Web服务器(Apache,Lighttpd,nginx或者其它) 2、安装及配置     ViaSLA工具套件主要内容分为offlineapp和public两个目录,里面是HTML+JavaScript进行数据处理,轻量渲染和核心业务质量算法代码。首先需要把offlineapp和public放在服务器的根目录下,以lighttpd为例,放在htdocs目录中 合作伙伴需要根据“SLA监测套件接口说明”开发标准格式的数据采集SDK。启动lighttpd服务,并在浏览器中输入http://localhost/offlineapp/view/page/monitor_runtime.html,点击查询。如下图所示主要有E2E编解码时延设置,业务安全区呈现,实时KPI监测,业务质量计算,关键值统计和CDF/PDF数据统计。足够对应用进行多个方面多个维度的分析。点击‘历史数据’进行查询,会对当前任务的历史KPI数据的统计分析呈现。如下图所示ViaSLA工具套件集成方法      该套件由华为Xlabs进行开发和评分算法的维护,将会在https://developer.huaweicloud.com/resource/5gplus.html中‘5G+软件栈’版块上进行发布以及使用集成说明。欢迎大家进行关注。  大家如果对于集成SLA监测套件感兴趣,或者有相关问题和想法的欢迎交流和咨询:华为X Labs实验室,接口人:jiezhiyuan@huawei.com
  • [技术干货] Windows10如何安装LiteOS开发环境-QEMU仿真
    1、下载软件 链接:https://pan.baidu.com/s/1kSgsD-z_fa15Web98bQtCQ  提取码:0asf2、安装软件 请把下载下来的gnumcueclipse解压到任意目录下,即可使用,不需要安装其他任何软件。 双击eclipse目录下eclipse.exe即可运行IDE。3、验证环境配置 1)新建项目LiteOS Eclipse->File->New->C/C++ Project->C Managed Build点击Next,填写Project name, 选择Project type点击Next, 如下图所示配置 要注意修改三个红框的内容点击Next,不更改配置点击Next,不更改配置点击next,确认配置是不是一样,点击Finish完成配置2) 编写代码  在main.cpp中修改main函数,添加打印信息代码int main(int argc, char *argv[])  {      // At this stage the system clock should have already been configured      // at high speed.      // Show the program parameters (passed via semihosting).      // Output is via the semihosting output channel.      trace_dump_args(argc, argv);      // Send a greeting to the trace device (skipped on Release).      trace_puts("Hello ARM World!");      // Send a message to the standard output.      puts("Standard output message.");      // Send a message to the standard error.      fprintf(stderr, "Standard error message.\n");      return 0;  }3)编译  使用快捷键Ctrl+B 可以编译全部代码,成功结果如下图:4)配置qemu 进行模拟 点击 New Launch Configuration选择如下图所示:点击Next,首先确认LiteOS.elf是否正确加载如果加载不正确,请点击Search Project,选择正确的LiteOS.elf点击Debugger 配置Qemu 目标板  Board name :STM32F429I-Discovery  Device name:STM32F429ZI最后点击Finish 完成配置 点击Run按钮进行仿真结果会看到一块板子的画面一闪而过或者会出现防火墙,请点确认就行。 在终端会显示以下信息,说明仿真成功。4、下载LiteOS代码  码云:https://gitee.com/LiteOS/LiteOS Github:https://github.com/LiteOS/LiteOS 5、在LiteOS项目中新建文件夹命名为LiteOS  使用快捷命令Ctrl+N 新建文件夹,选择 C/C++->Floder点击Next,点击LiteOS,在下面输入LiteOS打开LiteOS源码,选择 arch目录和kernel目录 Ctrl+C复制在工程中 点击LiteOS文件夹,Ctrl+V 就复制进来了同样,把源码中targets目录下的STM32F103VET6_NB_GCC/OS_CONFIG文件夹复制进来最后效果如下图:6、配置头文件、源文件  点击LiteOS 工程,使用快捷键Alt+Enter, 打开Properties for LiteOS点击C/C++ General->Paths and Symbols添加下列目录添加源文件,点击 Source Location添加下列文件夹LiteOS/arch LiteOS/kernel排除不需要文件  排除arch目录下的文件以及文件夹排除kernel目录下的文件及文件夹至此添加LiteOS文件完成7、修改代码为了使LiteOS适用STM32F429,需要修改部分代码。1) 修改 ldscripts目录下的 sections.ld 文件添加两行代码:/* 根据target_config.h中给出的memory布局,定义这两个值,用于计算LiteOS可分配内存的起止地址 */  PROVIDE ( _Min_Heap_Size = _Heap_Begin - _ebss ) ;  PROVIDE ( _Min_Stack_Size = __Main_Stack_Size ) ;2) 修改LiteOS/OS_CONFIG/ target_config.h  修改包含的头文件  //#include "stm32f1xx.h"  请把这一行修改成 #include "stm32f4xx.h"  #include "stm32f4xx.h"修改BOARD_SRAM_SIZE_KB 实际开发板RAM为192KB,请设置比开发板RAM小一点 #define BOARD_SRAM_SIZE_KB        191 3) 修改LiteOS/kernel/include/los_config.h  修改位置在文件的末尾  //extern LITE_OS_SEC_TEXT_INIT int main(void);  extern LITE_OS_SEC_TEXT_INIT int main(int argc, char *argv[]);4) 修改src/main.c 包含头文件  #include "los_base.h"修改main函数代码 int main(int argc, char *argv[])   {       // At this stage the system clock should have already been configured       // at high speed.       // Show the program parameters (passed via semihosting).       // Output is via the semihosting output channel.       trace_dump_args(argc, argv);       // Send a greeting to the trace device (skipped on Release).       trace_puts("Hello ARM World!");       // Send a message to the standard output.       puts("Standard output message.");       // Send a message to the standard error.       fprintf(stderr, "Standard error message.\n");              trace_printf("System clock: %u Hz\n", SystemCoreClock);       if (LOS_OK != LOS_KernelInit())        {           return LOS_NOK;       }       trace_printf("Hello, LiteOS!\n");       LOS_Start();       return 0;   }8、编译运行如何编译运行请看上篇文章,本章不再赘述。运行效果如下图所示:输出 Hello LiteOS! 则代表移植成功。
  • [技术干货] 漫谈LiteOS之开发板-GPIO(基于GD32450i-EVAL)
    3 GPIO摘要:本文主要从GPIO的定义、工作模式、特色、工作场合、以及GD32450i-EVAL开发板的引脚、对应的寄存器以及GPIO的流水灯示例对GPIO加以介绍,希望对你有所帮助。1定义    GPIO(Gennral-purpose input/output)通用型输入输出,即“IO”口、引脚。既然通用也就是说它是芯片上一个干什么都行的引脚。2 GD32450i-EVAL引脚说明    如图1所示GD32450i-EVAL开发板一共有140(16 * 8 + 12)个通用I/O引脚,PA-PI共9 组,其中PA-PH8组中每组有0-15共16个引脚,外加PI0-PI11共12个引脚。图1 GD32450i-EVAL引脚实物图3 GPIO 工作模式    输入、输出(推挽或开漏)、外设备用功能、模拟模式。而且都可以配置为上拉、下拉、或无上拉/下拉。除了模拟模式外,都具备大电流驱动能力。4 功能    GPIO主要功能都是依托于寄存器实现,每个通用I/O端口都可以通过控制寄存器配置为输入、输出、备用功能或模拟方式。当选择备用功能时,引脚通过AF使能来选择,当端口配置为输出时,可以通过GPIO输出模式寄存器配置为推挽或开漏模式。输出端口的最大速度可以通过GPIO输出速度寄存器配置,每个端口可以通过上下拉寄存器配置为浮空、上拉、下拉功能。4.1 主要寄存器    (1)#define GPIO_CTL(gpiox)         REG32((gpiox) + 0x00U)      端口控制寄存器    (2)#define GPIO_OMODE(gpiox)  REG32((gpiox) + 0x04U)      端口输出模式寄存器    (3)#define GPIO_OSPD(gpiox)       REG32((gpiox) + 0x08U)      端口输出速度寄存器    (4)#define GPIO_PUD(gpiox)         REG32((gpiox) + 0x0CU)      端口上拉/下拉寄存器    (5)#define GPIO_ISTAT(gpiox)      REG32((gpiox) + 0x10U)       端口输入状态寄存器    (6)#define GPIO_OCTL(gpiox)      REG32((gpiox) + 0x14U)       端口输出状态寄存器    (7)#define GPIO_BOP(gpiox)         REG32((gpiox) + 0x18U)       端口位操作寄存器    (8)#define GPIO_LOCK(gpiox)      REG32((gpiox) + 0x1CU)      端口配置锁定寄存器:    (9)#define GPIO_AFSEL0(gpiox)   REG32((gpiox) + 0x20U)      备用功能选择寄存器0    (10)#define GPIO_AFSEL1(gpiox) REG32((gpiox) + 0x24U)      备用功能选择寄存器1    (11)#define GPIO_BC(gpiox)         REG32((gpiox) + 0x28U)       位清除寄存器    (12)#define GPIO_TG(gpiox)         REG32((gpiox) + 0x2CU)       端口位翻转寄存器4.2 对应特性    (1)输入/输出方向控制。    (2)施密特触发器输入功能使能控制。    (3)每个引脚都具有弱上拉/下拉功能。    (4)推挽/开漏输出使能控制。    (5)置位/复位输出使能。    (6)输出驱动速度选择。    (7)模拟输入/输出配置。    (8)备用功能输入/输出配置。    (9)端口锁定配置。    (10)单周期输出翻转功能。5 应用场景    (1)上拉、下拉输入:检测外部信号,如按键等。    (2)浮空输入模式:由于输入阻抗较大一般用作标准通信协议的I2C、USART的接收端。    (3)普通推挽输出:输出电平为0和3.3v的场合。    (4)普通开漏输出:电平不匹配的场合,如需输出5V高电平,需要外部添加上拉电阻,电源5V,GPIO设置为开漏模式,当输出高阻态时,由上拉电阻和电源向外输出5V电平。    (5)复用模式:根据对应的复用功能选择。    注意:使用任意一种开漏模式都需要接上拉电阻。6 示例    以流水灯为例,使用GPIO来控制LED灯,GD32450i-EVAL开发板上有三个LED灯,设置间隔200毫秒,循环点亮,然后一起熄灭,循环此过程。     首先初始化LED时钟,之后配置LED的GPIO引脚,配置好引脚之后对LED灯进行点亮、延时、熄灭即可。    void  gd_eval_led_init (led_typedef_enum lednum)    {          // 使能LED时钟    eriph_clock_enable(GPIO_CLK[lednum]);    // 设置GPIO模式    gpio_mode_set(GPIO_PORT[lednum], GPIO_MODE_OUTPUT, GPIO_PUPD_NONE,GPIO_PIN[lednum]);    // 设置GPIO输出以及速度        gpio_output_options_set(GPIO_PORT[lednum], GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ,GPIO_PIN[lednum]);         //  操作位清除寄存器        GPIO_BC(GPIO_PORT[lednum]) = GPIO_PIN[lednum];    }   实现上述对于LED灯的初始化,之后只需要对LED灯和时钟进行操作即可,灯亮使能位操作寄存器,灯灭使能位清除寄存器即可。    while(1){            gd_eval_led_on(LED1);            delay_1ms(200);            gd_eval_led_on(LED2);            delay_1ms(200);            gd_eval_led_on(LED3);            delay_1ms(200);                   gd_eval_led_off(LED1);            gd_eval_led_off(LED2);            gd_eval_led_off(LED3);            delay_1ms(200);        }  实验效果如图2所示,具体见附件。图2 流水灯实验效果图  博客链接:https://bbs.huaweicloud.com/blogs/126778  目录主文链接:https://bbs.huaweicloud.com/blogs/124244
  • [交流吐槽] 下面是我的移植过程,但有些地方还是不太明确是不是这样干,请大佬解读,并给予提示。
    ### 华为Liteos和物联网设备侧sdk移植到stm32F03ZE霸道板子上 ### 啥是LIteos “开源免费”的实时操作系统,集成了 LwM2M、CoAP、mbed TLS、LwIP 全套 IoT 互联协议栈,且在 LwM2M 的基础上,提供了 AgentTiny 模块,用户只需关注自身的应用,而不必关注 LwM2M 实现细节,直接使用 AgentTiny 封装的接口即可简单快速实现与云平台安全可靠的连接。属于国产的实时操作系统(RTOS) ### 基于标准库移植 下载源码,[https://github.com/LiteOS/LiteOS](https://github.com/LiteOS/LiteOS)\ ### 往裸机工程添加 LiteOS 源码 打开 LiteOS 源码文件,可以看见里面有 8 个文件夹,下面先来了解一下主要的文件夹及其子文件夹的作用,然后将 LiteOS 源码的核心文件提取出来,添加到工程根目录下的文件夹中,因为工程只需要有用的源码文件,而不是整个 LiteOS 源码, ![](https://img2018.cnblogs.com/blog/1252747/201909/1252747-20190929165628332-715049345.png) ![](https://img2018.cnblogs.com/blog/1252747/201909/1252747-20190929170103804-1587161396.png) ### 添加LiteOS 系统的一些配置文件,含原厂芯片驱动 ![](https://img2018.cnblogs.com/blog/1252747/201909/1252747-20190929171305177-1794625631.png) ![](https://img2018.cnblogs.com/blog/1252747/201909/1252747-20190929171354402-1649263409.png) >将 OS_CONFIG 文件夹下面的一些配置文件拷贝到刚刚提取的 LiteOS 核心文件夹下面,等下在移植工程的时候大家是需要对这个文件夹下的某些文件进行修改,以适配不同的工程配置,并且可以通过修改这个文件夹下的内核配置头文件来裁剪 LiteOS 的功能。 添加 CMSIS的库,可以打开工程在mdk里面添加,也可以新建\Libraries\CMSIS\include,include文件夹从 keil 安装目录下C:\Keil_v5\ARM\Pack\ARM\CMSIS\5.3.0\CMSIS\Include,将其包含进来可以避免其它电脑 在移植过程中没有相关头文件而引起的编译错误 ![](https://img2018.cnblogs.com/blog/1252747/201909/1252747-20190929173748976-1019510793.png) ### 打开工程,添加 LiteOS 核心源码到工程组文件夹 需 要 在 开 发 环 境 里 面 新 建 LiteOS/cmsis 、 LiteOS/kernel 、 LiteOS/arch 和LiteOS/config 四个文件分组,其中 LiteOS/cmsis 用于存放 LiteOS 文件夹下 cmsis 文件夹的内容,LiteOS/kernel 用于存放 LiteOS 文件夹下 kernel 文件夹的内容,LiteOS/arch 用于存放LiteOS 文件夹下 arch 文件夹的内容。而 LiteOS/config 用于存放 LiteOS 文件夹下的OS_CONFIG 文件夹的内容。 ![](https://img2018.cnblogs.com/blog/1252747/201909/1252747-20190929180603458-355636054.png) ### 指定 LiteOS 头文件的路径 ![](https://img2018.cnblogs.com/blog/1252747/201909/1252747-20190929181731297-1104360672.png) ### 修改liteos/config文件下的target_config.h,修改自己板子对应的头文件 ![](https://img2018.cnblogs.com/blog/1252747/201909/1252747-20190929211228476-1531035796.png) 修改LOSCFG_PLATFORM_HWI,如果是YES代表接管中断,否则不被接管 非接管中断版本的 target_config.h 文件就需要在 LiteOS 提供的 demo 中移植过来 , 比 如 : LiteOS\targets\STM32F103RB_NUCLEO\OS_CONFIG,启动文件不变,保留stm32f10_it.c但需要注释 void PendSV_Handler(void)与 SysTick_Handler(void)这两个函数 接管中断版本的target_config.h文件就需要从 LiteOS 官方写的工程文件夹下面拷贝过来的,路径为\LiteOS\targets\ STM32F429IGTx_FIRE\OS_CONFIG ![](https://img2018.cnblogs.com/blog/1252747/201909/1252747-20190930100928785-2023022556.png) #### 启动文件内容修改(接管中断,非接管不用管) 因为 LiteOS 接管中断版本的中断向量表是由系统管理的,所以裸机的启动文件是要不得的,必须替换掉, ![](https://img2018.cnblogs.com/blog/1252747/201910/1252747-20191008104151372-1925477442.png) ### 分散加载文件修改(接管中断方式,非接管不用管) 在 LiteOS 中,中断向量表被放在运行内存里,避免影响分配内存,那么就需要将代码分散加载到不同的区域中,华为官方提供的分散加载文件就在每个具体的工程文件目录下,如 : LiteOS \targets\ STM32F429IGTx_FIRE\MDK-ARM 文 件 夹 下 的 STM32F429IGTx-LiteOS.sct 文件。首先将它拷贝到我们自己的工程中去,并且将其名字修改为“Fire-F103-LiteOS.sct”,放在工程的 user 文件夹中,然后在工程中把 “Fire-F103-LiteOS.sct”文件到工程配置中 ![](https://img2018.cnblogs.com/blog/1252747/201910/1252747-20191008104334018-556501291.png) ![](https://img2018.cnblogs.com/blog/1252747/201910/1252747-20191008104507645-76129025.png) ![](https://img2018.cnblogs.com/blog/1252747/201910/1252747-20191008104633993-793787697.png) ### 修改中断相关文件(非接管中断,接管中断不用管) 由于 LiteOS 已经处理好 PendSV 与 SysTick 中断了,就不需要用户自己处理,所以要在中断相关的源文件(stm32fxxx_it.c)中注释(删除)掉 void PendSV_Handler(void)与 SysTick_Handler(void)这两个函数。 ![](https://img2018.cnblogs.com/blog/1252747/201909/1252747-20190930101858775-1345258687.png) ### 更新core_m3.h版本到4.3,复制粘住就可以了 打开keil安装目录,把版本新的cmsis的include替换工程下的cmsis的include,防止你的工程的cmsis的include版本低于4,同时 ![](https://img2018.cnblogs.com/blog/1252747/201909/1252747-20190930152043966-1154931939.png) ![](https://img2018.cnblogs.com/blog/1252747/201909/1252747-20190930152212679-60855898.png) ### 修改工程配置 在 LiteOS 中,需要 C99 标准的支持,并且忽略相关的警告,选择“target”→ “C/C++”,在“Misc Controls”选项中输入--diag_suppress=1,47,177,186,223,1295,意思是忽略这些编号的警号, ![](https://img2018.cnblogs.com/blog/1252747/201909/1252747-20190930102943835-211837719.png) 经初步完成工程的移植了,LiteOS 的接管中断比非接管中断方式要麻烦很多,所以推荐在 cortex-m 系列处理器中采用非接管中断方式移植工程, ### 在main文件添加led任务 ``` #include "sys.h" #include "delay.h" #include "usart.h" #include "led.h" #include "stm32f10x.h" #include "los_sys.h" #include "los_task.ph" UINT32 LED_Task_Handle; static UINT32 AppTaskCreate(void); static UINT32 Creat_LED_Task(void); static void LED_Task(void) int main(void) { UINT32 uwRet = LOS_OK; delay_init(); LED_Init(); /* LiteOS Äں˳õʼ»¯ */ uwRet = LOS_KernelInit(); if (uwRet != LOS_OK) { printf("LiteOS ºËÐijõʼ»¯Ê§°Ü£¡Ê§°Ü´úÂë0x%X\n",uwRet); return LOS_NOK; } uwRet = AppTaskCreate(); if (uwRet != LOS_OK) { printf("AppTaskCreate´´½¨ÈÎÎñʧ°Ü£¡Ê§°Ü´úÂë0x%X\n",uwRet); return LOS_NOK; } LOS_Start(); while(1); } //其余见下载附件 ``` ### 运行结果 ![](https://img2018.cnblogs.com/blog/1252747/201910/1252747-20191007210722571-1942518665.png) ![](https://img2018.cnblogs.com/blog/1252747/201910/1252747-20191007210800003-1299511617.png) 工程见网盘: ``` 非接管中断: 链接:https://pan.baidu.com/s/1UQ2L6nZfoqFaa3DL2l20TA 提取码:ikrv 复制这段内容后打开百度网盘手机App,操作更方便哦 接管中断: 链接:https://pan.baidu.com/s/1UbFJy7wRztPnQWQhLrjavg 提取码:95pf 复制这段内容后打开百度网盘手机App,操作更方便哦 ```
  • [热门活动] 【华为云•实践有礼】 挑战15分钟完成人脸识别应用开发!!!
    本期获奖用户名单如下:建赟蓝书签chendaiweiecstaticlianzai喧默buyifengxiaode888情殇贼笨_pr0d1gy以上用户将会获得《刷脸背后》书籍一本,请获奖者在7月26日前将联系方式(姓名、电话、电子邮箱、收货地址) 私信给我哈!o(* ̄︶ ̄*)o谢谢如果逾期没有提供收货地址,将视为自动放弃奖励哦~~~华为云社区实践有礼活动开始啦~近年来人脸识别凭借其自然性、便利性、友好性等特点,已经成为了人工智能领域中很火的一项技术, 在实名认证、图像编辑等功能中都有其身影。本实践将介绍如何使用华为云DevCloud基于Gradle工具,完成一个Android人脸识别App开发。本实践为初级实践,主要包含以下知识点 :● Gradle构建的生命周期                   ● Gradle功能的目录结构● build.gradle配置文件● Android API:绘图 (android.graphics包)● Android API:人脸检测(Face Detect)操作步骤1.了解Gradle2.执行编译任务3.下载构建包实践提供操作指导,按照指导步骤完成人脸识别应用开发,并按要求将截图发布到本帖子下方,有机会获得《刷脸背后》书籍1本活动时间:2019年6月14日-2019年7月14日活动参与步骤:1.  注册华为云账号,通过实名认证(已有华为云账号可忽略此步)2.  点击实践链接,接收作业,按照操作指导完成实践。3. 实践结束后将结果截图发送至本帖(包含用户名)示例如下:                                              4.  活动结束后,在所有盖楼的用户中抽取获奖楼层,获奖楼层=总楼层*中奖百分比,中奖百分比为5%、15%、25%、35%、45%、55%、65%、75%、85%、95%。例如:活动结束后总楼层为500,500*5%=25,即第25楼获奖,其他获奖楼层同理可得。如出现小数点,则四舍五入,例如:活动结束后总楼层为530,530*5%=26.5,即第27楼获奖。无效楼层不参与中奖,做顺延处理,例如:抽取获奖楼层为第5楼,但5楼为无效楼层,即顺延至第6楼获奖,若依然为无效楼层,则继续顺延,以此类推,奖品为《刷脸背后》书籍1本
  • [热门活动] 使用IntelliJ IDEA和Maven创建Java项目入门
    1. Maven简介Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后Maven可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。相对于传统的项目,Maven 下管理和构建的项目真的非常好用和简单,所以这里也强调下,尽量使用此类工具进行项目构建, 它可以管理项目的整个生命周期。(1)下载Maven 官方地址:http://maven.apache.org/download.cgi (2)将文件解压到某个目录  (3)配置maven环境变量    ●Maven环境测试打开命令行窗口,输入mvn -v,如果有maven 版本信息输出则证明配置成功,否则请查看自己配置路径等是否正确。注意:安装maven前请确保已安装JDK并成功配置其环境变量。显示版本信息的命令:mvn -v 在C:\Users\Administrator下创建.m2目录的命令:mvn help:system 执行该命令后将在C:\Users\Administrator下创建.m2目录。该目录将作为本次仓库的根目录,在该目录下可以放置配置文件和repository。  (4)将maven安装目录下的conf/settings.xml文件复制到C:\Users\Administrator\.m2目录下。使用国内华为云的Maven公共仓库,下载依赖构建包速度很快,否则,maven项目默认从国外的中央仓库下载。<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">  <mirrors>    <mirror>      <id>huaweicloud</id>      <mirrorOf>*,!HuaweiCloudSDK</mirrorOf>      <url>https://repo.huaweicloud.com/repository/maven/</url>    </mirror>  </mirrors><profiles>    <profile>      <id>MyProfile</id>      <repositories>        <repository>          <id>HuaweiCloudSDK</id>          <url>https://repo.huaweicloud.com/repository/maven/huaweicloudsdk/</url>          <releases>            <enabled>true</enabled>          </releases>          <snapshots>            <enabled>false</enabled>          </snapshots>        </repository>      </repositories>    </profile></settings>2、在IntelliJ IDEA中配置maven(1)打开-File-Settings (2)Importing保留其默认值1)如下图标注2所示,Import Maven projects automatically 表示 IntelliJ IDEA 会实时监控项目的 pom.xml 文件,进行项目变动设置。2)如下图标注3 所示,在 Maven 导入依赖包的时候是否自动下载源码和文档。默认是没有勾选的,也不建议勾选,原因是这样可以加快项目从外网导入依赖包的速度,如果我们需要源码和文档的时候我们到时候再针对某个依赖包进行联网下载即可。IntelliJ IDEA 支持直接从公网下载源码和文档的。3)下图标注 4所示,可以设置导入的 VM 参数。一般这个都不需要主动改,除非项目真的导入太慢了我们再增大此参数。  3、在IntelliJ IDEA中创建Java project(1)File -> New -> Project... (2)创建HelloWorld程序 (3)设置项目名称和指定项目保存的位置(工作区目录) (4)环境搭建成功点击右上角工具栏中的运行按钮(绿色三角箭头),运行编译  创建结束后,项目代码结构如下: 4、在IntelliJ IDEA中基于Maven创建 Java 项目(1)File -> New -> Project... (2)设置GroupId和ArtifactId属性值 GroupId:是一个工程在全局中的唯一标识符,一般地,它就是工程名,使用一个完全的包名将一个工程识别出来。Artifact:是工程将要产生或需要使用的文件,可以是.jar,.war,源文件等。每个Artifact由GroupId和ArtifactId组合进行唯一识别。(3)指定Maven的安装目录  (4)指定项目保存的位置(工作区目录) (5)点击Finish后,项目代码结构如下: (6)选择根目录-> src-> main-> java文件夹,右击选择new->Java class,新建一个名称为test的java类文件: (7)运行测试程序,在编辑区右击选择Run ‘test.main()’,在控制台中能看到“hello world”说明项目创建成功:    
总条数:133 到第
上滑加载中