CN112199085A - 基于流图绘制的应用程序开发方法、运行方法及装置 - Google Patents

基于流图绘制的应用程序开发方法、运行方法及装置 Download PDF

Info

Publication number
CN112199085A
CN112199085A CN202010948848.2A CN202010948848A CN112199085A CN 112199085 A CN112199085 A CN 112199085A CN 202010948848 A CN202010948848 A CN 202010948848A CN 112199085 A CN112199085 A CN 112199085A
Authority
CN
China
Prior art keywords
node
flow graph
program
information
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202010948848.2A
Other languages
English (en)
Inventor
周立功
王程
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangzhou Zhiyuan Electronics Co Ltd
Original Assignee
Guangzhou Zhiyuan Electronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Guangzhou Zhiyuan Electronics Co Ltd filed Critical Guangzhou Zhiyuan Electronics Co Ltd
Priority to CN202010948848.2A priority Critical patent/CN112199085A/zh
Publication of CN112199085A publication Critical patent/CN112199085A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本申请实施例公开了基于流图绘制的应用程序开发方法、运行方法及装置。本申请实施例提供的技术方案,通过预先创建多个节点程序及相对应的绘图模块,基于用户选择的绘图模块及各个绘图模块之间的连接关系构建流图,将流图对应转换为流图信息,基于该流图信息提取对应的节点程序,并提取预设的流图基础通用程序,以流图信息、对应的各个节点程序以及流图基础通用程序构建嵌入式应用程序的源文件。基于源文件生成固件并烧录入嵌入式平台,由流图基础通用程序根据流图信息依序将对应的节点程序实例化并运行,以此即可实现嵌入式应用程序的运行。采用上述技术手段,通过绘制流图进行嵌入式应用程序的开发,以此降低程序的开发难度,提升程序开发效率。

Description

基于流图绘制的应用程序开发方法、运行方法及装置
技术领域
本申请实施例涉及嵌入式应用程序开发技术领域,尤其涉及基于流图绘制的应用程序开发方法、运行方法及装置。
背景技术
目前,传统的嵌入式应用程序开发由于开发流程繁杂,导致其开发门槛相对较高。通常一个应用程序往往会涉及到多个方面的技术,比如一个看似简单的温控器,可能涉及到的方面就有人机交互(GUI)、文件***、数据采集、各种协议栈(如TCP/IP、MQTT、Modbus、CANOpen等)、算法、底层驱动等等。虽然现在很多技术点都有现成的模块(库)可用,但应用程序开发仍然需要了解各种概念,熟悉各个模块(库)的API手册,掌握API的调用方法,这其间仍然包含了很大的工作量,使得应用程序的开发效率普遍偏低。而在嵌入式***中,嵌入式应用程序(裸机程序或基于轻量级实时操作***的应用程序)占有较大比例,如何降低这类应用程序的开发门槛及开发难度,是目前亟需解决的技术问题。
发明内容
本申请实施例提供基于流图绘制的应用程序开发方法、运行方法及装置,能够通过绘制流图进行嵌入式应用程序开发,降低开发难度,提升开发效率。
在第一方面,本申请实施例提供了一种基于流图绘制的嵌入式应用程序开发方法,包括:
预先创建多个节点程序及相对应的绘图模块,所述节点程序与对应的所述绘图模块存在映射关系,各个所述节点程序包含对应的节点ID、后继节点ID及程序代码,所述程序代码用于支持所述节点程序的数据产生、处理和/或传输;
基于用户选择的所述绘图模块及各个所述绘图模块之间的连接关系构建流图,所述连接关系标识所述流图中各个所述绘图模块对应的所述节点程序之间的数据流关系信息;
将所述流图对应转换为流图信息,所述流图信息包含各个节点程序的节点ID、后继节点ID以及所述数据流关系信息,所述流图信息为供程序识别的代码;
基于所述流图信息提取对应的所述节点程序,并提取预设的流图基础通用程序,以所述流图信息、对应的各个所述节点程序以及所述流图基础通用程序构建嵌入式应用程序的源文件,所述流图基础通用程序用于根据所述流图信息依序将对应的所述节点程序实例化并运行。
进一步的,所述节点程序包含第一节点、第二节点和第三节点;所述第一节点用于产生数据,将数据传递给后继节点,所述第二节点用于处理数据,将数据传递给后继节点,所述第三节点用于处理数据,终止数据流。
进一步的,在以所述流图信息、对应的各个所述节点程序以及所述流图基础通用程序构建嵌入式应用程序的源文件之后,还包括:
对已构建的所述流图中的所述绘图模块和/或所述连接关系进行修改,构成新的流图,并基于新的流图构建新的嵌入式应用程序的源文件。
进一步的,将所述流图对应转换为流图信息,包括:
基于所述映射关系确定所述流图中的各个所述绘图模块对应的所述节点程序,并提取对应的所述节点程序的节点ID和后继节点ID;
根据所述流图中的所述连接关系确定对应的所述节点程序之间的数据流关系信息;
基于所述节点ID、所述后继节点ID和所述数据流关系信息生成流图信息。
在第二方面,本申请实施例提供了一种基于流图绘制的嵌入式应用程序运行方法,所述嵌入式应用程序通过如本申请实施例第一方面所述的基于流图绘制的嵌入式应用程序开发方法生成并生成固件烧入嵌入式平台中,其特征在于,包括:
在运行嵌入式应用程序时,通过流图基础通用程序加载流图信息;
所述流图基础通用程序基于所述流图信息包含的节点ID,后继节点ID及数据流关系信息依序提取节点程序进行实例化,并运行实例化后的所述节点程序。
进一步的,所述流图基础通用程序基于所述流图信息包含的节点ID,后继节点ID及数据流关系信息依序提取节点程序进行实例化,还包括:
所述流图基础通用程序提取对应的自定义配置属性,将所述自定义配置属性添加至所述节点程序中,所述自定义配置属性预先对应所述节点程序存储于所述流图基础通用程序。
进一步的,在通过流图基础通用程序加载流图信息之前,还包括:
以指定事件为触发源,在所述指定事件产生时,将所述指定事件的事件源信息以及对应触发的节点ID放入事件队列中,基于所述事件队列的事件处理触发对应嵌入式应用程序的运行。
在第三方面,本申请实施例提供了一种基于流图绘制的嵌入式应用程序开发装置,包括:
创建模块,用于预先创建多个节点程序及相对应的绘图模块,所述节点程序与对应的所述绘图模块存在映射关系,各个所述节点程序包含对应的节点ID、后继节点ID及程序代码,所述程序代码用于支持所述节点程序的数据产生、处理和/或传输;
绘图模块,用于基于用户选择的所述绘图模块及各个所述绘图模块之间的连接关系构建流图,所述连接关系标识所述流图中各个所述绘图模块对应的所述节点程序之间的数据流关系信息;
转换模块,用于将所述流图对应转换为流图信息,所述流图信息包含各个节点程序的节点ID、后继节点ID以及所述数据流关系信息,所述流图信息为供程序识别的代码;
编码模块,用于基于所述流图信息提取对应的所述节点程序,并提取预设的流图基础通用程序,以所述流图信息、对应的各个所述节点程序以及所述流图基础通用程序构建嵌入式应用程序的源文件,所述流图基础通用程序用于根据所述流图信息依序将对应的所述节点程序实例化并运行。
在第四方面,本申请实施例提供了一种电子设备,包括:
存储器以及一个或多个处理器;
所述存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如第一方面所述的基于流图绘制的嵌入式应用程序开发方法。
在第五方面,本申请实施例提供了一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行如第一方面所述的基于流图绘制的嵌入式应用程序开发方法。
本申请实施例通过预先创建多个节点程序及相对应的绘图模块,基于用户选择的绘图模块及各个绘图模块之间的连接关系构建流图,将流图对应转换为流图信息,基于该流图信息提取对应的节点程序,并提取预设的流图基础通用程序,以流图信息、对应的各个节点程序以及流图基础通用程序构建嵌入式应用程序的源文件。基于源文件生成固件并烧录入嵌入式平台,由流图基础通用程序根据流图信息依序将对应的节点程序实例化并运行,以此即可实现嵌入式应用程序的运行。采用上述技术手段,通过绘制流图的方式进行嵌入式应用程序的开发,以此降低嵌入式应用程序的开发难度,简化嵌入式应用程序的编码操作,提升程序开发效率。
附图说明
图1是本申请实施例一提供的一种基于流图绘制的嵌入式应用程序开发方法的流程图;
图2是本申请实施例一中通过流图绘制生成源文件的示意图;
图3是本申请实施例一中的绘图模块示意图;
图4是本申请实施例一中的节点基类示意图;
图5是本申请实施例一中的节点类示意图;
图6是本申请实施例一中节点间的数据处理示意图;
图7是本申请实施例一中的一种应用程序对应流图的示意图;
图8是本申请实施例一中的另一种应用程序对应流图的示意图;
图9是本申请实施例一中的流图信息转换流程图;
图10是本申请实施例一中嵌入式应用程序源文件的构成示意图;
图11是本申请实施例一中的流图基础通用程序示意图;
图12是本申请实施例一中流图基础通用程序的流图加载器示意图
图13是本申请实施例一中流图基础通用程序的节点仓库示意图;
图14是本申请实施例一中嵌入式应用程序实现运行的流程图;
图15是本申请实施例二提供的一种基于流图绘制的嵌入式应用程序运行方法流程图;
图16是本申请实施例二中节点间数据流处理示意图;
图17是本申请实施例三提供的一种基于流图绘制的嵌入式应用程序开发装置的结构示意图;
图18是本申请实施例四提供的一种电子设备的结构示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面结合附图对本申请具体实施例作进一步的详细描述。可以理解的是,此处所描述的具体实施例仅仅用于解释本申请,而非对本申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本申请相关的部分而非全部内容。在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作(或步骤)描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
本申请提供的基于流图绘制的应用程序开发方法和运行方法,旨在通过绘制流图的方式构建嵌入式应用程序的源文件,以此来替代应用程序开发的编码过程,使得嵌入式应用程序的开发得以简化,进而降低嵌入式应用程序的开发难度,提升开发效率。相对于传统的嵌入式应用程序开发方式,其开发门槛相对较高,通常一个应用程序开发往往会涉及到多个方面的技术。例如,一个看似简单的温控器,可能涉及到的方面就有人机交互(GUI)、文件***、数据采集、各种协议栈(TCP/IP、MQTT、Modbus、CANOpen……)、算法、底层驱动等等。虽然现在很多技术点都有现成的模块(库)可用,但应用程序开发仍然需要了解各种概念,熟悉各个模块(库)的API手册,掌握API的调用方法,这其间仍然包含了很大的工作量,使得应用程序的开发效率普遍偏低。
虽然目前为了降低软件开发的门槛,提升开发效率,在市面上已经出现了许多新的编程方法。比如LabVIEW、node-red等图形化编程方式。此外,近几年兴起的“少儿编程”,也大多是采用“图形化”的,以便于编程入门。然而,上述编程方式仅仅是通过绘图的方式实现特定的应用程序。且其实现的应用程序仅能运行在PC或大资源嵌入式***(Linux)中,而无法运行在一些低资源裸机平台(如Cortex-M0@48MHz,64KRAM256KFLASH)或轻量级实时操作***(uCosII/III、FreeRTOS)中。即这类开发应用程序的方法,与平台关联性极高,只能应用在某个特定的范围。而还有大量的嵌入式应用程序目前还根本无法通过绘图的形式开发。在嵌入式***中,嵌入式应用程序(裸机程序或基于轻量级实时操作***的应用程序)占有较大比例,基于此,提供本申请实施例的基于流图绘制的嵌入式应用程序开发方法,以降低这类应用程序的开发门槛及开发难度,解决通过绘制流图开发嵌入式应用程序的技术问题。
实施例一:
图1给出了本申请实施例一提供的一种基于流图绘制的嵌入式应用程序开发方法的流程图,本实施例中提供的基于流图绘制的嵌入式应用程序开发方法可以由基于流图绘制的嵌入式应用程序开发设备执行,该基于流图绘制的嵌入式应用程序开发设备可以通过软件和/或硬件的方式实现,该基于流图绘制的嵌入式应用程序开发设备可以是两个或多个物理实体构成,也可以是一个物理实体构成。一般而言,该基于流图绘制的嵌入式应用程序开发设备可以是电脑等智能设备。
下述以电脑为执行基于流图绘制的嵌入式应用程序开发方法的主体为例,进行描述。参照图1,该基于流图绘制的嵌入式应用程序开发方法具体包括:
S110、预先创建多个节点程序及相对应的绘图模块,所述节点程序与对应的所述绘图模块存在映射关系,各个所述节点程序包含对应的节点ID、后继节点ID及程序代码,所述程序代码用于支持所述节点程序的数据产生、处理和/或传输;
S120、基于用户选择的所述绘图模块及各个所述绘图模块之间的连接关系构建流图,所述连接关系标识所述流图中各个所述绘图模块对应的所述节点程序之间的数据流关系信息;
S130、将所述流图对应转换为流图信息,所述流图信息包含各个节点程序的节点ID、后继节点ID以及所述数据流关系信息,所述流图信息为供程序识别的代码;
S140、基于所述流图信息提取对应的所述节点程序,并提取预设的流图基础通用程序,以所述流图信息、对应的各个所述节点程序以及所述流图基础通用程序构建嵌入式应用程序的源文件,所述流图基础通用程序用于根据所述流图信息依序将对应的所述节点程序实例化并运行。
为了降低嵌入式应用程序的开发难度,本申请实施例采用绘制流图的方式进行嵌入式应用程序的开发。参照图2,本申请实施例通过绘制流图,进一步使用相关工具将流图转换成嵌入式应用程序的源文件,以此来实现嵌入式应用程序的开发。用户通过绘制流图来表达程序应用意图,然后由电脑一端的相关工具自动生成嵌入式应用程序源文件,以此即可实现嵌入式应用程序开发流程的简化。
具体的,基于这个思路,用户在进行嵌入式应用程序开发时,只需要使用电脑一端提供的绘图工具进行绘图即可进行嵌入式应用程序开发。可以理解的是,一个嵌入式应用程序开发往往涉及到多个技术点,基于模块化编程的方式,一个应用可由多个模块组成的,而各个技术点往往会被封装为模块,供上层应用开发者使用。则为了通过“绘图”来表达一个嵌入式应用程序,可以将图形的基本元素定义为绘图模块。绘图模块的显示形式如图3所示,在图形上使用一个圆角矩形框表示一个绘图模块。而绘图模块所对应的技术点,则为一个节点,即节点程序,节点程序与对应的绘图模块存在映射关系。为了供后续进行流图绘制,需要预先构建各个绘图模块,并构建对应的节点程序,节点程序为各个绘图模块在嵌入式应用程序的具体实现,后续基于用户绘制的流图,确定对应的节点程序即可构建相应的嵌入式应用程序源文件。
其中,节点是整个***的核心,为了***的良性发展,需要规范节点的定义和实现。具体的,所述节点程序包含第一节点、第二节点和第三节点;所述第一节点用于产生数据,将数据传递给后继节点,所述第二节点用于处理数据,将数据传递给后继节点,所述第三节点用于处理数据,终止数据流。本申请实施例中,在节点构建时,为节点定义如下规约:1、节点最多只能有一个输入端:无输入端的节点将其称之为“Pump节点”(即第一节点),是产生数据的节点,作为一条数据流的起点,比如温度传感器节点;2、节点可以有多个输出端(每个输出端的数据是相互独立的),无输出端的节点往往是最终的动作节点,实现相应功能后数据不再继续传递,这类节点称之为“Sink节点”(即第三节点);3、对于绝大部分节点,都是典型的功能节点,其既有输入,又有输出,且仅对数据完成特定的处理,这类节点称之为“Filter节点”(即第二节点,这里的“Filter”不单单指滤波,而泛指某种“过滤”行为,对数据的任何处理都包含在内);4、节点的单个输出端可以连接至多个节点的输入端(如滤波器节点),以便将同一数据传递至多个节点进行处理;将节点的后继节点称之为“消费者节点”,一个节点可以有多个消费者节点;6、节点功能应该相对单一,便于在不同的应用程序中复用;7、节点可以具有一系列属性(可以通过设置属性完成对该节点的配置)。
进一步的,由于一个应用程序可能包含多个技术点,多个技术点即包含多个节点,则为了保障应用程序开发的多样性,节点的构建需要足够丰富,以满足当前应用程序的开发需要。需要说明的是,本申请实施例中,为了便于后续基于流图绘制就能够进行嵌入式应用程序开发,则在开发节点程序时,节点内部复杂的业务逻辑需要编程实现,并进一步定义节点的输入和输出,以此完成节点程序的构建。而为了统一节点的实现形式,本申请实施例还定义了节点基类,参照图4,节点基类中,定义了几个通用的属性:“id”和“consumer_ids”,“id”是该节点程序唯一的节点ID,用以唯一标识该节点,“consumer_ids”为后继节点ID,用于标识该节点的所有消费者ID,即该节点的数据处理完毕后,将继续传递给这些以ID标识的后继节点。on_data()是一个抽象方法,即节点程序的程序代码,该方法完成对具体数据的处理。
参照图5,根据节点规约中对节点的描述,有三类节点:pump节点、filter节点和sink节点,即上述第一节点、第二节点和第三节点,它们对数据的处理方式可能有所不同。其中,pump节点类(node_pump_t)实现了基类中定义的on_data()抽象方法(将数据传递给后续消费者节点)。pump节点的一个重要作用就是产生数据,但由于不同pump节点产生数据的方式不同,因而定义了input()抽象方法,该方法用于具体pump节点产生数据。此外,pump节点还对外提供了input_and_emit()方法,该方法首先使用input()方法产生数据,然后使用on_data()方法将数据传递给后续消费者节点。由此可见,***调用一次input_and_emit()方法即可启动一条数据流运作,该数据直至所有sink节点处理完毕后结束。filter节点类(node_filter_t)实现了基类中定义的on_data()抽象方法(处理数据,并将数据传递给后续消费者节点),但由于不同filter节点处理数据的方式不同,因而定义了transform()抽象方法,该方法由具体的filter节点实现,完成对数据的实际处理。sink节点作为数据流的最后一级节点,不再存在后继消费者,仅需处理数据,因而sink节点类(node_sink_t)不做任何操作,on_data()方法依然由具体的sink节点来实现。
对于绝大部分现有技术点,比如文件***、协议栈、算法等等,很多技术点在传统嵌入式应用程序开发方式中已经以模块(库)的形式实现了。则本申请实施例在创建节点程序时,仅需要经过简单的包装,将其包装成节点模型,实现为pump节点、filter节点或sink节点,就可以作为节点为***所用,整体开发的工作量相对较低。而对于特定的某个应用,一些特殊的复杂业务逻辑则需要开发者采用特定的编程语言(如C语言)自行实现相应的节点程序。但需要说明的是,实现该节点并不会增加工作量,因为无论是采用本申请实施例的应用程序开发方法还是采用传统的开发方法,核心的业务逻辑是无论如何都要自行实现的,本申请实施例仅需要将核心业务逻辑包装成节点模型,以便以节点的形式存储在PC端中。并且,一旦将某种功能以节点的形式实现后,后续在应用程序开发时,即可直接复用。
完成上述绘图模块和对应节点程序的开发之后,即可进行应用程序开发。示例性的,用户通过PC端提供的绘图工具选取绘图模块,将各个绘图模块按照数据流的关系连接在一起,以此完成流图的绘制。
可以理解的是,绘图模块只是表达了一个嵌入式应用程序由多个节点组成,但各个绘图模块对应的节点程序之间是如何交互的,则需要绘图模块的连接关系体现。只有知道节点之间的交互,才能够完整、准确地表达嵌入式应用程序的意图。对于绝大部分应用程序,其功能的实现无非就是“数据的流动”。例如,一个温度采集***,其数据的起点为温度传感器,而后经过滤波处理,最后输出至GUI显示或通过网络传送到云端。基于这一数据传输思路,将“数据”作为节点间交互的核心,数据从一个节点流入,经过处理后,再流出到下一个节点,此处节点是以数据流动为核心的。基于此,对于一个嵌入式应用程序即可通过流图来表示。参照图6,提供一个温度采集***的流图示意图,其中,对应各个绘图模块表示各个节点,温度传感器节点负责采集温度数据,然后将温度输入到滤波器节点,滤波器完成对温度数据的滤波后,输入至节点3、4、5,分别对应串口输出、GUI显示、MQTT输出(通常云端都采用MQTT协议,进而可以将该温度数据上传云端)。以此,即可通过流图表征嵌入式应用程序的相关节点,并通过绘图模块的连接关系表征节点间的数据流关系信息。
而在嵌入式***中,协议转换应用是一种十分广泛的应用,例如:UART转蓝牙、UART转CAN、UART转CANFD、SPI转CAN、UART转以太网、UART转Wi-Fi等。这种协议转换基本逻辑都是一致的,其数据以一种形式流入,经过处理后再以另一种形式流出。以CAN转蓝牙模块为例,该嵌入式应用程序对应的数据流图参照图7,其中,CAN Reader负责读取CAN数据。CAN数据帧中,每个报文最多携带8字节数据,而蓝牙往往可以支持几十字节的传输,因而先将CAN Reader中的数据使用Buffer节点缓存起来,待达到一定量的数据(例如:80字节)或超时后(例如:虽不满80字节,但接收到数据5s后还未接收到新的数据)再将缓存中的数据传输到下一节点。ProtoBuffer Encoder用于对数据进行必要封装,以区分是“配置数据”还是“透传数据”(CAN Reader读取的是透传数据)。最终将打包好的数据传输至BlueToothWriter节点,以蓝牙的形式发送出去。BlueTooth Reader节点用于读取蓝牙端接收到的数据,其中可能包含“透传数据”(需要传输至CAN端的数据),也可能包含配置数据(配置***中的一些参数),ProtoBuffer Decoder节点用于解析蓝牙端的数据。如果是配置数据,则传送至Setting节点,对***进行配置,配置可能有一些应答信息需要回应,则传送至ProtoBuffer Encoder节点打包(此时的数据是配置响应数据),再传输至BlueToothWriter节点以蓝牙的形式发送出去。如果是透传数据,则传入segment节点进行分片处理,segment节点用于将数据按照8字节进行分片,以便CAN Writer节点将数据逐帧发送出去。则基于上述流图,即可表征CAN转蓝牙程序中的协议转换。
在一个实施例中,对已构建的所述流图中的所述绘图模块和/或所述连接关系进行修改,构成新的流图,并基于新的流图构建新的嵌入式应用程序的源文件。由于流图中的节点可以在多应用中复用,因而基于流图的应用开发可以提高开发效率。例如,在上述CAN转蓝牙的流图基础上再设计一款CAN转UART产品时,则仅需将BlueTooth Writer节点和BlueTooth Reader节点相应地修改为UART Writer和UART Reader即可,其流图参照图8所示。
进一步的,用户完成流图绘制后,对于电脑一端,即可基于流图构建嵌入式应用程序的源文件。由于流图是图形化形式的数据,需要转换成供程序识别的代码,即流图信息。参照图9,流图信息转换的流程包括:
S1301、基于所述映射关系确定所述流图中的各个所述绘图模块对应的所述节点程序,并提取对应的所述节点程序的节点ID和后继节点ID;
S1302、根据所述流图中的所述连接关系确定对应的所述节点程序之间的数据流关系信息;
S1303、基于所述节点ID、所述后继节点ID和所述数据流关系信息生成流图信息。流图信息就是将流图转换为程序代码可以识别的信息,并保存到相应的文件中。
示例性的,流图信息要供C程序使用,则可以将流图信息转换为一个数组信息,流图信息的伪代码示意如下:
Figure BDA0002676229990000101
Figure BDA0002676229990000111
其中,数组信息中包含了多条信息,每条信息详细地描述了一个节点,其包含3部分信息:节点名称,节点ID和后继节点ID(数据输出至这些节点,若为NULL,则表示数据传输终止,不再继续传递)。并且,根据数据信息的排列顺序,可以确定节点间的数据流关系信息。需要说明的是,流图信息如果要供其它语言的程序使用,例如JavaScript,则可以将流图信息保存为JSON文件,这一步骤可以通过开发相应的PC端工具来自动完成。
进一步的,完成上述流图信息转换之后,接口进行嵌入式应用程序源文件的生成。其中,参照图10,嵌入式应用程序的源文件包括了流图信息、节点程序和流图基础通用程序3部分程序代码。其中,由于流图信息中只包含了节点ID、后继节点ID和数据流关系信息,则要使应用程序实现相应的功能,还需要根据流图信息中的节点ID提取预先创建的对应节点程序,以通过节点程序来实现相应节点的功能。而除此之外,为了使源文件生成的固件烧入嵌入式平台后能够加载相应的节点程序并依据流图信息的数据流关系运行,则需要在源文件中加入一个流图基础通用程序。流图基础通用程序需要在电脑一端构建,在确定流图信息和相应的节点程序之后,将两者与流图基础通用程序一并构成对应嵌入式应用程序的源文件。
具体的,流图基础通用程序就是一段通用的代码,其主要作用是读取流图信息,并依照流图信息中的数据流关系,获取数据流起点(pump节点)中的数据,然后传递给下一个节点,进而实现整个应用程序功能。流图信息作为这份通用程序的输入,即使流图发生改变,这份通用应用程序也无需作任何变化。其中,参照图11,该流图基础通用程序由node_manager(节点管理器)、graph loader(流图加载器)、node factory(节点工厂)和noderespository(节点仓库)4个部分组成。节点管理器负责管理***中的各个节点,用户通常只需要与节点管理器交互。节点管理器提供了add()、remove()方法用于增加和删除节点,find()方法用于查找指定节点(通过id、名称等关键信息),foreach()方法用于遍历***中的各个节点,load_granph()用于通过流图加载器加载流图信息。流图信息代表了整个应用程序的功能,加载不同的流图信息,基于流图信息实例化节点程序,就可实现不同的应用程序。换句话说,即使在运行过程中,也可以通过加载不同流图信息来达到切换应用程序的目的。此外,节点管理器还可以通过节点仓库存储节点中需要持久化的属性,当节点程序加载完成后,节点管理器会遍历每个节点程序,并使用节点仓库提供的load()方法将持久化属性提取出来,更新节点属性,确保流图在运行时,节点使用的是最新的属性。graphloader(流图加载器)主要用于加载流图信息。在流图信息中,包含了节点名称,节点ID和后继节点ID等关键信息,graph loader将这些信息加载进来,然后供其它部分使用。由于流图信息的形式可能多种多样(C数组、JSON文件等)。因此加载器基类是抽象的,其定义了load()抽象方法,具体加载方法由实际的加载器实现。graph loader(流图加载器)如图12所示,如果还要增加其它类型的流图信息,则通过增加相应的加载器即可。流图加载器的主要作用是加载流图信息到***中,并将流图信息中的各个节点名称传递给节点工厂,由节点工厂完成节点的创建(即节点的实例化)。节点创建完成后,一些流图信息中的属性值(比如id、consumer_ids等)也一并设置到节点中。节点工厂负责完成节点的创建,在一个实际的***中,会有各式各样不同的节点,节点工厂的存在,简化了节点的创建过程,使得节点的创建变得非常简单。流图信息中存储了节点ID,将节点ID依次传递给节点工厂,节点工厂提取对应的节点程序进行实例化,即可完成各个节点的创建。需要说明的是,在实际应用中,除了id和consumer_ids等基础属性之外,部分节点可能还具有其它自定义配置属性。例如温度报警节点,可能具有温度上限值和温度下限值两个自定义配置属性,有的自定义配置属性是临时的,有的自定义配置属性可能是需要持久化的(掉电不丢失,需要存储到非易失存储器中)。为了更好的支持节点属性的持久化,定义了节点仓库类,节点仓库如图13所示,其完成节点中非易失属性的存储(save)和提取(load)。为了标识哪些属性需要持久化,可以在节点中添加对属性的描述,通过在属性描述中添加相应标识符来表征这一信息。不同***可能采用不同的存储方式,因而节点仓库基类是一个抽象类,仅定义了save()和load()两个抽象方法,这两个方法的实现由具体类负责,比如使用内存模拟的节点仓库(便于测试)、使用文件***实现的节点仓库等。
最终吗,基于上述流图信息、节点程序和基础通用程序三部分代码,即构成本申请实施例嵌入式应用程序的源文件,完成了嵌入式应用程序的编码过程。之后,参照图14,基于源文件,通过固件生成,烧写至嵌入式平台,即可在嵌入式平台运行。基于源文件的固件生成和烧写为现有较成熟技术,在此不多赘述。
上述,通过预先创建多个节点程序及相对应的绘图模块,基于用户选择的绘图模块及各个绘图模块之间的连接关系构建流图,将流图对应转换为流图信息,基于该流图信息提取对应的节点程序,并提取预设的流图基础通用程序,以流图信息、对应的各个节点程序以及流图基础通用程序构建嵌入式应用程序的源文件。基于源文件生成固件并烧录入嵌入式平台,由流图基础通用程序根据流图信息依序将对应的节点程序实例化并运行,以此即可实现嵌入式应用程序的运行。采用上述技术手段,通过绘制流图的方式进行嵌入式应用程序的开发,以此降低嵌入式应用程序的开发难度,简化嵌入式应用程序的编码操作,提升程序开发效率。
实施例二:
在上述实施例的基础上,图15提供了本申请实施例二的一种基于流图绘制的嵌入式应用程序运行方法流程图,本申请实施例的基于流图绘制的嵌入式应用程序运行方法可以由嵌入式平台执行。参照图15,该基于流图绘制的嵌入式应用程序运行方法包括:
S210、在运行嵌入式应用程序时,通过流图基础通用程序加载流图信息;
S220、所述流图基础通用程序基于所述流图信息包含的节点ID,后继节点ID及数据流关系信息依序提取节点程序进行实例化,并运行实例化后的所述节点程序。
基于上述实施例一开发的嵌入式应用程序,其烧写至嵌入式平台后,需要通过流图基础通用程序以使整个嵌入式应用程序启动运行。其中,参照上述实施例以流图基础通用程序的功能,通过节点管理器调用流图加载器加载流图信息,基于流图信息调用节点工厂对节点程序进行实例化,以此即可运行该嵌入式应用程序。
需要说明的是,流图基础通用程序在对节点程序实例化时,所述流图基础通用程序还提取对应的自定义配置属性,将所述自定义配置属性添加至所述节点程序中,所述自定义配置属性预先对应所述节点程序存储于所述流图基础通用程序。自定义配置属性预先存储在节点仓库,以供后续调用,详见上述节点仓库的描述,在此不多赘述。
在此之前,嵌入式平台以指定事件为触发源,在所述指定事件产生时,将所述指定事件的事件源信息以及对应触发的节点ID放入事件队列中,基于所述事件队列的事件处理触发对应嵌入式应用程序的运行。具体的,节点管理器有效地管理了所有节点,由于流图应用以数据流动为核心,数据从产生到流动至终点为一次应用程序有效的执行。产生数据由pump节点负责,pump节点提供了input_and_emit()方法,则调用该方法即可启动一条数据流运作。显然,通常并不能以死循环的形式不断调用该方法(因为并不需要一直不间断的产生数据),而是以某一指定事件为触发源,当指定事件产生时,才触发相应的pump节点产生数据。事件源可能多种多样,包括周期性时间事件,例如每隔1s触发一次;外部中断源,例如引脚中断;通信数据,例如在TCP通信中,“数据可读”是一种事件,表明接收到了有效数据;特殊事件,在***空闲时触发,以完成一些需要***空闲时再处理的非紧急事务。基于事件的概念,***运行时需要维护一个“事件队列”,事件产生后并不直接触发pump节点(避免多个事件同时产生时,同时触发多个pump节点)。而是将事件相关的信息,如事件源、要触发的pump节点id等存储到一个事件队列中,再由一个单独的任务(在裸机***中,就是主循环)来检测事件队列。当有事件时,则提取出该事件,并触发一次相应的pump节点(调用其pump_and_emit()方法),进而使整个***在事件的处理中不断运行。以此来触发嵌入式应用程序的启动运行。需要说明的是,事件对应的数据可以携带在事件中,也可以不携带在事件中,而由相应的pump节点到某个特定的位置读取。实例性的,参照图16,其作为一个测试应用,random节点每隔1s产生一个随机数,并通过add()节点加上一个固定值(比如100),最后将结果送至console节点输出至控制台显示。
上述,通过基于实施例一的源文件生成固件并烧录入嵌入式平台,由流图基础通用程序根据流图信息依序将对应的节点程序实例化并运行,以此即可实现嵌入式应用程序的运行。以此可简化嵌入式应用程序的开发。并且,通过节点程序的增加和删除,并修改流图信息,即可实现嵌入式应用程序的重新开发,提升嵌入式应用程序的复用性能,进一步提升嵌入式应用程序的开发效率。
实施例三:
在上述实施例的基础上,图17为本申请实施例三提供的一种基于流图绘制的嵌入式应用程序开发装置的结构示意图。参考图17,本实施例提供的基于流图绘制的嵌入式应用程序开发装置具体包括:创建模块31、绘图模块32、转换模块33和编码模块34。
其中,创建模块31用于预先创建多个节点程序及相对应的绘图模块,所述节点程序与对应的所述绘图模块存在映射关系,各个所述节点程序包含对应的节点ID、后继节点ID及程序代码,所述程序代码用于支持所述节点程序的数据产生、处理和/或传输;
绘图模块32用于基于用户选择的所述绘图模块及各个所述绘图模块之间的连接关系构建流图,所述连接关系标识所述流图中各个所述绘图模块对应的所述节点程序之间的数据流关系信息;
转换模块33用于将所述流图对应转换为流图信息,所述流图信息包含各个节点程序的节点ID、后继节点ID以及所述数据流关系信息,所述流图信息为供程序识别的代码;
编码模块34用于基于所述流图信息提取对应的所述节点程序,并提取预设的流图基础通用程序,以所述流图信息、对应的各个所述节点程序以及所述流图基础通用程序构建嵌入式应用程序的源文件,所述流图基础通用程序用于根据所述流图信息依序将对应的所述节点程序实例化并运行。
上述,通过预先创建多个节点程序及相对应的绘图模块,基于用户选择的绘图模块及各个绘图模块之间的连接关系构建流图,将流图对应转换为流图信息,基于该流图信息提取对应的节点程序,并提取预设的流图基础通用程序,以流图信息、对应的各个节点程序以及流图基础通用程序构建嵌入式应用程序的源文件。基于源文件生成固件并烧录入嵌入式平台,由流图基础通用程序根据流图信息依序将对应的节点程序实例化并运行,以此即可实现嵌入式应用程序的运行。采用上述技术手段,通过绘制流图的方式进行嵌入式应用程序的开发,以此降低嵌入式应用程序的开发难度,简化嵌入式应用程序的编码操作,提升程序开发效率。
本申请实施例三提供的基于流图绘制的嵌入式应用程序开发装置可以用于执行上述实施例一提供的基于流图绘制的嵌入式应用程序开发方法,具备相应的功能和有益效果。
实施例四:
本申请实施四提供了一种电子设备,参照18,该电子设备包括:处理器41、存储器42、通信模块43、输入装置44及输出装置45。该电子设备中处理器的数量可以是一个或者多个,该电子设备中的存储器的数量可以是一个或者多个。该电子设备的处理器、存储器、通信模块、输入装置及输出装置可以通过总线或者其他方式连接。
存储器42作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本申请任意实施例所述的基于流图绘制的嵌入式应用程序开发方法对应的程序指令/模块(例如,基于流图绘制的嵌入式应用程序开发装置中的创建模块、绘图模块、转换模块和编码模块)。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序;存储数据区可存储根据设备的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器可进一步包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
通信模块43用于进行数据传输。
处理器41通过运行存储在存储器中的软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述的基于流图绘制的嵌入式应用程序开发方法。
输入装置44可用于接收输入的数字或字符信息,以及产生与设备的用户设置以及功能控制有关的键信号输入。输出装置45可包括显示屏等显示设备。
上述提供的电子设备可用于执行上述实施例一提供的基于流图绘制的嵌入式应用程序开发方法,具备相应的功能和有益效果。
实施例五:
本申请实施例还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种基于流图绘制的嵌入式应用程序开发方法,该基于流图绘制的嵌入式应用程序开发方法包括:预先创建多个节点程序及相对应的绘图模块,所述节点程序与对应的所述绘图模块存在映射关系,各个所述节点程序包含对应的节点ID、后继节点ID及程序代码,所述程序代码用于支持所述节点程序的数据产生、处理和/或传输;基于用户选择的所述绘图模块及各个所述绘图模块之间的连接关系构建流图,所述连接关系标识所述流图中各个所述绘图模块对应的所述节点程序之间的数据流关系信息;将所述流图对应转换为流图信息,所述流图信息包含各个节点程序的节点ID、后继节点ID以及所述数据流关系信息,所述流图信息为供程序识别的代码;基于所述流图信息提取对应的所述节点程序,并提取预设的流图基础通用程序,以所述流图信息、对应的各个所述节点程序以及所述流图基础通用程序构建嵌入式应用程序的源文件,所述流图基础通用程序用于根据所述流图信息依序将对应的所述节点程序实例化并运行。
存储介质——任何的各种类型的存储器设备或存储设备。术语“存储介质”旨在包括:安装介质,例如CD-ROM、软盘或磁带装置;计算机***存储器或随机存取存储器,诸如DRAM、DDRRAM、SRAM、EDORAM,兰巴斯(Rambus)RAM等;非易失性存储器,诸如闪存、磁介质(例如硬盘或光存储);寄存器或其它相似类型的存储器元件等。存储介质可以还包括其它类型的存储器或其组合。另外,存储介质可以位于程序在其中被执行的第一计算机***中,或者可以位于不同的第二计算机***中,第二计算机***通过网络(诸如因特网)连接到第一计算机***。第二计算机***可以提供程序指令给第一计算机用于执行。术语“存储介质”可以包括驻留在不同位置中(例如在通过网络连接的不同计算机***中)的两个或更多存储介质。存储介质可以存储可由一个或多个处理器执行的程序指令(例如具体实现为计算机程序)。
当然,本申请实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的基于流图绘制的嵌入式应用程序开发方法,还可以执行本申请任意实施例所提供的基于流图绘制的嵌入式应用程序开发方法中的相关操作。
上述实施例中提供的基于流图绘制的嵌入式应用程序开发装置、存储介质及电子设备可执行本申请任意实施例所提供的基于流图绘制的嵌入式应用程序开发方法,未在上述实施例中详尽描述的技术细节,可参见本申请任意实施例所提供的基于流图绘制的嵌入式应用程序开发方法。
上述仅为本申请的较佳实施例及所运用的技术原理。本申请不限于这里所述的特定实施例,对本领域技术人员来说能够进行的各种明显变化、重新调整及替代均不会脱离本申请的保护范围。因此,虽然通过以上实施例对本申请进行了较为详细的说明,但是本申请不仅仅限于以上实施例,在不脱离本申请构思的情况下,还可以包括更多其他等效实施例,而本申请的范围由权利要求的范围决定。

Claims (10)

1.一种基于流图绘制的嵌入式应用程序开发方法,其特征在于,包括:
预先创建多个节点程序及相对应的绘图模块,所述节点程序与对应的所述绘图模块存在映射关系,各个所述节点程序包含对应的节点ID、后继节点ID及程序代码,所述程序代码用于支持所述节点程序的数据产生、处理和/或传输;
基于用户选择的所述绘图模块及各个所述绘图模块之间的连接关系构建流图,所述连接关系标识所述流图中各个所述绘图模块对应的所述节点程序之间的数据流关系信息;
将所述流图对应转换为流图信息,所述流图信息包含各个节点程序的节点ID、后继节点ID以及所述数据流关系信息,所述流图信息为供程序识别的代码;
基于所述流图信息提取对应的所述节点程序,并提取预设的流图基础通用程序,以所述流图信息、对应的各个所述节点程序以及所述流图基础通用程序构建嵌入式应用程序的源文件,所述流图基础通用程序用于根据所述流图信息依序将对应的所述节点程序实例化并运行。
2.根据权利要求1所述的基于流图绘制的嵌入式应用程序开发方法,其特征在于,所述节点程序包含第一节点、第二节点和第三节点;所述第一节点用于产生数据,将数据传递给后继节点,所述第二节点用于处理数据,将数据传递给后继节点,所述第三节点用于处理数据,终止数据流。
3.根据权利要求1所述的基于流图绘制的嵌入式应用程序开发方法,其特征在于,在以所述流图信息、对应的各个所述节点程序以及所述流图基础通用程序构建嵌入式应用程序的源文件之后,还包括:
对已构建的所述流图中的所述绘图模块和/或所述连接关系进行修改,构成新的流图,并基于新的流图构建新的嵌入式应用程序的源文件。
4.根据权利要求1所述的基于流图绘制的嵌入式应用程序开发方法,其特征在于,将所述流图对应转换为流图信息,包括:
基于所述映射关系确定所述流图中的各个所述绘图模块对应的所述节点程序,并提取对应的所述节点程序的节点ID和后继节点ID;
根据所述流图中的所述连接关系确定对应的所述节点程序之间的数据流关系信息;
基于所述节点ID、所述后继节点ID和所述数据流关系信息生成流图信息。
5.一种基于流图绘制的嵌入式应用程序运行方法,所述嵌入式应用程序通过如权利要求1-4任一所述的基于流图绘制的嵌入式应用程序开发方法生成并生成固件烧入嵌入式平台中,其特征在于,包括:
在运行嵌入式应用程序时,通过流图基础通用程序加载流图信息;
所述流图基础通用程序基于所述流图信息包含的节点ID,后继节点ID及数据流关系信息依序提取节点程序进行实例化,并运行实例化后的所述节点程序。
6.根据权利要求5所述的基于流图绘制的嵌入式应用程序运行方法,其特征在于,所述流图基础通用程序基于所述流图信息包含的节点ID,后继节点ID及数据流关系信息依序提取节点程序进行实例化,还包括:
所述流图基础通用程序提取对应的自定义配置属性,将所述自定义配置属性添加至所述节点程序中,所述自定义配置属性预先对应所述节点程序存储于所述流图基础通用程序。
7.根据权利要求5所述的基于流图绘制的嵌入式应用程序运行方法,其特征在于,在通过流图基础通用程序加载流图信息之前,还包括:
以指定事件为触发源,在所述指定事件产生时,将所述指定事件的事件源信息以及对应触发的节点ID放入事件队列中,基于所述事件队列的事件处理触发对应嵌入式应用程序的运行。
8.一种基于流图绘制的嵌入式应用程序开发装置,其特征在于,包括:
创建模块,用于预先创建多个节点程序及相对应的绘图模块,所述节点程序与对应的所述绘图模块存在映射关系,各个所述节点程序包含对应的节点ID、后继节点ID及程序代码,所述程序代码用于支持所述节点程序的数据产生、处理和/或传输;
绘图模块,用于基于用户选择的所述绘图模块及各个所述绘图模块之间的连接关系构建流图,所述连接关系标识所述流图中各个所述绘图模块对应的所述节点程序之间的数据流关系信息;
转换模块,用于将所述流图对应转换为流图信息,所述流图信息包含各个节点程序的节点ID、后继节点ID以及所述数据流关系信息,所述流图信息为供程序识别的代码;
编码模块,用于基于所述流图信息提取对应的所述节点程序,并提取预设的流图基础通用程序,以所述流图信息、对应的各个所述节点程序以及所述流图基础通用程序构建嵌入式应用程序的源文件,所述流图基础通用程序用于根据所述流图信息依序将对应的所述节点程序实例化并运行。
9.一种电子设备,其特征在于,包括:
存储器以及一个或多个处理器;
所述存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-4任一所述的基于流图绘制的嵌入式应用程序开发方法。
10.一种包含计算机可执行指令的存储介质,其特征在于,所述计算机可执行指令在由计算机处理器执行时用于执行如权利要求1-4任一所述的基于流图绘制的嵌入式应用程序开发方法。
CN202010948848.2A 2020-09-10 2020-09-10 基于流图绘制的应用程序开发方法、运行方法及装置 Pending CN112199085A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010948848.2A CN112199085A (zh) 2020-09-10 2020-09-10 基于流图绘制的应用程序开发方法、运行方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010948848.2A CN112199085A (zh) 2020-09-10 2020-09-10 基于流图绘制的应用程序开发方法、运行方法及装置

Publications (1)

Publication Number Publication Date
CN112199085A true CN112199085A (zh) 2021-01-08

Family

ID=74015641

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010948848.2A Pending CN112199085A (zh) 2020-09-10 2020-09-10 基于流图绘制的应用程序开发方法、运行方法及装置

Country Status (1)

Country Link
CN (1) CN112199085A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113535154A (zh) * 2021-07-16 2021-10-22 麦克方程(北京)科技有限责任公司 无代码编程方法及装置、电子设备、可读存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3850867B1 (ja) * 2005-04-19 2006-11-29 エー・シー・エス株式会社 ソースプログラム作成支援システム
JP2008003817A (ja) * 2006-06-22 2008-01-10 Fuji Electric Holdings Co Ltd プログラム開発支援装置、プログラム開発支援方法およびプログラム開発支援プログラム
CN106933642A (zh) * 2015-12-29 2017-07-07 阿里巴巴集团控股有限公司 应用程序的处理方法及处理装置
CN107632823A (zh) * 2017-08-18 2018-01-26 深圳怡化电脑股份有限公司 一种软件开发方法及装置
CN109933315A (zh) * 2019-02-26 2019-06-25 广州衡昊数据科技有限公司 一种图形化的业务处理***和方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3850867B1 (ja) * 2005-04-19 2006-11-29 エー・シー・エス株式会社 ソースプログラム作成支援システム
JP2008003817A (ja) * 2006-06-22 2008-01-10 Fuji Electric Holdings Co Ltd プログラム開発支援装置、プログラム開発支援方法およびプログラム開発支援プログラム
CN106933642A (zh) * 2015-12-29 2017-07-07 阿里巴巴集团控股有限公司 应用程序的处理方法及处理装置
CN107632823A (zh) * 2017-08-18 2018-01-26 深圳怡化电脑股份有限公司 一种软件开发方法及装置
CN109933315A (zh) * 2019-02-26 2019-06-25 广州衡昊数据科技有限公司 一种图形化的业务处理***和方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113535154A (zh) * 2021-07-16 2021-10-22 麦克方程(北京)科技有限责任公司 无代码编程方法及装置、电子设备、可读存储介质

Similar Documents

Publication Publication Date Title
Clerckx et al. DynaMo-AID: A design process and a runtime architecture for dynamic model-based user interface development
CN111104103B (zh) 一种软件编辑微服务的可视化方法及***
WO2024002299A1 (zh) 应用管理方法、应用订阅方法及相关设备
US9292795B2 (en) Interpretation engine using three predicate values and content addressable memory
CN113542390B (zh) 一种采用内存数据模型的物联网设备管理方法及***
CN109960709B (zh) 一种数据库驱动的处理方法、装置、设备及存储介质
CN112199085A (zh) 基于流图绘制的应用程序开发方法、运行方法及装置
CN113296979B (zh) 一种虚幻引擎与外部程序的数据通信方法
CN113656001A (zh) 平台组件开发方法、装置、计算机设备及存储介质
CN113485840A (zh) 基于Go语言的多任务并行处理装置及方法
CN116680209A (zh) 基于wasm的多智能合约实例管理方法
CN113312031B (zh) 一种软件通信体系结构的命名服务接口
CN113835904A (zh) 一种远程过程调用控制方法、装置、设备及存储介质
CN114860333A (zh) 一种服务编排方法和电子设备
CN109669793B (zh) 中间件进程内对象调用方法
CN114510334A (zh) 类实例的调用方法、装置、电子设备及自动驾驶车辆
CN111400060A (zh) 设备联动方法、装置、服务器和介质
CN110554966A (zh) 一种驱动调试方法、行为分析方法及驱动调试***
CN117033034B (zh) 一种基于指令协议下的数字孪生应用交互***及方法
CN109189368B (zh) 一种构建基于mvp架构的快速开发框架的方法和框架
WO2024041081A1 (zh) 数据处理方法、装置、设备及可读存储介质
CN109743355B (zh) 物联设备功能开发的方法、装置、计算机设备及存储介质
CN110502501B (zh) 数据库操作方法、装置、设备和存储介质
CN110413317B (zh) 基于配置化的流程接口调用方法
CN115510189A (zh) 控制设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information
CB02 Change of applicant information

Country or region after: China

Address after: 510000 room 306, 3rd floor, 43 Sicheng Road, software park, Tianhe District, Guangzhou City, Guangdong Province

Applicant after: GUANGZHOU ZHIYUAN ELECTRONICS Co.,Ltd.

Address before: 510000 room 517, 1023 Gaopu Road, Tianhe Software Park, Tianhe District, Guangzhou City, Guangdong Province

Applicant before: GUANGZHOU ZHIYUAN ELECTRONICS Co.,Ltd.

Country or region before: China