【HarmonyOS Connect设备开发-个人】 3.南向开发-设备配网 原创 精华

发布于 2022-5-14 17:55
浏览
2收藏

【HarmonyOS Connect设备开发-个人】 3.南向开发-设备配网

@toc

3.1 分析模板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相关操作和联网动作

3.2 配网函数API

我们分析配网相关的几个文件。
① network_config_service.h文件_StartNetCfg()函数:开始配网入口
【HarmonyOS Connect设备开发-个人】 3.南向开发-设备配网-开源基础软件社区
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设备开发-个人】 3.南向开发-设备配网-开源基础软件社区
在winder工程调用如下:
【HarmonyOS Connect设备开发-个人】 3.南向开发-设备配网-开源基础软件社区
③ netcfg.c RecvRawData()函数-接收数据
【HarmonyOS Connect设备开发-个人】 3.南向开发-设备配网-开源基础软件社区
在winder工程中,使用注册回调函数的形式接收数据。如下:
【HarmonyOS Connect设备开发-个人】 3.南向开发-设备配网-开源基础软件社区

3.3 新建smart_fan工程

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

3.3.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设备开发-个人】 3.南向开发-设备配网-开源基础软件社区

3.3.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.3.3 编译烧录

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

3.4 配网测试

烧录成功后,碰一碰进行配网,串口会输出北向开发APP发出的对应数据。如下:
【HarmonyOS Connect设备开发-个人】 3.南向开发-设备配网-开源基础软件社区

小结

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

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
已于2022-5-14 18:04:40修改
2
收藏 2
回复
举报
回复
添加资源
添加资源将有机会获得更多曝光,你也可以直接关联已上传资源 去关联
    相关推荐