具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,本申请实施例中,术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本申请实施例中,字符“/”,一般表示前后关联对象是一种“或”的关系。
在本申请实施例的描述中,术语“对应”可表示两者之间具有直接对应或间接对应的关系,也可以表示两者之间具有关联关系,也可以是指示与被指示、配置与被配置等关系。
为便于理解本申请实施例的技术方案,以下对本申请实施例的相关技术进行说明,以下相关技术作为可选方案与本申请实施例的技术方案可以进行任意结合,其均属于本申请实施例的保护范围。
图1是图形化编程软件Blockly的软件界面,左边是模块库,用户通过拖拽模块库的模块以搭建积木式的方式进行编程,Blockly包含了基本的逻辑控制和变量定义。从图中可以看出,单个的图形化模块即可以控制机器人的行驶、灯光、声音或者动作,在编程时只需要了解每一个图形化模块的含义,根据逻辑关系实现程序功能。用户编程时无需了解相关硬件知识,上手难度低。
这种类型的图形化软件一个程序模块往往是对应一段文本式程序代码,连入软件***的硬件是固定不变的,硬件***要么是集成硬件,例如达达和达奇机器人,要么是固定接口的硬件,即外接模块的接口是唯一确定的,每个模块只能一一对应到核心主板的某个接口上。这种软件***的扩展不强,一般只支持厂家独有的或特定的几种硬件,不便于二次开发,因此将限制用户创意的发挥。
图2为Mixly的软件主界面,其软件主界面分为模块库、程序编辑框、代码框和信息提示框,用户通过拖拽模块库中的模块在程序编辑框中实现编程,代码框会生成图形模块对应的代码,信息提示框会在程序编译、下载时提示相应的信息。Mixly针对Arduino硬件编程开发了大量的硬件控制驱动,用户可以利用这些功能非常方便地操控Arduino开源硬件。
Mixly为用户开发自己的库提供了接口,用户可以根据需求编写代码,生成相应的图形化程序模块整合到Mixly中,软件可扩展性强。但是由于其硬件操作都是在IO层,与硬件相关的控制需要了解相关的硬件知识,比如IO、AD采样、PWM和中断等单片机基本知识,复杂一点的程序还需要了解模数转换、轮询、硬件延时等。这对于初级者来说具有一定的难度。软件在便于二次开发的同时,也增加了用户使用的难度。另外,Mixly实际上是图形化模块转换为文本式代码编程,更改程序时需要重新编译、下载,耗时较长,影响用户体验。
为了解决上述至少部分缺陷,提出了本申请实施例的以下技术方案。
为了能够更加详尽地了解本申请的特点与技术内容,下面结合附图对本申请的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本申请;所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
图3为本申请实施例提供的一种图形化编程***图A,如图3所示,所述图形化编程***300包括图形化编程单元301、数据处理单元302和连接单元303 ,其中;
所述图形化编程单元301,包括:编辑单元3011,所述编辑单元3011,用于对图元进行编辑操作;所述图元包括模块图标和数据显示窗口,所述模块图标,用于标识模块种类;所述数据显示窗口,用于显示模块的状态;
所述数据处理单元302,包括:模块单元3021、程序处理单元3022和程序解释单元3023,其中,所述模块单元3021中包括所述模块,所述模块与所述图元一一对应,共同组成节点;所述程序处理单元3022,用于反映图形化编程的数据处理流程,所述数据处理流程由所述节点和边构成,所述节点用于处理数据,所述边是所述节点之间的连接线,用于作为数据流通的路径;所述程序解释单元3023,用于执行所述程序处理单元和所述模块单元的功能;
所述连接单元303,用于将所述图形化编程***300与硬件连接。
本申请实施例所提供的图形化编程***300整体分为图形前台展示和后台数据处理,所述图形化编程单元301执行数据前台展示部分的功能,所述数据处理单元302执行后台数据处理的功能。其中,图形化编程单元301中的核心是编辑单元3011中的图元编辑器,用户可以对所述图元进行编辑操作,完成编程操作,所述图元用于***与用户进行交互展示,与所述图元对应模块用于后台的逻辑实现,图元与其对应的模块共同组成节点;
数据处理单元302的核心是程序解释单元3023中的程序解释器,用户在图形化编程单元301进行编程的同时,程序处理单元3022实时进行后台数据处理,显示数据处理流程,程序处理单元3022是基于数据流原理的,所述数据处理流程由边和节点构成,节点又可以称为操作符,是执行运算的部分,边是节点与节点之间的连接线,是数据流通的路径。边上面流通的就是节点处理后的数据,通过激活规则判断一个节点是否可以激活以及什么时候执行操作,这个数据处理过程执行单元就是程序解释器,程序解释器本质上是一段代码,用于执行所述程序处理单元3022和所述模块单元3021的功能。模块会产生数据到输出边上,中间的模块消耗输入边上的数据并且在输出边上产生数据,执行器模块只接收数据,数据传输到执行器模块截止。
本申请实施例数据处理流程基于数据流原理,这样,更改程序后,无需编译下载,就能够改***件的控制逻辑,避免了重新编译下载,节省了时间,提升用户的使用体验。
图4是本申请实施例提供的数据处理流程图,如图4所示,该编程项目实现的功能是按键按一次或者光照强度小于某个阈值就开启彩灯。图中按键、光感和彩灯是节点,代表真实的物理模块,按键表示的是智能按键,光感表示光线传感器,彩灯表示被控制的真实的灯。“常数”、“拨动”、“比较”和“或”是节点,进行逻辑运算功能。真实设备在图形化编程***中都是以一个个小的节点图标进行展示的,通过模块绑定来实现图标和真实设备的关联绑定。
所述图元是用户操作的基本单元,用户在图形化编程单元301中通过编辑单元3011对图元进行编辑操作以构建图形化程序,用户可以通过拖拽图元完成编辑操作,用户在完成图形化编程的过程中的对图元的编辑操作至少包括以下一种:增加、移动、删除,本申请对此不作限定。
基于此,本申请另一实施例提供的图形化编程***,所述编辑单元,具体用于:
对所述图元进行以下至少一种编辑操作:增加、移动、删除。
进一步的,所述图元包括模块图元和连接线图元,所述模块图元指的是在所述模块单元中存在与所述图元对应的模块,所述连接线图元用于将所述模块图元进行连接。
基于此,本申请又一实施例提供的图形化编程***,所述图元包括模块图元和连接线图元。
本申请实施例所提供的图元包括模块图标和数据显示窗口,所述模块图标,用于标识模块种类;所述数据显示窗口,用于显示模块的状态。
本申请实施例中的数据处理单元302可以与硬件进行连接,所述模块可以与硬件相连进行通讯,图元可以通过数据显示窗口显示模块的数据,因为模块与硬件连接通讯,所述图元可以实时显示所述硬件的状态,比如,当所述硬件为开关时,图元便可以实时显示硬件的“开”或者“关”的状态。
其中,模块图标,用于标识模块种类,指的是图元可以标识模块的种类,作为例子,如果模块为按键,其对应的图元的模块图标就是按键图标,如果模块为旋钮,其对应的模块图标就是旋钮图标等,这样可以方便用户在进行图形化编程时能够清楚的识别。
本申请实施例中的图元是通过连接线连接的,图元与连接线的连接点可以作为图元的输入输出端口,用于传送数据。
基于此,本申请又一实施例所提供的的图形化编程***,所述图元还包括:
输入输出端口,用于作为连接点,传送数据。
本申请另一实施例所提供的图形化编程***,所述图元还包括:
参数设置框,用于设置所述模块的参数。
具体的,用户通过所述参数设置框,设置模块的参数,模块又与硬件相互连接通信,用户同时也设置了硬件的参数,这样,通过参数设置框,可以设置模块和硬件参数。作为示例,当硬件为开关时,用户可以在参数设置框设置开关的“开”或“关”的状态。
本申请又一实施例所提供的图形化编程***,所述图元还包括:
设备关联框,用于将所述模块图元与所述模块绑定或解绑。
具体的,当存在多个相同种类的模块时,设备关联框可以将所述模块图元与所述多个相同种类的模块中的任一模块进行绑定或解绑操作,作为示例,当有3个开关硬件存在时,开关模块存在开关1、开关2、开关3分别于3个开关硬件连接,用户可以通过设备关联框将模块图元与开关1绑定,或者当模块图元已经与开关1绑定时,用户可以通过设备关联框将模块图元与开关1解绑,在设备关联框中选择开关2,与开关2进行绑定,或者通过3个模块图元分别与开关1、开关2、开关3进行绑定。
图5是本申请另一实施例提供的图形化编程***图B,如图5所示,该实施例所提供的图形化编程***500是在上述实施例中的的图形化编程***300的基础上增加了第一存储单元5012,所述第一存储单元5012,用于利用文本文档保存图形化编程单元5011中模块图元和连线连接线图元的全部信息。图5中与图3相同的单元的功能可以参照前述图3的相关描述,此处不再赘述。
具体的,第一存储单元5012可以通过文本保存图形化编程单元301中编程项目的模块图元的全部信息,包括模块图元具有哪几个输入输出端口,每个输入端口的数据是通过哪个模块图元的哪个输出端口来的,每个输出端口的数据去了哪里,所述数据是什么,以及所述连接线连接的是哪两个模块图元的哪两个端口等信息。
本申请又一实施例所提供的的图形化编程***,其特征在于,所述第一存储单元5012还用于利用MySQL数据库保存图形化编程过程中的步骤信息。
具体的,第一存储单元5012可以保存用户在编辑单元3011中的操作步骤信息以及设置图元参数的步骤信息等,比如对图元的增加步骤、移动步骤、删除步骤,对开关的状态设置步骤,与模块的绑定与解绑步骤等,通过获取用户的编程数据,为解析用户的编程思维和思考方式提供可能。
本申请另一实施例提供的图形化编程***,所述图形化编程单元301,还包括:
图元模板,用于作为所述图元的基础,提供所有图元共有的元素,生成所述图元。
所述共有的元素及指所述图元共有的功能,比如模块图标、输入输出端口等,具体参考表1,作为示意性的,表1提供了6种所述图元共有的元素。
表1
如表1所示,所述元素包括模块图标、输入输出端口、参数设置框、设备关联框、数据显示窗口、控制端口。具体的,所述模块图标,用于标识模块种类;所述输入输出端口,用于作为模块与模块的连接点,用于数据的传送;所述参数设置框,用于设置模块的参数;所述设备关联框,用于将模块图元与模块进行绑定和解绑;所述数据显示窗口,用于显示模块状态,这里的模块状态可能与设置参数中的参数一致,比如“开”或“关”的状态;所述控制端口,用于设置模块的控制参数,切换图元对应的模块计算函数。
通过这些元素作为图元的基础,所有图元在图元模板的基础上拓展。
示意性的,图6为本申请实施例所提供的按键模块图元,如图6所示,按键模块图元包括按键图标、输出端口、参数设置框和设备关联框,按键模块图元中并没有数据显示窗口,而在其他部分模块图元有数据显示窗口,比如旋钮模块,其数据显示窗口显示的值是旋转电位器的阻值,这个值和参数设置框中的参数值是一致的,由于按键的实体模块的功能是唯一确定的,因此模块对应的计算函数也是唯一的,在按键模块图元上不需要控制端口来切换模块的计算函数。
表2是本申请实施例所提供的模块分类。
表2
如表2所示根据模块功能分为实体模块类、根据功能分为实体模块类、逻辑类、控制类、时间类和数值类模块。实体模块类包含各种传感器和执行器,其余几类都是虚拟模块,虚拟模块用来实现图形化程序中的逻辑控制和数值计算。与实体模块图元类似,虚拟模块的图元也有模块图标、输入输出端口和参数设置框,由于虚拟模块没有对应的物理设备,因此虚拟模块没有设备关联框,部分虚拟模块图元有控制参数端口,用于设置控制参数,从而控制模块的计算函数实现不同的数据处理功能。***中实体类模块的数量可以随着无线模块的开发而不断增加。
基于此,本申请另一实施例所提供的图形化编程***,所述模块包括实体模块和虚拟模块。
对应于图元模板,本申请另一实施例所提供的图形化编程***的数据处理单元301,还包括模块模板,用于作为所述模块的基础,提供所述模块共有的元素,生成所述模块。
模块模板作为模块的基础,所有的模块在模块模板的基础上拓展。
图7是本申请又一实施例所提供的图形化编程***图C,如图7所示,该实施例所提供的图形化编程***700是在上述实施例中的的图形化编程***300的基础上增加了第二存储单元7024,用于存储程序处理单元和模块单元的数据。图7中与图3相同的单元的功能可以参照前述图3的相关描述,此处不再赘述。
具体的,数据处理单元3022和模块单元3021的数据都存储在第二存储单元7024中。
本申请另一实施例所提供的图形化编程***,所述连接单元303,具体用于:
将图形化编程***通过无线网关与硬件连接。
具体的,所述图形化编程***与硬件之间的连接方式为无线连接。
本申请另一实施例所提供的图形化编程***,所述硬件之间的连接方式为无线连接。
图8是本申请另一实施例提供的图形化编程***图D,如图8所示,该实施例中的图形化编程***800是在上述实施例中的的图形化编程***300的基础上增加了仿真单元804,用于在不连接硬件的情况下,对已完成的编程项目进行仿真。图8中与图3相同的单元的功能可以参照前述图3的相关描述,此处不再赘述。
示意性的,图9是本申请实施例提供的仿真单元804进行图形化编程仿真运行示例,如图9所示,实现一个按键旋钮控制灯的示例展示图形化编程***中的仿真运行功能,其中按键模块控制灯的开关状态,旋钮模块控制灯的亮度。
操作步骤如下:
步骤1、在模块种类框中点击实体模块类,弹出模块选择框,长按拖入按键模块、旋钮模块和彩灯模块。
步骤2、点击按键模块的输出端口,按住拖出一条线,将线连接到彩灯模块的输入端口,同理在旋钮模块和彩灯模块之间增加一条线。
步骤3、点击按键模块的图标和彩灯模块的图标,弹出模块参数设置框,将按键模块的状态由关设为开,观察彩灯模块参数设置框中的参数变化。调节旋钮模块的参数值,观察彩灯变化。
图9中左边这个图形化编程项目中所有模块的参数值都是默认值,该编程项目用于对比。右边的图形化编程项目显示的是经过操作步骤3的结果,从图中可以看出,彩灯模块的开关状态跟随按键状态变化,彩灯模块的亮度值也与旋钮模块的数值保持一致。并且按键模块和彩灯模块图标中核心组件的颜色也发生了变化,旋钮模块图标下的数值和参数设置框中的参数值也是一致的。模块在关闭参数设置框时也能非常明显地看到模块的状态和数据。
本申请实施例所提供的图形化编程***在不连接硬件也可以让已完成的编程项目直接仿真运行,仿真运行时会在图形化界面显示模块的状态和数据变化,提供非常人性化的提示和反馈。当已完成的编程项目功能复杂或者手头上暂时没有硬件模块时,可以直接在***中进行图形化编程,模拟运行,简单方便地调试图形化编程。
本申请实施例针对物联网中的硬件***,开发之相应的图形化编程***。图形化***既可以显示传感器模块的数据,又可以图形化编程控制执行器模块,同时本申请实施例提供的图形化编程***具有强扩展性,便于新增实体硬件模块和其对应的***模块。该***能够真正地控制网络中的无线模块,在一定程度上解决编程上手难度和二次创造能力存在的矛盾,降低上手难度,提高二次开发能力。
本申请实施例所提供的的图形化编程***将硬件模块进行封装,可以实时显示传感器模块的数据和控制执行器模块,编程上手简单,并且支持二次开发,支持自定义***中的模块和实体硬件模块,另外,本申请提供的图形化编程***基于数据流的原理,可以实现程序仿真,更改程序后,无需编译下载,就能够改***件的控制逻辑。
在一些实施例中,存储介质可以是磁性随机存取存储器(FRAM,FerromagneticRandom Access Memory)、只读存储器(ROM,Read Only Memory)、可编程只读存储器(PROM,Programmable Read-Only Memory)、可擦除可编程只读存储器(EPROM,ErasableProgrammable Read-Only Memory)、电可擦除可编程只读存储器(EEPROM,ElectricallyErasable Programmable Read-Only Memory)、快闪存储器(Flash Memory)、磁表面存储器、光盘、或只读光盘(CD-ROM,Compact Disc Read-Only Memory)等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
作为示例,可执行指令可以但不一定对应于文件***中的文件,可以被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(HTML,HyperTextMarkup Language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。
作为示例,可执行指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。
需要说明的是:“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
本申请实施例所记载的技术方案之间,在不冲突的情况下,可以任意组合。
申请所提供的几个实施例中,应该理解到,所揭露的方法和电子设备,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个***,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本申请各实施例中的各功能单元可以全部集成在一个第二处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。