具有全功能Node.js的嵌入式应用开发及运行方法技术

技术编号:39005468 阅读:9 留言:0更新日期:2023-10-07 10:36
本发明专利技术公开了一种具有全功能Node.js的嵌入式应用开发及运行方法,涉及嵌入式软件开发领域。开发方法包括步骤1、开发Qt程序;步骤2、使用JS语言开发JS功能函数,以实现Qt所需要的逻辑功能;步骤3、开发Node.js Addon插件;步骤4、开发Node.js程序,通过Addon插件完成与Qt程序的通讯交互,以及通过调用JS功能函数来完成Qt程序所请求的逻辑功能。本发明专利技术使用JS代码实现了低端嵌入式设备应用的逻辑功能,从而实现不同硬件配置的设备之间逻辑代码的通用,同时还为低端嵌入式设备提供了全功能Node.js运行环境。环境。环境。

【技术实现步骤摘要】
具有全功能Node.js的嵌入式应用开发及运行方法


[0001]本专利技术涉及嵌入式软件开发领域,具体涉及一种开发嵌入式UI软件应用的方法,还涉及一种嵌入式UI软件应用的运行方法。

技术介绍

[0002]目前,Linux下的UI应用开发主要是采用Qt、pyQt、MiniUi等方式,开发语言以C++和python居多,也有少数场合使用功能较弱的Lua语言。
[0003]随着互联网技术发展,Node.js+Web的混合应用逐渐占据主流市场,覆盖到了桌面应用、移动端、手持机、广告机等不同场景。混合应用发展原因之一是终端机算力的增强。但是由于混合应用非常消耗终端资源,所以在低端面板机,尤其是在256MB内存以下、不带GPU的低端嵌入式Linux终端上,无法使用这种混合开发方式。由此,出现了同一品牌的产品,相同的业务逻辑,高端机、低端机和上位机却需要分别用不同的语言和框架来开发不同的应用的问题,导致开发和维护的成本较高。尤其是相较于JavaScript,为了实现相同的功能,C++开发和调试成本本身更高、功能实现难度更大,非常不利于项目的开展与后期维护。

技术实现思路

[0004]本专利技术提出了一种具有全功能Node.js的嵌入式应用开发及运行方法,其目的是:使用JS代码实现低端嵌入式设备应用的逻辑功能,从而实现不同硬件配置的设备之间逻辑代码的通用,同时为低端Linux嵌入式设备提供全功能Node.js运行环境。
[0005]本专利技术技术方案如下:一种具有全功能Node.js的嵌入式应用的开发方法,包括步骤1、开发Qt程序,还包括:步骤2、使用JS语言开发JS功能函数,以实现Qt所需要的逻辑功能;步骤3、开发Node.js Addon插件,用于实现Node.js程序与Qt程序的通讯交互;步骤4、开发Node.js程序,以实现:通过Addon插件完成与Qt程序的通讯交互,以及通过调用JS功能函数来完成Qt程序所请求的逻辑功能。
[0006]作为所述具有全功能Node.js的嵌入式应用的开发方法的进一步改进:Qt程序中包含Qt层发送函数和Qt层处理函数;Addon插件中包含第一转发函数和第二转发函数;Node.js程序中包括JS层发送函数和JS层处理函数;所述Qt层发送函数用于将Qt程序中的第一信息发送至第一转发函数;所述第一转发函数用于将第一信息转发至JS层处理函数;所述JS层处理函数用于处理收到的第一信息;所述JS层发送函数用于将Node.js程序中的第二信息发送至第二转发函数;所述第二转发函数用于将第二信息转发至Qt层处理函数;所述Qt层处理函数用于处理收到的第二信息。
[0007]作为所述具有全功能Node.js的嵌入式应用的开发方法的进一步改进:所述第一信息包括请求信息,所述请求信息包括Qt程序的事件信息、与该事件相关的组件的路径以及Qt程序为了响应该事件所需要的逻辑功能;所述JS层处理函数收到请求信息后,依据请求信息调用相应的JS功能函数。
[0008]作为所述具有全功能Node.js的嵌入式应用的开发方法的进一步改进:所述第二信息包括与所述请求信息对应的响应数据;所述响应数据由JS层处理函数根据请求信息调用JS功能函数而得到;所述Qt层处理函数收到响应数据后,根据响应数据更新Qt界面。
[0009]作为所述具有全功能Node.js的嵌入式应用的开发方法的进一步改进:步骤1中,Qt程序的界面由多个组件组成,每个组件分别对应一个UI文件;父组件中通过容器类组件包含所需要的子组件实现组件的嵌套;所述容器类组件设有自定义属性,该自定义属性指向所包含的子组件的UI文件。
[0010]作为所述具有全功能Node.js的嵌入式应用的开发方法的进一步改进:各UI文件分别对应一JS文件,所述JS文件中包含有与其对应的组件所需要的逻辑功能的JS功能函数。
[0011]作为所述具有全功能Node.js的嵌入式应用的开发方法的进一步改进:所述第一信息包括组件树对象,第二信息包括界面加载指令;所述Qt层处理函数收到界面加载指令后,加载指令对应的UI文件,并根据UI文件中的自定义属性,通过递归加载的方式形成该界面对应的组件树对象,组件树对象中包含各组件在组件树中的路径以及对应的JS文件的保存路径,然后将组件树对象信息作为第一信息发送至JS层处理函数;JS层处理函数在调用JS功能函数时,依据所述组件树对象来查找需要的JS功能函数。
[0012]本专利技术还提供了一种具有全功能Node.js的嵌入式应用的运行方法,该嵌入式应用基于上述开发方法进行开发;所述运行方法包括以下步骤:步骤A、Node.js程序中,初始化Addon插件,并且将JS层处理函数的引用传递给Addon插件,使第一转发函数可以根据JS层处理函数的引用、通过libuv将JS层处理函数插入Node.js主线程中执行,并将第一信息传递给Node.js主线程中的JS层处理函数;步骤B、Node.js程序中,通过调用Addon插件来加载已经被编译为so文件的Qt程序,并将第一转发函数的地址传递给Qt程序,使Qt层发送函数可以通过第一转发函数的地址来调用Addon插件中的第一转发函数,从而将第一信息转发至第一转发函数;步骤C、Node.js程序调用Addon插件中的第二转发函数发送作为第二信息的界面加载指令,Qt层处理函数根据界面加载指令加载对应的UI文件生成界面并生成组件树对象,然后Qt层发送函数将组件树对象作为第一信息通过第一转发函数发送至JS处理函数;步骤D、Qt程序中,用户在界面中触发事件后,Qt层发送函数生成请求信息,然后通过第一转发函数将请求信息作为第一信息发送至JS处理函数;步骤E、JS层处理函数根据请求信息中的当前组件的路径找到对应的JS文件,根据请求信息中的所需要执行的逻辑功能找到需要执行的JS功能函数,然后将请求信息中的事件信息传递给JS功能函数,JS功能函数执行后得到响应数据或新的界面加载指令;然后,JS
发送函数调用Addon插件中的第二转发函数,并将响应数据或界面加载指令作为第二信息传递至第二转发函数,第二转发函数调用Qt程序中的Qt层处理函数,并将第二信息传递至Qt层处理函数;步骤F、Qt层处理函数根据响应数据更新界面、并跳转至步骤D等待用户操作;或者,根据界面加载指令加载对应的UI文件并生成组件树对象,然后Qt层发送函数将组件树对象作为第一信息通过第一转发函数发送至JS处理函数,然后跳转至步骤D等待用户操作。
[0013]相对于现有技术,本专利技术具有以下有益效果:(1)本专利技术提供了一种Node.js程序与Qt程序交互的方法,并进一步通过JS程序代码实现了Qt界面所需要的逻辑功能,相当于将Qt程序作为Node.js的前端、代替了web前端的html渲染,从而大大降低了对硬件资源的需求,并实现了高端机运行的Node.js+Web混合应用与底端嵌入式设备运行的Qt应用之间的业务逻辑代码(JS代码)共用,大大降低了开发和维护成本;(2)本专利技术可以为运行Qt应用的嵌入式设备提供完整的Node.js运行环境,可以兼容No本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种具有全功能Node.js的嵌入式应用的开发方法,包括步骤1、开发Qt程序,其特征在于:还包括:步骤2、使用JS语言开发JS功能函数,以实现Qt所需要的逻辑功能;步骤3、开发Node.js Addon插件,用于实现Node.js程序与Qt程序的通讯交互;步骤4、开发Node.js程序,以实现:通过Addon插件完成与Qt程序的通讯交互,以及通过调用JS功能函数来完成Qt程序所请求的逻辑功能。2.如权利要求1所述的具有全功能Node.js的嵌入式应用的开发方法,其特征在于:Qt程序中包含Qt层发送函数和Qt层处理函数;Addon插件中包含第一转发函数和第二转发函数;Node.js程序中包括JS层发送函数和JS层处理函数;所述Qt层发送函数用于将Qt程序中的第一信息发送至第一转发函数;所述第一转发函数用于将第一信息转发至JS层处理函数;所述JS层处理函数用于处理收到的第一信息;所述JS层发送函数用于将Node.js程序中的第二信息发送至第二转发函数;所述第二转发函数用于将第二信息转发至Qt层处理函数;所述Qt层处理函数用于处理收到的第二信息。3.如权利要求2所述的具有全功能Node.js的嵌入式应用的开发方法,其特征在于:所述第一信息包括请求信息,所述请求信息包括Qt程序的事件信息、与该事件相关的组件的路径以及Qt程序为了响应该事件所需要的逻辑功能;所述JS层处理函数收到请求信息后,依据请求信息调用相应的JS功能函数。4.如权利要求3所述的具有全功能Node.js的嵌入式应用的开发方法,其特征在于:所述第二信息包括与所述请求信息对应的响应数据;所述响应数据由JS层处理函数根据请求信息调用JS功能函数而得到;所述Qt层处理函数收到响应数据后,根据响应数据更新Qt界面。5.如权利要求2至4任一所述的具有全功能Node.js的嵌入式应用的开发方法,其特征在于:步骤1中,Qt程序的界面由多个组件组成,每个组件分别对应一个UI文件;父组件中通过容器类组件包含所需要的子组件实现组件的嵌套;所述容器类组件设有自定义属性,该自定义属性指向所包含的子组件的UI文件。6.如权利要求5所述的具有全功能Node.js的嵌入式应用的开发方法,其特征在于:各UI文件分别对应一JS文件,所述JS文件中包含有与其对应的组件所需要的逻辑功能的JS功能函数。7.如权利要求6所述的具有全功能Node.js的嵌入式应用的开发方法,其特征在于:所述第一信息包括组件树对象,第二信息...

【专利技术属性】
技术研发人员:孙晓悦
申请(专利权)人:山东威尔数据股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1