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

HarmonyOSConnect设备开发拥抱JS通信接口

时间:2023-03-12 21:37:22 科技观察

了解更多开源内容请访问:开源基础软件社区https://ost.51cto.com1.NANMessage接口介绍回到设备控制原子化服务指南,我们可以看到目前提供了JAVA和JS接口,用于向设备发送消息(建立NAN通道)。该模板使用JAVA接口,开发者可以在NetworkDeviceDataHandler中调用该模板。如下:privatevoidsendMessage(Stringmessage,HashMaptmpMap){CommonInfocommonInfo=newCommonInfo();commonInfo.setSessionId(sessionId);HiLog.error(LABEL_LOG,"sessionId"+sessionId);NetConfigApi.getInstance().sendMessage(commonInfo,message,(code,controlMessage,str)->{if(code==0){HiLog.info(LABEL_LOG,"消息发送成功"+message);dataMap.putAll(tmpMap);mainHandler.postTask(()->onDeviceDataChange(dataMap));}else{HiLog.error(LABEL_LOG,"发送消息失败。Code="+code+"controlmessage="+controlMessage);}});}JAVA实现功能需要在js页面之间传递数据,定义一系列规则,比较繁琐。如果添加命令传输,则必须添加约定规则。JS更加灵活,提供的JS接口如下:JS接口:NetConfig.sendMessage(commonInfo,message,callbackFunc)依赖:需要在导入模板工程中被fa-netconfig.js调用。注意:commonInfo中需要填写该配网路径的sessionId,由配网雾化服务获取。message是发送到设备的字符串消息。callbackFunc是消息发送成功与否的回调。示例:letcommonInfo={sessionId:getApp(this).ConfigParams.deviceInfo.sessionId}getApp(this).NetConfig.sendMessage(commonInfo,"111111",(result)=>{//sendMessage回调})其次,sendMessage()函数实现我们在jscontrol.js文件中添加sendMessage()函数,参考上面的说明和例子,写成如下://需要引入import{getApp}from'../../common.js';sendMessage(){varmessage=this.app_msg;让commonInfo={sessionId:getApp(this).ConfigParams.deviceInfo.sessionId};getApp(this).NetConfig.sendMessage(commonInfo,message,(result)=>{if(result.code==0){prompt.showToast({message:'发送成功'})}else{prompt.showToast({消息:'发送失败'})}});},3.关于绑定消息按钮的帖子【在自定义ui中】,我们自定义了一个开关。

{{title}}
用于控制风扇开关,即点击按钮时需要发送消息。接下来我们绑定数据按钮:在jscontrol.js中,编写绑定按钮的函数Smart_fanCtr(e),如下:exportdefault{data:{title:"SmartFan",app_msg:'turnofffan',},//根据开关状态发送消息Smart_fanCtr(e){if(e.checked){this.app_msg='打开风扇';prompt.showToast({message:"关闭风扇"})}else{this.app_msg='关闭风扇';prompt.showToast({message:"关掉风扇"})}this.sendMessage();//发送消息},}至此,我们就绑定了按钮和消息发送功能。消息发送成功后会弹出“发送成功”提示,否则提示“发送失败”。开启风扇会发送消息“turnonfan”,关闭风扇会发送“turnofffan”,设备端会匹配这个消息来控制GPIO输出状态。总结北向开发已经完成。简单概括就是配置网络,控制ui,发送消息。接下来,重点将转移到南向装备开发上。完整的北向工程见附件1【Smart_fan.zip】。了解更多开源知识,请访问:开源基础软件社区https://ost.51cto.com。