HUAWEI DevEco Device Tool是华为面向智能设备开发者提供的一站式集成开发环境。划重点,DevEco Device Tool 3.1 Beta2又上新技能啦——支持纯Windows环境开发Hi3861,显著提升编译、烧录效率,同时还带来了更多实用的功能及模板,为广大开发者朋友带来更加高效、便捷的开发体验。
一、 配置开发环境
1.DecEco Device Tool下载和安装
步骤一:下载devicetool-windows-tool-3.1.0.400.zip版,下载网址:
华为集成开发环境IDE DevEco Device Tool下载 | HarmonyOS设备开发
步骤二:解压 DevEco Device Tool 压缩包,双击安装包程序,点击"下一步"进行安装(如果之前有安装过,会弹出先卸载之前版本在安装,请按照要求先卸载)
步骤三:设置DevEco Device Tool的安装路径,请注意安路径不能包含中文字符,同时建议不要安装到C盘目录,点击"下一步"。
步骤四:等待DevEco Device Tool安装向导自动安装DevEco Device Tool插件,直至安装完成,点击"完成",关闭DevEco Device Tool安装向导。
步骤五:打开Visual Studio Code,进入DevEco Decive Tool工具界面。
步骤六:下载简体中文语言包,用户可以在VSCode工具商店安装"chinese(Simplified)(简体中文)Language Pack for Visual Studio Code"插件,将VSCode设置为中文模式。
步骤六:SDK下载
通过网盘分享的文件:SDK和工具链.zip
链接: https://pan.baidu.com/s/1f3Alt5zE5l96uP8086Hnng 提取码: 6tps
二、工程管理
- 步骤一:打开VSCode,打开DevEco Device Tool主页,点击“导入工程”
- 步骤二:在导入工程弹窗中选择Hi3861 SDK目录,点击“导入”。
注意:如果待打开目录之前已成功导入,则再次导入时会导入失败,并提示“当前工程已经创建过,请直接导入”。
- 步骤四:代码导入成功后,即工程创建成功,之后可使用该IDE 实现代码开发、一键编译、一键烧写等功能。
-
- 步骤五:代码导入成功后,后续可在DevEco Device Tool工具主页直接打开已导入成功的工程。
三、 编译运行
配置开发工具路径,点击左侧的“工程配置”,在右侧窗口找到“compiler_bin_path”,选择到之前下载的开发工具。
开发工具选择,选择env.start
选择env.start所在的文件路径
配置端口
四、 代码烧录
串口驱动安装
安装CH340G驱动,打开DevTools_Hi3861V100_v1.0/usb_serial_driver文件夹。
点击upload按键,待出现Connecting,please reset device...时,按下开发板的reset按键进行复位
等待烧录---烧录完成
五、华为云平台操作
下面文章有详细解释 华为云平台传输数据esp8266实现华为云数据传输—实现模拟温湿度数据_esp8266华为云-优快云博客
六、主文件上云代码
void IotPublish(void)
{
float temp, humi; // 温度和湿度变量
int light; // 光照强度变量
Get_Temp_And_Humi(&temp, &humi); // 获取温湿度数据
Get_Light_Intensity(IOT_ADC_CHANNEL_3, &light); // 获取光照强度数据
//==========================================================================
//===2.声明对应的结构体====
IoTProfileService service; // IoTProfileService结构体
//有几个需要传输的属性,就声明几个对应的结构体
IoTProfileKV property_Humi;
IoTProfileKV property_Temp;
IoTProfileKV property_Ligh; /
//===========================================================================
//===3.初始化服务的结构体===
//固定的套路,直接修改就可以
// memset_s(&xxx, sizeof(xxx), 0, sizeof(xxx));
memset_s(&property_Humi, sizeof(property_Humi), 0, sizeof(property_Humi)); // 初始化湿度属性
memset_s(&property_Temp, sizeof(property_Temp), 0, sizeof(property_Temp)); // 初始化温度属性
memset_s(&property_Ligh, sizeof(property_Ligh), 0, sizeof(property_Ligh)); // 初始化光照强度属性
memset_s(&service, sizeof(service), 0, sizeof(service)); // 初始化service结构体
service.eventTime = NULL; // 事件时间为空
service.serviceID = "Environmental_Factors_Reporting_Services";
//设置serviceID,即服务的ID,特别注意,这个serviceID要与华为云设置的serviceID一致
service.serviceProperty = &property_Humi;
//设置service服务下第一个属性,即为湿度属性
service.nxt = NULL; // 下一个服务为空,我们只设置了一个服务即service,则下一个服务为NULL
//===4.初始化三个属性===
property_Humi.key = "Humidity";
//设置湿度属性的键为"Humidity",注意属性名要与华为云IOTDA设置的属性名一致,下面同理。
property_Humi.type = EN_IOT_DATATYPE_FLOAT;
//设置湿度属性的数据类型为浮点数,注意数据类型名要与华为云IOTDA设置的属性名一致,下面同理。
property_Humi.fValue = humi;
// 如果为int型,则为property_Humi.iValue = xxx;
// 将我们本地接收到的湿度的值赋值给要传输湿度的变量值
// property_Humi.fValue = humi;(humi为我们本地接收到的变量值)
// property_Humi.iValue = xxx;
// 注意因为湿度数据的数据类型为浮点型,所以我们这里用.fValue,如果为int型,为.iValue
property_Humi.nxt = &property_Temp;
// 将指针指向下一个属性名称即温度。
property_Temp.key = "Temperature"; // 设置温度属性的键为"Temperature"
property_Temp.type = EN_IOT_DATATYPE_FLOAT; // 设置温度属性的数据类型为浮点数
property_Temp.fValue = temp; // 设置温度属性的值为temp变量
property_Temp.nxt = &property_Ligh; // 设置下一个属性为光照强度属性
property_Ligh.key = "Light_Intensity"; // 设置光照强度属性的键为"Light_Intensity"
property_Ligh.type = EN_IOT_DATATYPE_INT; // 设置光照强度属性的数据类型为整数
property_Ligh.iValue = light; // 设置光照强度属性的值为light变量
property_Ligh.nxt = NULL; // 如果没有下一个属性了,我们就把下一个属性设置为空
IoTProfilePropertyReport(CONFIG_DEVICE_ID, &service);
//通过这个发布属性报告函数,将对应的数据发布到华为云平台
//IoTProfilePropertyReport(CONFIG_DEVICE_ID, &xxx);
}
/*作业的提示*/
int Return_Temperature(void) {
return 20;
}
int Return_Humidity(void) {
return 10;
}
//讲解代码
void IotPublishSample_Test(void)
{
int Temp;//接收温度的变量
int Humi;//接收湿度的变量
Temp = Return_Temperature();
Humi = Return_Humidity();
IoTProfileService service; // IoTProfileService结构体
//有几个需要传输的属性,就声明几个对应的结构体
IoTProfileKV property_Humi; // 湿度属性
IoTProfileKV property_Temp; // 温度属性
memset_s(&property_Humi, sizeof(property_Humi), 0, sizeof(property_Humi)); // 初始化湿度属性
memset_s(&property_Temp, sizeof(property_Temp), 0, sizeof(property_Temp)); // 初始化温度属性
memset_s(&service, sizeof(service), 0, sizeof(service)); // 初始化service结构体
service.eventTime = NULL; // 事件时间为空
service.serviceID = "Project";
//设置serviceID,即服务的ID,特别注意,这个serviceID要与华为云设置的serviceID一致
service.serviceProperty = &property_Humi;
//设置service服务下第一个属性,即为湿度属性
service.nxt = NULL; // 下一个服务为空,我们只设置了一个服务即service,则下一个服务为NULL
property_Temp.key = "Temperature_"; // 设置温度属性的键为"Temperature"
property_Temp.type = EN_IOT_DATATYPE_INT; // 设置温度属性的数据类型为浮点数
property_Temp.iValue = Temp; // 设置温度属性的值为temp变量
property_Temp.nxt = &property_Humi; // 设置下一个属性为光照强度属性
property_Humi.key = "Humidity_"; // 设置光照强度属性的键为"Light_Intensity"
property_Humi.type = EN_IOT_DATATYPE_INT; // 设置光照强度属性的数据类型为整数
property_Humi.iValue = Humi; // 设置光照强度属性的值为light变量
property_Humi.nxt = NULL; // 如果没有下一个属性了,我们就把下一个属性设置为空
IoTProfilePropertyReport(CONFIG_DEVICE_ID, &service); // 发布属性报告,使用设备ID和服务结构体
}
// /< this is the demo main task entry,here we will set the wifi/cjson/mqtt ready ,and
// /< wait if any work to do in the while
//项目下事件的入口函数
static void Main_Entry(void)
{
ConnectToHotspot();//连接WiFi
CJsonInit();//上云必要函数
IoTMain();//上云必要函数
// IoTSetMsgCallback(NULL);//如果要命令下发,就要调用这个函数
TaskMsleep(30000);
AHT20_Init();//AHT20温湿度传感器的初始化函数的初始化
Adc_Init();//光敏传感器的初始化
/* 主动上报 */
while (1) {
// here you could add your own works here--we report the data to the IoTplatform
TaskMsleep(TASK_SLEEP_1000MS);
// know we report the data to the iot platform
IotPublishSample();
}
}
七、项目文件说明
项目下的build文件,主要配置头文件
app下的文件是配置需要编译哪个项目
vendor下是官网给出的案例学习项目