当前位置: 首页 > 科技观察

HarmonyOSConnect设备开发南向-设备分发网

时间:2023-03-19 16:00:50 科技观察

了解更多开源请访问:开源基础软件社区https://ost.51cto.com1.分析模板demo-winder返回device端开发指南,windercase工程结构如下:├──BUILD.gn├──include│├──code_tab.h//字母汉字编码│├──common.h//设备初始化相关interface│├──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//NANrelatedOperationandnetworkingaction├──oled.c//OLED模块相关├──pwm.c//PWM相关控制实现├──sensor.c//sensor相关└──winder.c//main函数入口fan的相关控制逻辑的实现,找出设备配网依赖,总结如下:│├──netcfg.h//无感配网注册相关接口│├──network_config_service.h//非传感分布网络相关的头文件。libs:├──libs│├──libhilinkadapter_3861.a//无感配网相关库文件。│└──libnetcfgdevicesdk.a//无感配网相关库文件。src:├──netcfg.c//NAN相关操作和联网动作2.配网函数API我们分析了几个与配网相关的文件。①network_config_service.h文件_StartNetCfg()函数:启动网络配置入口。DevInfo为配网信息,在netcfg.c中引用如下:constchar*g_ssid="SmartFan";constchar*g_pinCode="11111111";constchar*g_productId="1";constchar*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和NAN模式②netcfg.h文件-NetCfgRegister()函数:进入网络配置状态,注册网络监听事件,在main函数入口处调用。winder工程中调用如下:③netcfg.cRecvRawData()函数——接收数据。在winder项目中,使用注册的回调函数接收数据。如下:3、新建smart_fan工程分析完winderdemo设备端代码,我们新建smart_fan工程,引入配网依赖,新建业务代码。1、依赖库复制在app目录下新建文件夹smart_fan,将winder工程中的BUILD.gn、libs、include、src复制到该目录下,只保留需要的几个文件,新建smart_fan.c文件,工程结构如下:├──BUILD.gn├──include│├──defines.h//通用宏和调试宏定义│├──netcfg.h//无感分发注册相关接口network│├──network_config_service.h//无感配网相关的头文件。├──libs│├──libhilinkadapter_3861.a//无感配网相关库文件。│└──libnetcfgdevicesdk.a//无感配网相关库文件。└──src├──netcfg.c//NAN相关操作和联网动作└──smart_fan.c//Fan主要函数入口,以及相关控制逻辑的实现Copy2.业务代码接下来我们进入smart_fan。c编写业务代码实现网络分发和接收数据。//接收数据charapp_msg[20]={0};staticvoidWinderProcessAppMessage(constchar*data,intdata_len){if(strcpy(app_msg,data)!=0){WINERR("strncpy_sfailed!\n");返回;}printf("app_msg%s\r\n",app_msg);}//NetEvent回调函数staticintWinderNetEventHandler(NET_EVENT_TYPEevent,void*data){switch(event){caseNET_EVENT_CONNECTTED://网络连接成功printf("连网成功");//显示网络已连接break;caseNET_EVENT_RECV_DATA://接收网络信息(FA发送的消息)WinderProcessAppMessage((constchar*)data,strlen(data));//处理相应的信息break;默认值:中断;}return0;}staticvoid*WinderTask(constchar*arg){(void)arg;WINDBG("WinderTask进入!\n");NetCfgRegister(WinderNetEventHandler);//进入配置网络状态和注册网络监控事件}3.编译烧录修改BUILD.gn文件,正常编译烧录。4、配网测试编程成功后,点击配置网络,串口会输出相应的北向开发APP发送的数据。如下:小结本节我们完成了smart_fan设备端的配网开发,现在可以实现配网了。下一节我们将编写业务代码并演示【HarmonyOSConnect设备开发-个人版】的最终效果。了解更多开源知识,请访问:开源基础软件社区https://ost.51cto.com。