基于freeRTOS嵌入式系统的应用开发方法、系统及介质转让专利

申请号 : CN202311644059.X

文献号 : CN117348876B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 罗辉马志宇韦刚李云军伍炬彬

申请人 : 深圳市云希谷科技有限公司

摘要 :

本申请提供一种基于freeRTOS嵌入式系统的应用开发方法、系统及介质,涉及系统开发领域。通过结合了应用层,引擎处理层以及GUI框架层以实现应用开发,具体地通过引擎处理层中的精简版的HTML解析器,实现了有限元素和属性的解析,精简版的HTML解析器将应用层中的HTML进行解析后,调用GUI框架层的LVGL进行界面渲染,以实现HTML的静态显示;同时嵌入式JavaScript引擎对所述JavaScript的数据进行监控,GUI框架层对事件的触发进行监测,当监测到有事件触发时,通过桥接接口和所述Javascript引擎对所述事件进行执行响应,以实现HTML的动态变化。通过本申请提供的应用开发方法,使得开发者在C语言引擎中完整实现成熟前端框架vue.js和html加载逻辑,性能更高,对内存和cpu要求更低,提高了开发效率。

权利要求 :

1.一种基于freeRTOS嵌入式系统的应用开发方法,其特征在于,所述方法包括:获取应用层GUI页面排版的HTML/CSS;

对所述HTML进行解析并调用GUI框架LVGL进行界面渲染;

获取应用层GUI页面的JavaScript的数据,并对所述JavaScript的数据进行绑定;

基于嵌入式JavaScript引擎对所述JavaScript的数据进行监控,并根据JavaScript的数据变化刷新渲染所述界面的信息;

建立所述Javascript引擎与C语言桥接接口;

实时侦测界面LVGL的触发事件;

基于所述桥接接口和所述Javascript引擎对所述事件进行执行响应;

将执行响应结果在界面上进行显示;

其中,所述对所述HTML进行解析并调用GUI框架LVGL进行界面渲染,包括:解析所述HTML的元素信息和属性信息;

根据所述元素信息和属性信息创建DOM树;

判断是否绑定了DOM事件,若是,则建立DOM事件和JavaScript的对应关系,否则,设置DOM的属性;

基于所述DOM的属性信息调用GUI框架LVGL进行界面渲染,包括:判断所述DOM的属性是否绑定了数据;

若是,则建立DOM属性和JavaScript的数据属性的对应关系;

获取JavaScript的数据属性,并根据所述JavaScript的数据属性更新所述DOM的属性值;

根据更新后的DOM属性值,调用GUI框架LVGL进行界面渲染;

若DOM的属性未绑定数据,直接调用GUI框架LVGL进行界面渲染。

2.根据权利要求1所述的方法,其特征在于,所述建立DOM属性和JavaScript的数据属性的对应关系,包括:建立哈希数据表,将key设置为JavaScript的数据的路径;

将value设置为DOM属性。

3.根据权利要求2所述的方法,其特征在于,所述嵌入式JavaScript引擎为Duktape引擎,所述基于嵌入式JavaScript引擎对所述数据进行监控,并根据数据变化刷新渲染所述界面的信息,包括:调用所述Duktape引擎的proxy函数监控所述JavaScript的数据的变化;

若所述JavaScript的数据发生变化,则查询所述哈希数据表;

获取对应的DOM对象和属性值;

根据所述JavaScript的数据的变化修改所述对应的DOM对象和属性值;

刷新渲染界面信息。

4.根据权利要求3所述的方法,其特征在于,所述建立所述Javascript引擎与C语言桥接接口,包括:获取所述Duktape引擎的各函数及函数调用逻辑关系;

基于C语言函数调用逻辑改写并内嵌所述Duktape引擎的各函数,得到各改写函数;

将所述改写函数进行集成封装。

5.根据权利要求1‑4任一项所述的方法,其特征在于,基于所述桥接接口和所述Javascript引擎对所述事件进行执行响应,包括:将所述触发事件及事件参数传递至所述桥接接口;

所述桥接接口内嵌调用Javascript引擎响应函数;

所述Javascript引擎响应函数调用对应的JavaScript代码进行执行,并将执行结果通过所述桥接接口传递至所述界面LVGL进行渲染显示。

6.一种基于freeRTOS嵌入式应用开发系统,所述系统采用如权利要求1‑5任一项所述方法进行应用开发,其特征在于,所述系统包括:开发应用层,包括对应用开发页面排版HTML/CSS和JavaScript代码控制;

引擎处理层,包括基于C语言开发的第一引擎和嵌入式JavaScript第二引擎,用于解析HTML/CSS、调用JavaScript代码及LVGL、界面渲染;

GUI框架LVGL层,用于创建对应的GUI图形元素,以被所述引擎处理层调用渲染。

7.根据权利要求6所述的系统,其特征在于,所述系统进一步包括:所述第一引擎用于对所述HTML/CSS进行解析、数据读取和绑定、界面UI渲染及建立与所述JavaScript第二引擎的桥接接口;

所述第二引擎用于JavaScript和C语言代码相互调用。

8.一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行以实现如权利要求1至5中任一项所述方法。

说明书 :

基于freeRTOS嵌入式系统的应用开发方法、系统及介质

技术领域

[0001] 本申请涉及软件开发技术领域,尤其涉及一种基于freeRTOS嵌入式系统的应用开发方法、系统及计算机可读存储介质。

背景技术

[0002] 随着科技的发展,人们对于便携电子设备的需求增加,便携电子设备在日常生活中扮演者重要的角色。由于便携电子设备具有便携属性,因此在设计之初会尽可能减小设备的体积;体积的减小意味着设备的各项参数和性能需要随之减小。在有限的容量内,需要容纳下较大的操作系统,这显然是不切实际的,因此,人们开发了嵌入式系统。相比于一般的计算机处理系统而言,嵌入式系统存在较大的差异性, 它不能实现大容量的存储功能,因为没有与之相匹配的大容量介质,大部分采用的存储介质有E‑PROM、EEPROM 等, 软件部分以API编程接口作为开发平台的核心。
[0003] 现有技术中,嵌入式开发主要的开发语言是C语言,其具有速度快、性能高、内存占用小的优点。但是同时,其也面临着开发效率低的缺点,对于程序员要求较高,需要熟练掌握C语言;并且在开发过程中,需要程序员完成手动的内存管理,否则很容易发生内存泄露、段错误等问题,并且难以定位问题。再者C语言开发界面程序,如果没有进行深度的设计,容易将界面逻辑和业务逻辑混在一起,导致难以维护。
[0004] 对于GUI应用开发,在互联网领域包括H5和APP已经发展很成熟,主要使用Javascript语言写业务逻辑,使用HTML/CSS完成界面排版。而且有成熟的前端框架,例如vue.js、react.js、angular.js等,开发效率高。而且Javascript是一种有自动回收内存的语言,开发时只要关注业务,不用自己去管理内存,不容易出问题。但是目前较大一部分嵌入式设备中采用的是freeRTOS嵌入式系统,在低算力,小内存,小存储的freeRTOS系统中,无法运行大型浏览器引擎来直接解析html。
[0005] 因此,如何使得开发人员能够在freeRTOS嵌入式系统下高效地完成GUI应用的开发,提高开发效率,是急需解决的技术问题。

发明内容

[0006] 本申请实施例提供一种基于freeRTOS嵌入式系统的应用开发方法、设备及计算机可读存储介质,可以让开发人员不需要耗费太多精力去学习复杂的语言、框架及引擎,即可使用成熟的前端框架完成GUI应用的开发,提高开发效率。
[0007] 本申请第一方面提供了一种基于freeRTOS嵌入式系统的应用开发方法,所述方法包括:
[0008] 获取应用层GUI页面排版的HTML/CSS;
[0009] 对所述HTML进行解析并调用GUI框架LVGL进行界面渲染;
[0010] 获取应用层GUI页面的JavaScript的数据,并对所述JavaScript的数据进行绑定;
[0011] 基于嵌入式JavaScript引擎对所述JavaScript的数据进行监控,并根据JavaScript的数据变化刷新渲染所述界面的信息;
[0012] 建立所述Javascript引擎与C语言桥接接口;
[0013] 实时侦测所述界面LVGL的触发事件;
[0014] 基于所述桥接接口和所述Javascript引擎对所述事件进行执行响应;
[0015] 将所述执行响应结果在界面上进行显示。
[0016] 进一步地,所述对所述HTML进行解析并调用GUI框架LVGL进行界面渲染,包括:
[0017] 解析所述HTML的元素信息和属性信息;
[0018] 根据所述元素信息和属性信息创建DOM树;
[0019] 判断是否绑定了DOM事件,若是,则建立DOM事件和JavaScript的对应关系;
[0020] 否则,设置DOM的属性;
[0021] 基于所述DOM的属性信息调用GUI框架LVGL进行界面渲染。
[0022] 进一步地,基于所述DOM的属性信息调用GUI框架LVGL进行界面渲染,包括:
[0023] 判断所述DOM的属性是否绑定了数据;
[0024] 若是,则建立DOM属性和JavaScript的数据属性的对应关系;
[0025] 获取JavaScript的数据属性,并根据所述JavaScript的数据属性更新所述DOM的属性值;
[0026] 根据更新后的DOM属性值,调用GUI框架LVGL进行界面渲染;
[0027] 若DOM的属性未绑定数据,直接调用GUI框架LVGL进行界面渲染。
[0028] 进一步地,所述建立DOM属性和JavaScript的数据属性的对应关系,包括:
[0029] 建立哈希数据表,将key设置为JavaScript的数据的路径;
[0030] 将value设置为DOM属性。
[0031] 具体地,所述嵌入式JavaScript引擎为Duktape引擎,所述基于嵌入式JavaScript引擎对所述数据进行监控,并根据数据变化刷新渲染所述界面的信息,包括:
[0032] 调用所述Duktape引擎的proxy函数监控所述JavaScript的数据的变化;
[0033] 若所述JavaScript的数据发生变化,则查询所述哈希数据表;
[0034] 获取对应的DOM对象和属性值;
[0035] 根据所述JavaScript的数据的变化修改所述对应的DOM对象和属性值;
[0036] 刷新渲染所述界面信息。
[0037] 进一步地,所述建立所述Javascript引擎与C语言桥接接口,包括:
[0038] 获取所述Duktape引擎的各函数及函数调用逻辑关系;
[0039] 基于C语言函数调用逻辑改写并内嵌所述Duktape引擎的各函数,得到各改写函数;
[0040] 将所述改写函数进行集成封装。
[0041] 进一步地,基于所述桥接接口和所述Javascript引擎对所述事件进行执行响应,包括:
[0042] 将所述触发事件及事件参数传递至所述桥接接口;
[0043] 所述桥接接口内嵌调用Javascript引擎响应函数;
[0044] 所述Javascript引擎响应函数调用对应的JavaScript代码进行执行,并将所述执行结果通过所述桥接接口传递至所述界面LVGL进行渲染显示。
[0045] 本申请第二方面提供了一种基于freeRTOS嵌入式应用开发系统,所述系统采用如前述方法进行应用开发,所述系统包括:
[0046] 开发应用层,包括对应用开发页面排版HTML/CSS和JavaScript代码控制;
[0047] 引擎处理层,包括基于C语言开发的第一引擎和嵌入式JavaScript第二引擎,用于解析HTML/CSS、调用JavaScript代码及LVGL、界面渲染;
[0048] GUI框架LVGL层,用于创建对应的GUI图形元素,以被所述引擎处理层调用渲染。
[0049] 进一步地,所述系统还包括:
[0050] 所述第一引擎用于对所述HTML/CSS进行解析、数据读取和绑定、界面UI渲染及建立与所述JavaScript第二引擎的桥接接口;
[0051] 所述第二引擎用于JavaScript和C语言代码相互调用。
[0052] 本申请第三方面提供了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行以实现前述方法步骤。
[0053] 本申请提供的基于freeRTOS嵌入式系统的应用开发方法,通过结合了应用层,引擎处理层以及GUI框架层以实现应用开发。具体地本申请中通过引擎处理层中的精简版的HTML解析器,实现了有限元素和属性的解析,精简版的HTML解析器将应用层中的HTML进行解析后,调用GUI框架层的LVGL进行界面渲染,以实现HTML的静态显示;同时嵌入式JavaScript引擎对所述JavaScript的数据进行监控,GUI框架层对事件的触发进行监测,当监测到有事件触发时,通过桥接接口和所述Javascript引擎对所述事件进行执行响应,以实现HTML的动态变化。通过本申请提供的应用开发方法,可以简化开发者的开发流程,使其在不需要精通Javascript和C语言的情况下,即可完成在freeRTOS嵌入式系统下GUI应用的开发,在C语言引擎中完整实现成熟前端框架vue.js和html加载逻辑,性能更高,对内存和cpu要求更低,提高了开发效率。

附图说明

[0054] 构成本申请的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。
[0055] 为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0056] 图1是本申请实施例提供的一种基于freeRTOS嵌入式系统的应用开发方法的流程图;
[0057] 图2是本申请实施例提供的一种基于freeRTOS嵌入式系统的应用开发的框架图;
[0058] 图3是本申请实施例提供的一种计算机设备的示意图。

具体实施方式

[0059] 本申请实施例提出了一种基于freeRTOS嵌入式系统的应用开发方法,通过结合了应用层,引擎处理层以及GUI框架层以实现应用开发。本申请可应用于开发扫读笔、点读笔、翻译笔、智能手表、智能手环等设备的嵌入式系统,当然并不局限于此。只要是开发基于freeRTOS嵌入式系统,都可采用本申请所公开的应用开发方法。
[0060] 嵌入式系统由硬件和软件组成,是能够独立进行运作的器件。其软件内容只包括软件运行环境及其操作系统。硬件内容包括信号处理器、存储器、通信模块等在内的多方面的内容。相比于一般的计算机处理系统而言,嵌入式系统存在较大的差异性, 它不能实现大容量的存储功能,因为没有与之相匹配的大容量介质,大部分采用的存储介质有E‑PROM、EEPROM 等, 软件部分以API编程接口作为开发平台的核心。FreeRTOS是一个迷你的实时操作系统内核。作为一个轻量级的操作系统,功能包括:任务管理、时间管理、信号量、消息队列、内存管理、记录功能、软件定时器、协程等,可基本满足较小系统的需要。由于RTOS需占用一定的系统资源(尤其是RAM资源),只有μC/OS‑II、embOS、salvo、FreeRTOS等少数实时操作系统能在小RAM单片机上运行。相对μC/OS‑II、embOS等商业操作系统,FreeRTOS操作系统是完全免费的操作系统,具有源码公开、可移植、可裁减、调度策略灵活的特点,可以方便地移植到各种单片机上运行。然而,这就面临一个问题,单片机的无论是算力上或者存储能力上都相对偏弱,要在这样的系统下实现GUI应用开发,显然现有的成熟的开发前端框架是无法直接使用的,并且现有的HTML解析器也是无法集成在低算力,小内存,小存储的freeRTOS系统中的。
[0061] 下面将结合附图,对本申请实施例提供的一种基于freeRTOS嵌入式系统的应用开发方法进行介绍。
[0062] 请参见图1,图1是本申请实施例提供的一种基于freeRTOS嵌入式系统的应用开发方法的流程示意图,该方法包括以下步骤:
[0063] S101:获取应用层GUI页面排版的HTML/CSS。
[0064] HTML的英文全称是 Hyper Text Markup Language,即超文本标记语言。HTML是由Web的发明者 Tim Berners‑Lee和 Daniel W. Connolly于1990年创立的一种标记语言,它是标准通用化标记语言SGML的应用。用HTML编写的超文本文档称为HTML文档,它能独立于各种操作系统平台(如UNIX, Windows等)。使用HTML,将所需要表达的信息按某种规则写成HTML文件,通过专用的浏览器来识别,并将这些HTML文件“翻译”成可以识别的信息,即我们所见到的网页。
[0065] 层叠样式表CSS(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。CSS不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。
[0066] HTML/CSS属于应用程序开发的前端开发技术,其存储与本方案框架的应用层。当需要对HTML/CSS进行解析时,可由应用层获取GUI页面排版的HTML/CSS。
[0067] S102:对所述HTML进行解析并调用GUI框架LVGL进行界面渲染。
[0068] 在获取GUI页面排版的HTML/CSS后,需要对HTML进行解析。由于HTML的解析过程是往复的,因此不能被一般的自顶向下或自底向上的解析器所解析。在大型系统中,浏览器为HTML定制了专门的解析器。然而,浏览器的解析器过于庞大,无法直接应用于freeRTOS嵌入式系统中。
[0069] 本实施例中,位于引擎处理层的HTML解析器采用精简版的HTML解析器,该精简版的HTML解析器通过对现有的浏览器中的解析器进行精简,实现了有限元素和属性的解析,例如:div,button,label, image等。对于freeRTOS嵌入式系统中不会用到的元素和属性进行剔除,使得该精简版的HTML解析器占用空间极小,可直接应用于freeRTOS嵌入式系统的应用开发,解析HTML。
[0070] 通过精简版的HTML解析器对HTML进行解析,解析所述HTML的元素信息和属性信息,根据所述元素信息和属性信息创建DOM树。在此之后,需要判断是否绑定了DOM事件,所是,则建立DOM事件和JavaScript的对应关系;否则,设置DOM的属性;并且调用GUI框架层的LVGL,根据DOM树完成界面的渲染。LVGL为采用C语言编写的图形库,其包含一个HAL(硬件抽象层)接口,用于注册显示和输入设备驱动程序,应用程序可以通过调用LVGL库来创建GUI。本实施例中,通过采用精简版的HTML解析器对HTML进行解析,并且调用GUI框架层的LVGL进行界面的渲染,以实现HTML的显示。通过本实施例中的精简版的HTML解析器,实现了在freeRTOS嵌入式系统下高效开发GUI应用,避免了使用大型的成熟的前端框架进行开发而无法在小系统中解析的问题,使得在freeRTOS嵌入式系统下高效开发GUI应用成为可能。
[0071] S103:获取应用层GUI页面的JavaScript的数据,并对所述JavaScript的数据进行绑定。
[0072] 在上述步骤中,精简版的HTML解析器对HTML进行解析后,建立DOM树;在调用GUI框架层的LVGL进行界面的渲染前,需要判断DOM的属性是否绑定了数据,若是,则说明在解析过程中碰到JavaScript代码,则需要建立DOM属性和JavaScript的数据属性的对应关系,以根据JavaScript对应的数据属性修改相应的DOM的属性。此时,获取应用层GUI页面的JavaScript的数据并对所述JavaScript的数据进行绑定,将DOM中相应的属性值进行更新,以便后续能够准确地进行渲染。若DOM的属性未绑定数据,则直接调用GUI框架的LVGL进行界面渲染。
[0073] 进一步地,在建立DOM属性和JavaScript的数据属性的对应关系时,可以建立哈希数据表,将key设置为JavaScript的数据的路径;并将value设置为DOM属性。
[0074] S104:基于嵌入式JavaScript引擎对所述JavaScript的数据进行监控,并根据JavaScript的数据变化刷新渲染所述界面信息。
[0075] 调用GUI框架的LVGL进行界面渲染,显示设备则可以显示渲染的结果。然而,该结果为一个静态的界面,其仅仅展示了渲染时DOM树的数据。然而,静态界面并不能满足用户的需求,尤其是嵌入式系统中,需要动态的界面以展示用户所需的信息。因此,本实施例中,在调用GUI框架的LVGL进行界面渲染后,还包括基于嵌入式JavaScript引擎对所述JavaScript的数据进行监控,并根据JavaScript的数据变化刷新渲染所述界面信息。
[0076] 具体地,本实施例中,所述嵌入式JavaScript引擎为Duktape引擎。 Duktape是一个嵌入式Javascript引擎,专注于可移植性和空间占用;易于集成到C/C++项目中,使用API实现C代码与JS代码的双向调用。
[0077] 具体地,通过调用所述Duktape引擎的proxy函数监控所述JavaScript的数据的变化;若所述JavaScript的数据发生变化,则查询所述哈希数据表;获取对应的DOM对象和属性值;根据所述JavaScript的数据的变化修改所述对应的DOM对象和属性值;并且根据修改后的DOM刷新渲染所述界面信息。
[0078] 本实施例中,通过嵌入式JavaScript引擎对JavaScript的数据的变化进行监控,以实现界面的动态刷新,提高了用户体验。
[0079] S105:建立所述Javascript引擎与C语言桥接接口。
[0080] 通过上述描述可知,本申请的一个实施例中,已经实现了页面加载以及数据的动态绑定,以此实现界面的动态渲染。然而,对于嵌入式系统而言,其主要作用不仅仅是对界面的显示,还应包含事件的监控和处理,因此,本申请的实施例中,进一步包括对事件的处理。在嵌入式系统中,事件包括多种类型,并不仅仅局限于用户界面事件,还包括传感器事件、网络事件、定时器事件等等。然而,在GUI框架层触发的事件,需要经过注册监听、事件源上执行、生成事件对象、执行响应代码等一系列的操作,最终返回结果以供GUI框架层进行渲染显示,然而这一系列的过程中,需要频繁的与Javascript进行交互。在freeRTOS嵌入式系统下开发GUI应用的过程中对事件监听的处理,对于一个编程人员而言,不仅需要精通Javascript和C语言,并且需要了解两种语言的各个函数以及其关联性,这无疑造成了应用开发的难度。
[0081] 在本实施例中,通过建立所述Javascript引擎与C语言桥接接口,通过该桥接接口与Duktape引擎进行交互,Duktape使用API可实现C代码与JS代码的双向调用,以实现事件的监听和响应。
[0082] 在本申请一个实施例中,所述建立所述Javascript引擎与C语言桥接接口,包括:获取所述Duktape引擎的各函数及函数调用逻辑关系;基于C语言函数调用逻辑改写并内嵌所述Duktape引擎的各函数,得到各改写函数;将所述改写函数进行集成封装。可以理解的是,C语言中包含大量的函数,并且C语言和Javascript属于两种不同的语言,C语言和Javascript之间的相互调用及其复杂,若让开发者通过人工的方式来实现C代码与JS代码的双向调用,明显是不切实际的。对于嵌入式系统而言,虽然可以采用Duktape引擎实现两种语言的相互调用,但是依旧需要掌握C语言的各个函数以及其与Javascript之间的调用规则,并且若每次事件都需要直接调用Duktape引擎,会增加开发的成本以及牺牲设备的性能,后续若对Duktape引擎进行更换时,需要更改所有直接调用Duktape引擎的相关代码,导致维护困难。因此,本实施例中,通过获取所述Duktape引擎的各函数及函数调用逻辑关系;
基于C语言函数调用逻辑改写并内嵌所述Duktape引擎的各函数,得到各改写函数;将所述改写函数进行集成封装,如此,可以通过本申请的桥接接口对Duktape引擎进行调用,减少系统之间的耦合,减少了与Duktape引擎的直接沟通,方便后续对引擎的升级与替换。
[0083] 可以理解的是,本申请通过建立所述Javascript引擎与C语言桥接接口,这一桥接接口类似于一个黑盒,其包含了嵌入式系统开发过程中常用的C代码与JS代码的双向调用函数以及调用规则,使得开发者并不需要知道黑盒内是如何实现的函数调用关系,仅需要根据该桥接接口,即可实现C代码与JS代码的双向调用,极大地提高了开发效率。
[0084] S106:实时侦测所述界面LVGL的触发事件。
[0085] 目前大部分便携设备都设置有触摸屏、按键以及各种传感器,对于嵌入式系统而言,其主要作用不仅仅是对界面的显示,还应包含事件的侦测和处理,因此,本申请的实施例中,进一步包括对事件的侦测和处理。本申请的一个实施例中,通过建立所述Javascript引擎与C语言桥接接口,以实现事件的监控与处理。本申请在建立所述Javascript引擎与C语言桥接接口后,实时侦测所述界面LVGL的触发事件,若侦测到触发事件,则对该事件进行执行响应,以便用户的操作能够实时的得到回应,提高用户体验。
[0086] S107:基于所述桥接接口和所述Javascript引擎对所述事件进行执行响应。
[0087] 在侦测到所述界面LVGL的触发事件时,基于所述桥接接口和所述Javascript引擎对所述事件进行执行响应。具体地,将所述触发事件及事件参数传递至所述桥接接口;所述桥接接口内嵌调用所述Javascript引擎响应函数;所述Javascript引擎响应函数调用对应的JavaScript代码进行执行,并将所述执行结果通过所述桥接接口传递至所述界面LVGL进行渲染显示。
[0088] 可以理解的是,当界面LVGL侦测到触发事件,其可以通过本申请预先建立好的Javascript引擎与C语言桥接接口,与Duktape引擎进行交互,调用对应的JavaScript代码进行执行。直接简化了开发者的开发流程和开发难度,开发者无需精通C语言以及Javascript,仅需要熟悉桥接接口以及其调用Duktape引擎的接口和规则,即可实现事件的侦测。
[0089] S108:将所述执行响应结果在界面上进行显示。
[0090] 在侦测到触发事件后,通过桥接接口调用Duktape引擎后,获得执行响应结果,将所述执行响应结果在界面上进行显示,以实现对事件的实时渲染。通过执行本实施例中的方法步骤,可以实现在freeRTOS嵌入式系统中高效开发GUI应用,并且可以实时响应用户的操作,将响应结果显示在界面上。
[0091] 可以理解的是,本申请实施例中的一种基于freeRTOS嵌入式系统的应用开发方法,其具有一套引擎,可完成应用代码的解析运行,具体地,其在解析过程中主要包含以下三部分流程:
[0092] 1.页面加载流程
[0093] 引擎实现一套精简版的HTML解析器,实现有限的元素和属性(例如div,button,label, image等)解析,建立DOM树,设置属性,根据DOM树,调用GUI框架LVGL完成界面的渲染。
[0094] 2.数据绑定流程
[0095] 在解析HTML时,建立DOM属性和页面代码JavaScript的data属性绑定关系,使用哈希表保存,key为data的路径,value保存dom对象和属性。
[0096] 引擎使用duktape的proxy方法监控data的变化,如果数据变化,查询hash表,获取需要修改的DOM对象和属性值,完成对页面的更新渲染。
[0097] 3.事件处理流程
[0098] 在解析HTML时,建立DOM事件和JS事件的关系,当LVGL引擎触发事件事件,调用对应的JS的代码,以实现事件的处理。
[0099] 接下来参见图2,图2为一种基于freeRTOS嵌入式系统的应用开发的框架图。本申请另一实施例提供了一种基于freeRTOS嵌入式应用开发系统,所述系统采用如上述方法进行应用开发,所述系统包括:
[0100] 开发应用层,包括对应用开发页面排版HTML/CSS和JavaScript代码控制;
[0101] 引擎处理层,包括基于C语言开发的第一引擎和嵌入式JavaScript第二引擎,用于解析HTML/CSS、调用JavaScript代码及LVGL、界面渲染;
[0102] GUI框架LVGL层,用于创建对应的GUI图形元素,以被所述引擎处理层调用渲染。
[0103] 其中,所述HTML/CSS代码控制包括:页面对象的排版和属性设置、数据绑定,设置属性和JavaScript的data数据绑定以及建立事件JavaScript的响应函数;
[0104] 所述JavaScript代码控制包括:当前界面数据属性、事件响应函数实现。
[0105] 通过本实施例的三层框架结构,实现了在低算力,小内存,小存储的freeRTOS系统中,解析HTML文件。
[0106] 进一步地,所述系统还包括:所述第一引擎用于对所述HTML/CSS进行解析、数据读取和绑定、界面UI渲染及建立与所述JavaScript第二引擎的桥接接口;
[0107] 所述第二引擎用于JavaScript和C语言代码相互调用。
[0108] 使用本系统,可以在低算力,小内存,小存储的freeRTOS系统中(例如主频384MHz、内存4M、FLASH4M),流畅运行使用HTML、JavaScript开发的应用,大大地提高了开发效率。
[0109] 接下来参见图3,图3是本申请实施例提供的一种计算机设备的示意图,包括:处理器、存储器、网络接口、输入设备以及输出设备;处理器与存储器、网络接口相连,其中,网络接口用于提供网络通信功能,存储器用于存储程序代码,输入设备用于接收输入的指令,以产生与计算机设备的设置以及功能控制有关的信号输入,所述输出设备用于输出数据信息,处理器用于调用程序代码,以执行本申请实施例中基于freeRTOS嵌入式系统的应用开发方法。
[0110] 此外,还应指出,本申请一个示例性实施例还提供了一种计算机可读存储介质,该存储介质中存储了计算机程序,该计算机程序包括程序指令,当一个或多个处理器加载并执行该程序指令,可以实现实施例中对前述自动矫正摄像头方法,这里不再赘述,对采用相同方法的有益效果描述,也在此不再赘述。可以理解的是,程序指令可以被部署在一个或能够互相通信的多个计算机设备上执行。
[0111] 上述计算机可读存储介质可以是前述任一实施例提供的数据处理方法的内部存储单元,例如计算机设备的硬盘或内存。该计算机可读存储介质也可以是该计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(smart media card,SMC),安全数字(secure digital,SD)卡,闪存卡(flash card)等。进一步地,该计算机可读存储介质还可以既包括该计算机设备的内部存储单元也包括外部存储设备。该计算机可读存储介质用于存储该计算机程序以及该计算机设备所需的其他程序和数据。该计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
[0112] 本申请实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。
[0113] 本申请实施例装置中的模块可以根据实际需要进行合并、划分和删减。
[0114] 以上所揭露的仅为本申请的部分实施例而已,当然不能以此来限定本申请之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本申请权利要求所作的等同变化,仍属于发明所涵盖的范围。