HarmonyOS Connect设备开发之南向开发-设备配网

系统教程10个月前发布 edzy123
6 0 0

HarmonyOS Connect设备开发之南向开发-设备配网

​想了解更多关于开源的内容,请访问:​

​51CTO 开源基础软件社区​

​https://ost.51cto.com​

一、分析模板demo-winder

回到设备侧开发指导,winder案例工程结构如下:

├── BUILD.gn
├── include
├── code_tab.h // 字母和汉字编码
├── common.h // 设备初始化相关接口
├── defines.h // 通用宏及调试宏定义
├── keypad.h // 按键相关接口
├── led.h // LED等控制相关接口
├── netcfg.h // 无感配网注册相关接口
├── network_config_service.h //无感配网相关头文件。
├── oled.h // OLED 相关接口
├── pwm.h // PWM 相关接口
├── sensor.h // 传感器相关接口
└── winder.h // 风扇相关宏定义
├── libs
├── libhilinkadapter_3861.a // 无感配网相关库文件。
└── libnetcfgdevicesdk.a // 无感配网相关库文件。
└── src
├── common.c // 设备相关初始化操作
├── keypad.c // 按键驱动模块
├── led.c // LED灯相关控制实现
├── netcfg.c // NAN相关操作和联网动作
├── oled.c // 与OLED 模块相关
├── pwm.c // PWM相关控制实现
├── sensor.c // 传感器相关
└── winder.c // 风扇主函数入口,及相关控制逻辑的实现

找出设备配网依赖,总结如下:

include:
├── netcfg.h // 无感配网注册相关接口
├── network_config_service.h //无感配网相关头文件。
libs:
├── libs
├── libhilinkadapter_3861.a // 无感配网相关库文件。
└── libnetcfgdevicesdk.a // 无感配网相关库文件。
src:
├── netcfg.c // NAN相关操作和联网动作

二、配网函数API

我们分析配网相关的几个文件。

① network_config_service.h文件_StartNetCfg()函数:开始配网入口。

HarmonyOS Connect设备开发之南向开发-设备配网

DevInfo是配网信息,在netcfg.c中引用如下:

const char *g_ssid = "SmartFan     ";
const char *g_pinCode = "11111111";
const char *g_productId = "1";
const char *g_sn = "0123/.,.,4567890123450123456789012345";
···
devInfo[0].key = "productId";
devInfo[1].key = "sn";
devInfo[0].value = g_productId;
devInfo[1].value = g_sn;
ret = StartNetCfg(devInfo, DEVICE_INFO_NUM, NETCFG_SOFTAP_NAN); //SoftAP and NAN模式

② netcfg.h文件 -NetCfgRegister()函数: 进入配网状态并注册网络监听事件,在主函数入口调用。

HarmonyOS Connect设备开发之南向开发-设备配网

在winder工程调用如下:

HarmonyOS Connect设备开发之南向开发-设备配网

③ netcfg.c RecvRawData()函数-接收数据。

HarmonyOS Connect设备开发之南向开发-设备配网

在winder工程中,使用注册回调函数的形式接收数据。如下:

HarmonyOS Connect设备开发之南向开发-设备配网

三、新建smart_fan工程

分析完winder demo设备侧代码,我们新建一个smart_fan工程,引入配网依赖,新建业务代码。

1、依赖库拷贝

在app目录下新建一个文件夹smart_fan,将winder工程中的BUILD.gn、libs、include、src拷贝到该目录下,只保留需要的几个文件,同新建smart_fan.c文件,工程架构如下:

├── BUILD.gn
├── include
├── defines.h // 通用宏及调试宏定义
├── netcfg.h // 无感配网注册相关接口
├── network_config_service.h //无感配网相关头文件。
├── libs
├── libhilinkadapter_3861.a // 无感配网相关库文件。
└── libnetcfgdevicesdk.a // 无感配网相关库文件。
└── src
├── netcfg.c // NAN相关操作和联网动作
└── smart_fan.c // 风扇主函数入口,及相关控制逻辑的实现

复制 HarmonyOS Connect设备开发之南向开发-设备配网

2、业务代码

接下来我们在smart_fan.c中编写业务代码,实现配网、接收数据。

//接收数据
char app_msg[20] = {0};
static void WinderProcessAppMessage(const char *data, int data_len)
{
if (strcpy(app_msg, data) != 0)
{
WINERR("strncpy_s failed! \n");
return;
}
printf("app_msg %s\r\n",app_msg);
}
//NetEvent回调函数
static int WinderNetEventHandler(NET_EVENT_TYPE event, void *data)
{
switch (event)
{
case NET_EVENT_CONNECTTED: // 网络连接成功
printf("connect net successful"); // 显示网络已连接
break;
case NET_EVENT_RECV_DATA: // 接收到网络信息(FA发送的消息)
WinderProcessAppMessage((const char *)data, strlen(data)); // 处理对应的信息
break;
default:
break;
}
return 0;
}

static void *WinderTask(const char *arg)
{
(void)arg;
WINDBG("WinderTask Enter! \n");
NetCfgRegister(WinderNetEventHandler); // 进入配网状态并注册网络监听事件
}

3、编译烧录

修改BUILD.gn文件,正常编译烧录即可。

四、配网测试

烧录成功后,碰一碰进行配网,串口会输出北向开发APP发出的对应数据。如下:

HarmonyOS Connect设备开发之南向开发-设备配网

小结

本节我们完成了smart_fan设备侧的配网开发,目前能实现配网。下一节我们编写业务代码,并演示【HarmonyOS Connect设备开发-个人】最终的成果。

​想了解更多关于开源的内容,请访问:​

​51CTO 开源基础软件社区​

​https://ost.51cto.com​​。

© 版权声明

相关文章