CN107750356A - 用于一组基于控制器的装置的自动软件开发的方法和设备 - Google Patents

用于一组基于控制器的装置的自动软件开发的方法和设备 Download PDF

Info

Publication number
CN107750356A
CN107750356A CN201680026822.4A CN201680026822A CN107750356A CN 107750356 A CN107750356 A CN 107750356A CN 201680026822 A CN201680026822 A CN 201680026822A CN 107750356 A CN107750356 A CN 107750356A
Authority
CN
China
Prior art keywords
controller
code
device based
group
function
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.)
Granted
Application number
CN201680026822.4A
Other languages
English (en)
Other versions
CN107750356B (zh
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.)
Ciambella Ltd
Original Assignee
Ciambella 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 Ciambella Ltd filed Critical Ciambella Ltd
Publication of CN107750356A publication Critical patent/CN107750356A/zh
Application granted granted Critical
Publication of CN107750356B publication Critical patent/CN107750356B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/64Retargetable
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Telephonic Communication Services (AREA)
  • Computer And Data Communications (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Stored Programmes (AREA)

Abstract

提供了一种用于组中的基于控制器的装置的软件自动产生的方法和设备。该方法包括为来自于在用户装置上的图形用户接口(GUI)上显示的多个基于控制器的装置的基于控制器的装置,接收如下的选择:控制器类型,用于与一组基于控制器的装置中的另一基于控制器的装置通信的通信协议,该组包括该多个基于控制器的装置,以及基于来自基于控制器的装置的远程调用而执行的功能。

Description

用于一组基于控制器的装置的自动软件开发的方法和设备
技术领域
本发明的实施例大体涉及用于一组基于控制器的装置的自动软件开发的方法和设备。
背景技术
现场可编程门阵列(FPGA)和其它基于控制器的装置(例如基于微控制器或微处理器)(诸如MCU、SoC、移动电话、计算机等)的使用已变得相当普遍。控制器的低制造成本、可用性以及定制化已经导致芯片(SoC)上的微控制器和系统(例如,PIC、ARDUINO、RASPBERRYPI等)由商业公司和类似爱好者使用来产生装置的情况激增。基于控制器的装置包括处理器内核和存储器,它们是可编程的,以处理与外部设备通信的输入/输出数据。NOR FLASH或OTP ROM形式的程序存储器也通常包括在这样的基于控制器的装置以及少量的随机存取存储器(RAM)上。若干这样的基于控制器的装置针对较大的装置中的嵌入式应用而设计。这样的基于控制器的装置的真实世界应用可潜在地包括连接基于控制器的装置与作为外部设备的传统对象或系统,从而实现这样的外部设备的数字化、连接性以及甚至远程控制。然而,在进行这样的真实世界应用时,由于结合云技术与硬件和软件技术的复杂性而存在若干挑战。
大体上,对基于控制器的装置或其组进行编程是非常复杂的。随着“物联网(IoT)”成长,越来越多的这样的基于控制器的装置彼此连接和/或连接至互联网,显著地提高了编程的复杂性。在真实世界情境中,这样的基于控制器的装置可彼此通信和/或与网关通信,使得网关成为用于所谓的边界装置的互联网通信的代理。边界装置可通过一个或更多个网关或直接作为独立装置来通信。在组内,所有的装置(网关和边界)必须以兼容的方式编程来有助于互通性,这会进一步显著地提高对这样的装置进行编程的复杂性。此外,每次实施定制化都管理兼容性可能还过度耗时。对基于控制器的装置的组进行编程对用户而言非常具有挑战性,因为他必须记住编码命令,理解架构,使用合适的调用语法等。即便是一个装置被不正确地编程,用于该装置或组中的另一基于控制器的装置的书面程序也可能不能运行,或产生错误。
因此,现有技术中存在对于简化基于控制器的装置的编程,同时针对一组基于控制器的装置自动地完成该工作的需要。
发明内容
本发明的实施例大体涉及用于一组基于控制器的装置的自动软件开发的方法和设备,基本如结合附图中的至少一个所示和/或所描述的,如权利要求中更完整地阐述的。
本公开的这些和其它特征以及优点可通过结合附图研究本公开的如下详细描述而理解,在附图中,相同的参考标号始终表示相同的部件。
附图说明
以使得能够详细地理解本发明的上述特征的方式,可通过参照实施例做出对上文所简要概述的本发明的更具体的描述,实施例中的一些在附图中显示。然而,要理解的是,附图仅显示了本发明的典型的实施例,且因此不应被理解为限制其范围,因为本发明可允许其它有相同效力的实施例。
图1是根据本发明的实施例的、用于一组基于控制器的装置的自动软件开发的系统100的框图;
图2是根据本发明的实施例的、图1的代码虚拟化服务器执行的用于一组基于控制器的装置的自动软件开发的方法的流程图;
图3是根据本发明的实施例的、用于一组基于控制器的装置的自动软件开发的由图1的设备100的多个装置执行的方法300的流程图;以及
图4-7描绘了根据本发明的实施例的、用于指定基于控制器的装置和相关联的输入的图1的GUI 138的图形用户接口(GUI)屏幕的序列。
具体实施方式
本发明的实施例涉及用于一组基于控制器的装置(例如,具有控制器(诸如微控制器)、微处理器、SoC、MCU的装置)的自动软件开发的方法和设备,该一组基于控制器的装置用作交互式地操作的边界装置或网关装置,且更具体地,本发明涉及产生程序或代码,以用于在形成包括至少一个边界装置和至少一个网关装置的一组互连的基于控制器的装置的边界装置和网关装置上执行。用于基于控制器的装置的代码包括用于在基于控制器的装置上执行的代码(“第一代码”),其包括用于在远离基于控制器的装置的装置(例如代码虚拟化服务器)上执行函数功能(通过执行“第二代码”)的远程调用。第一代码指在基于控制器的装置上执行的完整的程序,或指可包括在用于基于控制器的装置的原有程序中的代码片断。第一代码还包括用于基于控制器的装置的软件开发包(SDK)。SDK包括库,其实现组中的多种基于控制器的装置(边界装置和网关装置)之间的通讯通信,以及网关和代码虚拟化服务器之间的通讯通信,以将来自于组中的任何基于控制器的装置的远程调用发送至代码虚拟化服务器。第二代码包括代码虚拟化服务器上的一个或更多个预定的过程或程序,以用于执行远程调用所调用的函数功能。
在一些实施例中,代码虚拟化服务器还基于与基于控制器的装置相关的输入而自动地产生第一代码。输入是经由远离代码虚拟化服务器的用户装置上的图形用户接口(GUI)而做出的选择。经由GUI所做的选择包括该组的基于控制器的装置、基于控制器的装置的控制器类型、由基于控制器的装置用来与该组中另一基于控制器的装置通信的通信协议、以及基于从基于控制器的装置接收的远程调用而执行的功能。在产生后,第一代码或直接通过代码虚拟化服务器或经由用户装置而安装在基于控制器的装置上。安装在该组的各个装置上的第一代码能实现该组的多个装置之间的互连,从而能实现将来自于组中的任何装置的远程调用经由网关装置发送到代码虚拟化服务器。因此,在执行第一代码的过程中,基于控制器的装置发起远程调用,以用于执行远程功能以及用于该功能的输入和/或输出数据,远程调用和输入/输出数据经由该组的网关发送至代码虚拟化服务器。作为响应,代码虚拟化服务器根据输入/输出数据执行第二代码以执行该功能。以这种方式,通过便利地使用GUI提供输入,针对一组互连的基于控制器的(装置)中的各个装置自动地产生软件(包括SDK的第一代码)。为整个组产生软件,而不必处理对各个基于控制器的装置编程、或根据该组基于控制器的装置中的边界装置和网关装置的互连而单独地为各个基于控制器的装置配置程序的复杂性。
2007年9月11日提交的系列号为11/853,137,2007年9月11日提交的系列号为11/853,143以及2011年1月28日提交的系列号为12/931,292(现为美国专利8,726,285)的共同转让的专利申请描述了用于远程地产生、部署和执行工作流的技术。2014年6月17日提交的系列号为14/307,198,2014年6月17日提交的系列号为14/307,208,2014年6月17日提交的系列号为14/307,227,2014年7月10日提交的系列号为14/328,415,2015年1月9日提交的系列号为14/593,151以及2015年4月13日提交的系列号为14/685,064的共同转让的专利申请描述了用于代码和SDK的自动产生,代码和SDK的虚拟化,产生用于代码虚拟化的远程处理调用的技术以及其它相关的技术。所列的申请描述了用于为结合了控制器的基于控制器的装置自动地开发软件,使用图形用户接口将硬件(诸如传感器或致动器)的使用远程地映射到控制器,以及例如远程地执行软件的技术以经由限定的工作流扩展这样的基于控制器的装置的能力。上文所列出的申请中的各个通过引用以其整体结合在本文中。这些技术通过将代码的片断和/或库(例如SDK)设置在基于控制器的装置的存储器中而起作用,其中,片断在被执行时,调用用于在远程装置(例如代码虚拟化服务器)上执行的功能(或代码部分),和/或将数据发送(直接地,或经由代码虚拟化服务器)至远离代码虚拟化服务器的远程服务,和/或进一步通过远程服务调用将在数据上执行的功能。
本发明的实施例使用这些技术来自动地产生用于包括边界装置和网关装置的组中的若干基于控制器的装置的程序,且边界装置经由网关装置与该组外部通信。利用这样的实施例,针对组中的一些或所有装置,代码自动地产生,这会延展该组的功能,使得能实现另外的装置的插入和参与,同时保持组中的装置的兼容性和互通性。
图1是根据本发明的一个或更多个实施例的、用于一组基于控制器的装置的自动软件开发的系统100的框图。系统100包括多个边界装置102-1…102-N(统称为边界装置102)、网关装置或网关108、网络110、用户计算机112、代码虚拟化服务器114以及远程服务118。在一些实施例中,边界装置102包括配置为边界装置的网关装置102-P。
网络110包括互联网或广域网络(WAN)或其组合,并且可包括跨过该多个装置的一个或更多个这样的网络,如图1所示。设备100的所有的构件都使用已知的方法和构件连接至网络110,或彼此连接,如图1所示。
边界装置102和网关108形成连接至互联网110的一组基于控制器的装置(装置组116,或组116)。组116的装置沿着通信路径106-1…106-N在边界装置102和网关108之间通信。虽然通信路径大体是无线路径,但在一些实施例中,路径可为有线的。此外,在一些实施例中,基于控制器的装置102沿着虚线路径104-1…104-M在它们自身之间通信,虚线路径104-1…104-M统称为104,其包括一对一、一对多、多对多(例如网格网络)连接性配置或它们的任意组合。边界装置102通过网关108与组116的外部通信。虽然描绘了单个网关108,但可在组116内或跨过类似于组116的多个组而使用类似于网关108的多个网关。
边界装置102和网关108均包括装置控制器(DC)120、外部电子装置(PE)122以及存储器124。边界装置是不与组116外部的装置通信的基于控制器的装置,而网关装置108是与组116外部的装置(例如代码虚拟化服务器114、用户装置112以及远程服务118)通信的装置。举例来说并且为了简洁,仅显示了边界装置(或基于控制器的装置)102-N包括装置控制器120、外部电子装置122和存储器124,但各个基于控制器的装置(边界装置102和网关108)都包括装置控制器和存储器,且可包括外部电子装置,例如,以类似于边界装置102-N的方式。如本领域大体已知的,装置控制器120包括微控制器(例如,PIC,AVR型,ARM型等)、芯片上的系统(SoC,例如,RASPBERRY PI)或微处理器中的一个或更多个。控制器的类型可例如基于这样的装置的应用以及所需要的功能而在装置与装置间有所不同。
外部电子装置122包括但不限于传感器、灯、音频麦克风、扬声器、致动器、显示器、打印机、扫描仪、I/O装置以及可使用来自数字控制器120的数字信号操纵的任何其它装置。外部电子装置122包括管理或操作传统的系统的构件,或外部电子装置122自身是传统的系统,诸如音乐系统、闹钟、家用电器、电气装置、电子机械装置以及若干其它系统。
存储器124是用于存储数据和可执行的软件的任何形式的数字存储器。这样的存储器包括但不限于随机存取存储器、只读存储器、碟盘存储、光学存储等。存储器124存储对应于操作系统(未显示)的计算机可读指令以及第一代码,其是程序125或程序125内的代码片断126。第一代码(为了简便,表示为126,但将理解其表示或程序125或片断126)还包括远离基于控制器的装置102-N的装置上(例如,代码虚拟化服务器114)的功能的远程调用128。第一代码126还包括另外的代码构件,诸如SDK129,其包括执行第一代码126和边界装置102-N上的远程调用128所必须的库(一个或多个库)。SDK129确保边界装置102-N可经由网关108通信至代码虚拟化服务器114,或通信至其它边界装置102。类似地,用于网关的SDK使得能实现从网关至代码虚拟化服务器114,至边界装置102,或至其它网关装置(未显示)的通信。
用户装置112是计算机,诸如个人计算机(PC)、便携式电脑、平板电脑、智能手机等,且用户装置112包括CPU130、支持电路132以及存储器136。CPU130可为任何可商业获得的处理器、微处理器、微控制器等。支持电路132包括为CPU提供功能的众所周知的电路,诸如用户接口、时钟电路、网络通信、缓存、电源、I/O电路等。I/O电路包括显示器134,例如,多个标准的或基于触摸的显示器,诸如在本领域中大体已知的计算机监视器。在一些实施例中,用户接口包括键盘、电子按钮、扬声器、触摸屏、显示器或其它用户交互机构。存储器136是任何形式的用于存储数据和可执行的软件的数字存储器。这样的存储器包括但不限于随机存取存储器、只读存储器、碟盘存储、光学存储等。存储器136存储对应于操作系统(未显示)和在显示器134上显示的图形用户接口(GUI)138的计算机可读指令。GUI 138安装在用户装置112上,或经由用户装置112上的浏览器138而提供。在一些实施例中,GUI驻留在代码虚拟化服务器上,经由用户装置112上的浏览器138在用户装置112上提供。
GUI 138呈现针对组中的给定的基于控制器的装置的可选择的列表以及相关联的输入,诸如,操作模式(边界或网关)、控制器类型(一个或多个)、通信协议(一个或多个)以及功能(一个或多个),它们都呈现在显示器134上,以便用户进行对应的选择。在一些实施例中,用户可使用用户装置112的用户接口操纵GUI 138,以加载组116的基于控制器的装置(边界装置102,网关108)的列表140。用户可还例如使用复选框或单选按钮(未显示)来指定网关是否正用于组116中。用户选择对应于基于控制器的装置102-N的CBD-N,如由实下划线所标示。对于所选的装置CBD-N,GUI 138加载与输入相关联的列表,例如,CBD-N的装置类型(边界或网关)的列表141、控制器类型(一个或多个)的列表142、通信协议(一个或多个)的列表143、以及可用于组116的CBD-N或多个装置的功能(一个或多个)的列表144。在一些实施例中,还呈现包括输入形式的参数的列表145,以便用户输入至少一个参数来执行功能,例如,列表144中所选择的功能。此外,用户可相对于多个基于控制器的装置提供对应于列表141-145的输入,例如,在已经提供与一个列表对应的输入之后选择列表140中的不同的装置。在一些实施例中,与和基于控制器的装置相关联的一个或更多个输入相对应的预定的列表在用户装置112处可用,或通过检测连接到用户装置112的基于控制器的装置而在用户装置112处创建。在一些实施例中,预定的列表从代码虚拟化服务器114获取。
列表通过GUI 138显示为列表140-145,并且用户选择或提供对应于各个列表的输入,如列表140-145中的下划线所示。例如,对于列表140中所选择的CBD-N,在列表141中选择“边界”,在列表142中选择控制器“类型-1”,在列表143中选择“协议-1”,在列表144中选择“功能-1”,且在列表145中提供或选择“参数-1”。控制器类型非限制性地包括PIC、AVR、ARM等。通信协议是机器对机器通信协议,以非限制性的方式包括MQTT、CoAP、HTTP、HTTPS等。功能是可用于针对组116中的基于控制器的装置在代码虚拟化服务器114上执行的功能,例如,发送电子邮件,文字讯息,调用其它内部(私密)寄存服务,诸如内部数据源(例如,DB,noSQLDB,文件等),或基于互联网的服务,例如,社会网络,诸如TWITTER或FACEBOOK,在线购物门户,诸如AMAZON,VoIP提供者,诸如SKYPE,搜索引擎,诸如GOOGLE,DUCKDUCKGO,语音调用,视频调用,以及本领域已知的若干其它。参数是用于实现希望的功能特点的输入属性,例如,要使用的电子邮件服务,电子邮件账户等。选择和/或输入可本地地存储在用户装置112的存储器136中,或直接发送到代码虚拟化服务器114。以这种方式,经由GUI 138做出的选择输入被提供至代码虚拟化服务器114。控制器类型、通信协议以及参数的实例包括在表1中。在一些实施例中,表1中所讨论的参数可另外用于以与所述实施例的方式类似的方式产生第一代码,且这样的参数的选择可经由GUI138作为输入获得,或可从存储在代码虚拟化服务器114上的预定的数据获得。
表1
上文所述的GUI 138显示了用于接收多个选择且将这样的选择传送至代码虚拟化服务器114的一种可行的GUI方案,且本文所述的技术不限于GUI 138的特定图示。例如,列表可同时呈现在同一屏幕上,或顺序地或组合地呈现,还有将容易地想到的、不偏离权利要求所限定的本发明的范围或精神的若干其它GUI方案。例如,图4-7显示了根据本发明的实施例的备选GUI方案。在备选实施例中,GUI 138可使用定制专用集成电路(ASIC)上的算法来提供如参照用户装置112所描述的CPU130、支持电路132以及存储器136的组合提供的功能。在一些实施例中,I/O装置包括键盘、电子按钮、扬声器、触摸屏、显示器或其它用户交互机构。
在选择基于控制器的装置(边界或网关装置)以用于其软件产生以及选择用于执行功能的其它输入(诸如控制器类型、功能、通信协议、参数)时,并且在接收所开发的软件(例如第一代码126)时,用户装置112联接至网络110。在将第一代码安装在相应的基于控制器的装置上时,用户装置112还或直接地或经由网络110连接至装置组116中的基于控制器的装置(边界和网关)。在一些实施例中,用户装置112包括集成开发环境或IDE(未显示),以便将代码片断插入基于控制器的装置上的原有程序中,或在基于控制器的装置上安装完整的程序。
代码虚拟化服务器114可以是通用计算机,或可以是被编程来执行与本发明的实施例相关的功能的其它电子处理装置。代码虚拟化服务器114包括CPU 150、支持电路152以及包含指令和算法的存储器154。CPU 150可为任何可商业获得的处理器、微处理器、微控制器等。支持电路152包括为CPU提供功能的众所周知的电路,诸如用户接口、时钟电路、网络通信、缓存、电源、I/O电路等。备选实施例可使用定制专用集成电路(ASIC)上的控制算法来提供由CPU150、支持电路152以及存储器154的任意组合所提供的功能。在一些实施例中,用户接口包括键盘、电子按钮、扬声器、触摸屏、显示器、或其它用户交互机构。
存储器154可为用于存储数据和可执行的软件的任何形式的数字存储器。这样的存储器包括但不限于随机存取存储器,只读存储器,碟盘存储,光学存储等。存储器154存储对应于操作系统(未显示)、接口156、进程池158、代码生成器160、数据库162以及执行引擎164的计算机可读指令。
接口156为用户装置112提供功能,以便与代码虚拟化服务器114交互。在一些实施例中,接口156可还包括例如对应于GUI138的GUI软件,其可通过代码虚拟化服务器114发送至用户装置112,或以其它方式提供以便安装在用户装置112上。在一些实施例中,接口156包括软件以通过用户装置112上的浏览器呈现GUI 138。此外,接口156提供与组116的基于控制器的装置102,108以及与远程服务118的连接。
进程池158包括对应于将响应于组116的基于控制器的装置所接收的远程调用而执行的功能的代码。功能也称为“排程(choreographs)”或“编排”,且将被执行以便执行功能的对应代码称为第二代码166。下文中,术语“功能”、“排程”、“编排”也将被称为“第二代码”166,且这些术语将可互换地使用,除非从上下文中以其它方式显而易见。在一些实施例中,功能与外部服务(例如远程服务118)相交互。第二代码166还包括软件开发包(SDK)167来支持第二代码166的执行,且如果要求功能与远程服务118交互,SDK 167可包括远程服务118的SDK构件。进程池158还包括对应于可用于由GUI 138选择的各个功能的功能列表,例如如上文所述,且包括对应于功能列表的第二代码。根据一些实施例,功能列表被发送至GUI 138以便显示,以及由用户装置112的用户选择功能。
代码生成器160产生用于基于控制器的装置102-N的第一代码126,并且嵌入对应于第一代码126中的调用128的代码。代码生成器160还包括SDK生成器168,以产生包括在第一代码126中的SDK 129,以支持执行基于控制器的装置102-N上的第一代码126。根据基于控制器的装置102-N的配置或装置类型(“边界”)、数字控制器120的控制器类型(“控制器-1”)、用于与组116中的其它基于控制器-的装置(一个或多个)通信的通信协议(“协议-1”),以及将响应于远程调用128执行的功能(“功能-1”),为基于控制器的装置102-N自动地产生第一代码126。例如,代码生成器160在第一代码126中结合了用于远程调用128中的第二代码166的合适的标识符或地址,以便基于远程调用来调用“功能-1”。代码生成器160还在第一代码126中结合了合适的通信协议,以便将远程调用128从CBD 102N发送至网关装置108,并且之后发送至代码虚拟化服务器114。代码生成器160进一步产生适合于CBD 102-N的控制器类型的代码126。在一些实施例中,代码生成器160进一步在第一代码126中结合了参数数据(“参数-1”),以便根据“参数-1”执行远程功能。SDK 129例如通过根据硬件、软件平台、通信基础设施(包括通信协议、连接类型等)以及其它代码执行参数,提供必须的代码库来支持第一代码126的执行。
数据库162包括为代码虚拟化服务器114认证用户装置112或远程服务118的用户数据(诸如用户名、标识信息和密码)以实现安全的环境。在一些实施例中,数据库162还包括认证信息,以为代码虚拟化服务器114认证基于控制器的装置(102,108)。根据多个实施例,数据库162还以非限制的方式包括以下的列表中的一个或更多个:组116中的基于控制器的装置、组116中的各个基于控制器的装置的控制器类型(一个或多个)、由组116的各个基于控制器的装置使用的通信协议(一个或多个)以及用于执行功能(也即执行第一代码)的原有参数。接口158可使用来自于可用来填入GUI 138的一个或更多个列表的数据库162的数据。
执行引擎164支持代码虚拟化服务器114上的构件的前述功能。响应于从基于控制器的装置102-N接收远程调用128,执行引擎164使用用于第二代码166的合适的参数(例如,存储在数据库中,或作为输入从GUI138接收)来执行第二代码166(对应于所请求的功能)。在一些实施例中,执行引擎164将执行第二代码166所产生的数据经由网关108发送至基于控制器的装置102-N。在一些实施例中,功能或第二代码166与远程服务118交互,且执行引擎164有助于远程服务118与第二代码166之间的数据交换。本发明的实施例使得组116的基于控制器的装置(CBD102-N)能够发起用于执行代码虚拟化服务器114上的第二代码166的远程调用,以便执行基于控制器的装置102-N的装置控制器120否则将不能够执行的功能,从而大大地增强了组116中的装置的能力。
远程服务118包括远离用户装置112、代码虚拟化服务器114以及基于控制器的装置(102,108)的第三方服务器或数据库(即装置)提供的私有或公共服务。例如,远程服务118包括第三方数据库和服务(例如,AMAZON、EBAY、FACEBOOK、苹果推播通知服务器、文字讯息服务器、电子邮件服务器等)或内部数据源(例如,DB,noSQLDB,文件等)。远程服务118可经由网络110或另一网络访问代码虚拟化服务器114。根据一些实施例,在响应于从组116的基于控制器的装置102-N接收远程调用128使用相关联的参数执行第二代码166后,准备远程服务118。
图2描绘了根据本发明的实施例的方法200的流程图,方法200由代码虚拟化服务器114执行以便对基于控制器的装置的组116编程。方法200用于对其中使用了网关装置的一组装置编程,例如,如可经由GUI138所指示的,或经由图4的GUI屏幕400所示的。方法200在步骤202开始,且进行至步骤204,此处,方法200接收来自GUI138的基于控制器的装置的选择。在一个实施例中,选择通过在列表140上点击CBD-N(由实下划线所指示,图1)而做出,其中CBD-N对应于组116的装置102N。在另一实施例中,选择在图5的GUI屏幕500上通过选择或增加基于控制器的装置502(网关)和/或504(边界)而进行。
方法200进行至步骤206。在步骤206处,方法200从GUI 138接收指定在步骤204处选择的基于控制器的装置(例如102-N)的装置类型的输入。装置类型包括边界装置或网关装置。在一个实施例中,选择通过点击“边界”(实下划线,图1的列表141)而做出。在一些实施例中,在选择基于控制器的装置时,装置类型可为特定的,例如,在经由图5的GUI屏幕500选择或增加基于控制器的装置502,504时所示。
方法200进行至步骤208,此处方法200从GUI 138接收指定所选择的基于控制器的装置(例如102-N)的装置控制器120的控制器类型的输入。控制器类型以非限制的方式包括微控制器或微处理器中的至少一个,例如,AVR、ARM、PIC以及本领域中大体已知的若干类似的其它控制器类型。在一些实施例中,控制器类型通过从图1的列表142中选择选项而选择。在一些实施例中,控制器类型通过例如使用GUI屏幕500的下拉列表506指定装置细节而选择。
方法200进行至步骤210,此处方法200从GUI 138接收指定用于所选择的装置(102-N)的通信协议的输入。典型地,通信协议是机器对机器(M-对-M)通信协议,其以非限制的方式包括HTTP、HTTPS、TCP/IP、MQTT、CoAP、LoRa、ZigBee、Thread、Z-WAVE、Bluetooth、6LOWPAN或其它已知的通信协议。在一些实施例中,通信协议从图1的列表143选择。在一些实施例中,通信协议通过从图6的GUI屏幕600中的下拉列表602选择合适的选项而指定。
方法200进行至步骤212,此处方法200从GUI 138接收指定将由所选择的装置(102-N)调用的功能(或编排)的输入。在一些实施例中,功能从图1的列表144选择。在一些实施例中,功能通过从图7的GUI屏幕700中的列出了编排的菜单702中选择合适的选项而指定。
方法200进行至可选的步骤214,此处方法200从GUI 138接收指定执行所选择的功能所需要的参数的输入。参数限定了在从装置(102-N)调用时功能将如何操作。在一些实施例中,参数使用图1的列表145指定。在一些实施例中,参数使用GUI屏幕上的图表(例如,类似于图4-7中所描绘的GUI屏幕)而指定。
在步骤204-214中,从GUI 138顺序地或同时地接收输入。此外,GUI138从操纵用户装置112的输入/输出装置以选择或输入合适的响应的用户接收输入,例如,如图1的列表140-145中的实下划线或图4-7的GUI屏幕所描绘的。以非限制的方式,也可使用其它GUI方案来执行方法200,而不会偏离由权利要求所限定的本文所述的实施例的范围和精神。
方法进行至步骤216,此处方法200产生第一代码,例如包括对功能的远程调用(远程调用128)以及基于从步骤206-214接收的输入的SDK的第一代码126。例如,第一代码126基于装置类型(“边界”)、数字控制器120的控制器类型(“控制器-1”)、用于与组116中的其它基于控制器的装置(一个或多个)通信的通信协议(“协议-1”)、响应于远程调用128而执行的功能(“功能-1”)以及参数(“参数-1”),而针对基于控制器的装置102-N产生。第一代码126包括用于装置102-N的整个程序或用于插入装置102-N上的原有程序中的片断,并且包括关于控制器类型、通信协议以及将由远程调用执行的功能的信息。具体地,第一代码126配置成将来自装置102-N的远程调用128经由网关108发送至代码虚拟化服务器114,以执行功能(或第二代码166)。如果设置在可选的步骤214,第一代码126还包括运行功能所需要的参数。
方法200进行至步骤218,此处方法200发送用于安装在基于控制器的装置102-N上的第一代码126。在一些实施例中,第一代码126经由网关108而发送至基于控制器的装置102-N。在一些实施例中,第一代码126发送至用户装置112,用户装置112直接地或经由网关108将第一代码安装至基于控制器的装置102-N。例如,用户装置上的GUI 138可用于将第一代码126作为代码片断插入基于控制器的装置102-N上的原有程序中。
在步骤220处,方法200查询另一装置是否要被处理。如果该查询被确定地应答(选项“是”),方法200沿着路径222进行至步骤204,此处,从GUI 138接收(例如基于来自列表140的用户选择)对应于新的基于控制器的装置的选择。如果在步骤218处,查询被负面地应答(选项“否”),例如当已经产生了用于组116的希望数量的装置的第一代码时,则方法200进行至步骤224,此处方法200结束。
方法200可针对组116的若干或全部基于控制器的装置(包括边界装置102和网关108)而重复。本发明的实施例涉及为其中使用了至少一个网关装置的装置组(例如装置组116)产生程序。如果未使用网关装置,例如,如果没有选择GUI屏幕400的复选框402,则可使用经由单个装置GUI为单个装置产生程序的技术,例如,如在2014年6月17日提交的且本文中通过引用以其整体结合的共同转让的US专利申请14/207,208中所述。
图3描绘了图1的设备100的多个装置执行的方法300的流程图,其显示了运行中的被编程(例如根据图2的方法200编程)的装置102-N。方法300由基于控制器的装置102-N、代码虚拟化服务器114以及远程服务118执行。
方法300在步骤302处开始,此处,方法300开始执行基于控制器的装置102-N上的第一代码。在步骤304处,方法300对代码虚拟化服务器114发起远程调用来执行第二代码。在步骤306处,方法300通过网关装置(例如组116中的网关108)将远程调用发送至代码虚拟化服务器114。根据本发明的实施例,第一代码(包括SDK)包括连接协议,使得远程调用从基于控制器的装置102-N直接地或通过组116中的另一基于控制器的装置(一个或多个)发送至网关108,且网关108将该远程调用传送至代码虚拟化服务器114。
方法300前进至步骤308,此处,方法300的执行转至代码虚拟化服务器114,且在步骤308处,方法300经由网关108接收来自于基于控制器的装置102-N的远程调用,以执行第二代码166来执行希望的功能。例如,该功能是使用GUI 138从列表144选择的功能。
在步骤310处,方法300开始执行第二代码以执行功能。在一些实施例中,第二代码使用用于该功能的参数执行,例如如上所述。在一些实施例中,执行功能包括执行对远程服务(例如远程服务118)的服务请求,且第二代码包括处理对远程服务118的请求的功能,例如,使用API和其它可用的功能。
在步骤312处,方法300起动从代码虚拟化服务器114至远程服务118的远程服务请求。在步骤314,方法300的执行转换至远程服务118,此处方法300处理远程服务请求,且在可选步骤316处,方法300通过远程服务118将数据(如果产生了)发送至代码虚拟化服务器114。在一些实施例中,通过处理远程服务118所产生的数据包括对远程服务118的请求已被处理的确认。在其它实施例中,另外的数据可由远程服务118产生。
在可选步骤318处,方法300的执行转换至代码虚拟化服务器114,此处方法300从远程服务118接收数据。在可选步骤320处,方法300将接收的数据发送至基于控制器的装置102-N。在一些实施例(未显示)中,从远程服务118接收的数据被发送至用户装置112,以便在可选步骤320处经由GUI显示。在可选步骤322处,方法300的执行转换至基于控制器的装置102-N,此处方法300从代码虚拟化服务器114接收来自远程服务118的经处理的数据。在可选步骤324处,方法300继续执行基于控制器的装置上的第一代码。在一些实施例中,即便在步骤314处执行远程服务118,远程服务118也不会产生数据,且在这样的实施例中,方法300在步骤314处结束。在一些实施例中,在可选步骤316处,方法300将指示远程服务118已被处理的数据经由代码虚拟化服务器114(例如经由可选步骤318,320)和网关108、或仅经由网关108发送至基于控制器的装置102N。方法300在可选步骤322处接收该数据,且在可选步骤324处继续执行第一代码。在一些实施例中,基于控制器的装置102-N继续执行第一代码而不会等待来自远程服务118的数据。在一些实施例中,在步骤306处,第一代码在基于控制器的装置102-N处的执行将远程调用发送至代码虚拟化服务器114之后结束。
以这种方式,基于控制器的装置的功能通过根据本文所述的实施例对装置102-N和组116编程而显著地扩展。
例如,计算机中心内的环境监测系统可包括多个温度传感器,各个传感器联接到装置控制器(一起,边界装置)。装置控制器收集传感器数据且使用与收集装置兼容的通信协议经由无线收发器将传感器数据发送至收集装置(用作网关)。通信协议可跨边界装置而有所不同。网关装置集聚和/或预处理从不同的边界装置接收的数据,并且经由互联网将数据传递至监测服务。根据本发明的实施例,一个或更多个边界装置配置成将其数据发送至功能(即通过进行远程调用来在另一装置上远程地执行功能),在传感器数据落入预定的范围时,功能发送文字讯息,例如超过环境监测系统的正常范围的温度。在一些实施例中,网关可配置成将来自特定边界装置的数据发送至功能,在数据落入预定的范围时,或在从若干边界装置集聚的数据匹配预定的形式时,该功能发送文字讯息。在每种情况下,发送文字讯息的调用通过网关发送。每个联接至装置控制器的另外的传感器(边界装置),例如,湿度传感器,可添加至环境监测系统,且新的边界装置可具有不同的通信协议。本发明的实施例使得能够利用合适的代码对该新的边界装置编程,并且通过允许简单的基于图形用户接口的输入以便利的方式实现与其它装置(例如,温度传感器)的无缝互连。例如,使用本文所述的实施例,该新的边界装置(湿度传感器)能够无缝地通过网关调用远程功能。因此,本发明的实施例增强了边界装置和网关装置的功能,将边界装置和网关装置的受限的能力延展至可用的远程服务的能力,同时以无缝的方式来完成这些。
此外,根据一些实施例,组中的一个或更多个网关装置被编程为作为边界装置来操作。在一些实施例中,组116包括多个网关装置,它们中的一个或更多个可被配置成作为边界装置操作,且至少一个网关装置被配置成作为边界装置操作。在一些实施例中,组116仅包括多个网关装置,它们中的一个或更多个可被配置为边界装置,且至少一个网关装置配置成作为边界装置操作。
通过避免了学习复杂的控制器编程语言以及跟踪连接和限定的通信协议的需要,本文所讨论的多个实施例所示的技术使得用于一组基于控制器的装置的软件开发对于用户而言迅速且简单。在一些实施例中,代码虚拟化服务器114被实施为服务(未显示),其通过网络接口或用户装置(智能手机,计算机,平板电脑,等)上的任何GUI(例如,智能手机应用程序或计算机应用)提供对代码产生、部署、远程重编程的访问。虽然关于物联网(IoT)装置而描述了实施例,但本领域技术人员将容易地理解所公开的实施例例示的技术可用于若干其它编程环境。
在不同的实施例中,本文所述的方法可在软件、硬件或其组合中实施。方法可在存储在非暂时性计算机可读介质中的计算机指令中实施,并且由一个或更多个处理器执行,以便执行方法。此外,方法的顺序可改变,且可增加、重排序、组合、省略或以其它方式修改多个元素。本文所述的所有实例都以非限制性的方式呈现。可做出受益于本公开的本领域技术人员将显而易见的多种修改和改变。已在特定实施例的背景中描述了根据实施例的实现方式。这些实施例意图是示意性的而非限制性的。许多变型、修改、增加和改进都是可行的。因此,可作为单个实例为本文所述的构件提供多个实例。多个构件、操作以及数据存储之间的边界略微随意,且在特定的示意性配置的背景下显示了特定的操作。构思了功能的其它分配,且其可落入随后(所附)的权利要求的范围内。最后,在实例配置中作为分立的构件呈现的结构和功能可作为组合的结构或构件来实施。这些和其它变型、修改、增加和改进可落入随后的(所附的)权利要求所限定的实施例的范围内。
虽然上文涉及本发明的实施例,但可构思本发明的其它及另外的实施例而不会偏离其基本范围,且其范围由随后的(所附的)权利要求确定。

Claims (15)

1.一种计算机实施的方法,该方法用于为一组基于控制器的装置中的基于控制器的装置自动产生程序,该方法包括:
为来自于在用户装置上的图形用户接口(GUI)上显示的多个基于控制器的装置的基于控制器的装置,接收如下的选择:
所述基于控制器的装置的控制器类型,
由所述基于控制器的装置使用的、用于与一组基于控制器的装置中的另一基于控制器的装置通信的通信协议,所述组包括所述多个基于控制器的装置,以及
基于来自所述基于控制器的装置的远程调用而执行的功能;以及
基于所述控制器类型、所述通信协议以及所述功能产生用于在所述基于控制器的装置上执行的第一代码,所述第一代码包括所述远程调用并且能够路由所述远程调用。
2.如权利要求1所述的方法,其中,每个基于控制器的装置或为边界装置或为网关装置,且其中,所述组或者包括至少一个边界装置和至少一个网关装置,或者包括至少两个网关装置。
3.如权利要求2所述的方法,其中,所述第一代码通过所述至少一个网关装置路由所述远程调用。
4.如权利要求2所述的方法,进一步包括从所述GUI接收所述基于控制器的装置是边界装置还是网关装置的选择,且其中,产生所述第一代码进一步基于所述边界装置或所述网关装置的选择。
5.如权利要求2所述的方法,进一步包括
经由所述至少一个网关装置从所述基于控制器的装置接收所述远程调用:以及
执行所述功能。
6.如权利要求1所述的方法,进一步包括分发所述第一代码,以便直接地或经由所述用户装置安装在所述基于控制器的装置上。
7.如权利要求1所述的方法,进一步包括从所述GUI接收用于执行所述功能的至少一个参数,且其中,产生所述第一代码进一步基于所述至少一个参数。
8.一种用于一组基于控制器的装置的自动软件开发的设备,包括:
处理器:和
包括可执行的指令的存储器,所述可执行的指令在使用所述处理器被执行时引起包括以下步骤的方法的执行:
为来自于在用户装置上的图形用户接口(GUI)上显示的多个基于控制器的装置的基于控制器的装置,接收如下的选择:
所述基于控制器的装置的控制器类型,
由所述基于控制器的装置使用的、用于与一组基于控制器的装置中的另一基于控制器的装置通信的通信协议,所述组包括所述多个基于控制器的装置,以及
基于来自所述基于控制器的装置的远程调用而执行的功能;以及
基于所述控制器类型、所述通信协议以及所述功能产生用于在所述基于控制器的装置上执行的第一代码,所述第一代码包括所述远程调用并且能够传送所述远程调用。
9.如权利要求8所述的设备,其中,每个基于控制器的装置或为边界装置或为网关装置,且其中,所述组或者包括至少一个边界装置和至少一个网关装置,或者包括至少两个网关装置。
10.如权利要求9所述的设备,其中,第一代码通过所述至少一个网关装置路由所述远程调用。
11.如权利要求9所述的设备,其中,所述方法进一步包括从所述GUI接收所述基于控制器的装置是边界装置还是网关装置的选择,且其中,产生所述第一代码进一步基于所述边界装置或所述网关装置的选择。
12.如权利要求9所述的设备,其中,所述方法进一步包括:
经由所述至少一个网关装置从所述基于控制器的装置接收所述远程调用;和
执行所述功能。
13.如权利要求8所述的设备,其中,所述方法进一步包括分发所述第一代码,以便直接地或经由所述用户装置安装在所述基于控制器的装置上。
14.如权利要求8所述的设备,其中,所述方法进一步包括从所述GUI接收用于执行所述功能的至少一个参数,且其中,产生所述第一代码进一步基于所述至少一个参数。
15.一种用于存储计算机指令的非暂时性计算机可读介质,所述计算机指令在由至少一个处理器执行时,导致所述至少一个处理器执行用于一组基于控制器的装置中的基于控制器的装置的程序自动产生的方法,所述方法包括:
在用户装置上的图形用户接口(GUI)上显示来自一组基于控制器的装置的多个基于控制器的装置;
针对来自所述组的基于控制器的装置,接收如下的选择:
所述基于控制器的装置的控制器类型,
由所述基于控制器的装置使用的、用于与所述组中的另一基于控制器的装置通信的通信协议,和
基于来自所述基于控制器的装置的远程调用执行的功能;以及
将所述选择发送至代码虚拟化服务器。
CN201680026822.4A 2015-05-08 2016-05-06 用于一组基于控制器的装置的自动软件开发的方法和设备 Active CN107750356B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201562158636P 2015-05-08 2015-05-08
US62/158,636 2015-05-08
PCT/US2016/031217 WO2016182913A1 (en) 2015-05-08 2016-05-06 Method and apparatus for automatic software development for a group of controller-based devices

Publications (2)

Publication Number Publication Date
CN107750356A true CN107750356A (zh) 2018-03-02
CN107750356B CN107750356B (zh) 2020-02-14

Family

ID=57223090

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680026822.4A Active CN107750356B (zh) 2015-05-08 2016-05-06 用于一组基于控制器的装置的自动软件开发的方法和设备

Country Status (9)

Country Link
US (1) US10095495B2 (zh)
EP (1) EP3295649B1 (zh)
JP (1) JP6719484B2 (zh)
KR (1) KR102622652B1 (zh)
CN (1) CN107750356B (zh)
CA (1) CA2984106C (zh)
HK (1) HK1246421A1 (zh)
SG (1) SG11201708743UA (zh)
WO (1) WO2016182913A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109032573A (zh) * 2018-06-20 2018-12-18 深圳市编玩边学教育科技有限公司 一种硬件编程系统和方法

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11171941B2 (en) * 2015-02-24 2021-11-09 Nelson A. Cicchitto Mobile device enabled desktop tethered and tetherless authentication
US11122034B2 (en) 2015-02-24 2021-09-14 Nelson A. Cicchitto Method and apparatus for an identity assurance score with ties to an ID-less and password-less authentication system
US10848485B2 (en) 2015-02-24 2020-11-24 Nelson Cicchitto Method and apparatus for a social network score system communicably connected to an ID-less and password-less authentication system
US10499283B2 (en) * 2015-07-01 2019-12-03 Red Hat, Inc. Data reduction in a system
JP6611550B2 (ja) * 2015-10-09 2019-11-27 キヤノン株式会社 通信装置、通信装置の制御方法及びプログラム
SG11201805215UA (en) 2015-12-21 2018-07-30 Ciambella Ltd Method and apparatus for creating and managing controller based remote solutions
EP3682326A4 (en) 2017-09-13 2021-06-02 HRL Laboratories, LLC GENERATORS OF HIGH SECURITY NETWORK GATEWAYS
US10715459B2 (en) * 2017-10-27 2020-07-14 Salesforce.Com, Inc. Orchestration in a multi-layer network
US11269308B2 (en) 2017-12-01 2022-03-08 Ciambella Ltd. Method and apparatus for creating and managing smart programmable logic controller (PLC) solutions
US11190513B2 (en) 2018-01-19 2021-11-30 Vmware, Inc. Gateway enrollment for internet of things device management
US10904078B2 (en) 2018-07-12 2021-01-26 Honeywell International Inc. Systems and methods for autonomous creation of a domain specific industrial internet of things gateway using a conversational interface
US11005719B2 (en) * 2018-12-11 2021-05-11 Vmware, Inc. Internet of Things system topology generation
WO2020231707A1 (en) * 2019-05-14 2020-11-19 The Regents Of The University Of California Illumination device for spatial and temporal control of morphogen signaling in cell cultures
SE545287C2 (en) * 2020-08-28 2023-06-20 Stream Analyze Sweden Ab Method and system for data processing
SE545771C2 (en) * 2020-08-28 2024-01-09 Stream Analyze Sweden Ab Method and system for data processing
SE545286C2 (en) * 2020-08-28 2023-06-20 Stream Analyze Sweden Ab Method and system for data processing
US20230101738A1 (en) * 2021-09-27 2023-03-30 Vmware, Inc. Management service device platform creation and device configuration

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8086744B2 (en) * 2004-05-07 2011-12-27 George Mason Intellectual Properties, Inc. Meta-protocol
US20120311526A1 (en) * 2011-06-02 2012-12-06 Recursion Software, Inc. System and method for pervasive software platform-based model driven architecture application generator
CN102929681A (zh) * 2012-10-31 2013-02-13 中国运载火箭技术研究院 一种虚拟试验分布式对象模型框架代码自动生成方法
CN103473108A (zh) * 2013-08-12 2013-12-25 福建富士通信息软件有限公司 一种Java代码生成方法
US20140372975A1 (en) * 2013-06-18 2014-12-18 Ciambella Ltd. Method and apparatus for code virtualization and remote process call generation

Family Cites Families (102)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5623604A (en) 1992-11-18 1997-04-22 Canon Information Systems, Inc. Method and apparatus for remotely altering programmable firmware stored in an interactive network board coupled to a network peripheral
US6108715A (en) * 1994-12-13 2000-08-22 Microsoft Corporation Method and system for invoking remote procedure calls
US5887172A (en) 1996-01-10 1999-03-23 Sun Microsystems, Inc. Remote procedure call system and method for RPC mechanism independent client and server interfaces interoperable with any of a plurality of remote procedure call backends
US5852733A (en) 1996-12-16 1998-12-22 Chien; Yung-Ping S. Microcontroller development tool using software programs
DE19880536B4 (de) 1997-03-11 2004-08-05 Mitsubishi Denki K.K. Visuelles Programmierverfahren und dieses Verfahren anwendendes Pogrammiersystem
US6266809B1 (en) 1997-08-15 2001-07-24 International Business Machines Corporation Methods, systems and computer program products for secure firmware updates
US6065053A (en) 1997-10-01 2000-05-16 Micron Electronics, Inc. System for resetting a server
US6158031A (en) 1998-09-08 2000-12-05 Lucent Technologies, Inc. Automated code generating translator for testing telecommunication system devices and method
US6324681B1 (en) 1998-10-01 2001-11-27 Unisys Corporation Automated development system for developing applications that interface with both distributed component object model (DCOM) and enterprise server environments
US6401156B1 (en) 1999-08-23 2002-06-04 Advanced Micro Devices, Inc. Flexible PC/AT-compatible microcontroller
US6490723B1 (en) 1999-11-30 2002-12-03 Dell Products L.P. Method and system for installing files in a computing system
US7043715B1 (en) 2000-06-06 2006-05-09 Emc Corporation Method and apparatus for customizing software
WO2002005106A1 (en) 2000-07-07 2002-01-17 Consilient, Inc. Method and apparatus for providing process-container platforms
US7127705B2 (en) 2000-09-06 2006-10-24 Oracle International Corporation Developing applications online
US6907446B1 (en) 2000-10-16 2005-06-14 Implicit Networks, Inc. Method and system for dynamic delivery of beads
US20020111995A1 (en) 2001-02-14 2002-08-15 Mansour Peter M. Platform-independent distributed user interface system architecture
US6931288B1 (en) 2001-04-16 2005-08-16 Rockwell Automation Technologies, Inc. User interface and system for creating function block diagrams
US20020194608A1 (en) 2001-04-26 2002-12-19 Goldhor Richard S. Method and apparatus for a playback enhancement system implementing a "Say Again" feature
US8131827B2 (en) 2001-05-09 2012-03-06 Rockwell Automation Technologies, Inc. PLC with web-accessible program development software
US7103641B2 (en) 2001-06-18 2006-09-05 Intel Corporation Method and apparatus for distributing computer platform firmware across a network
US7039892B2 (en) 2001-07-24 2006-05-02 Hewlett-Packard Development Company, L.P. Systems and methods for ensuring correct connectivity between circuit designs
US6993642B2 (en) 2001-07-24 2006-01-31 Microsoft Corporation Method and system for creating and employing an operating system having selected functionality
WO2003029975A2 (en) 2001-09-28 2003-04-10 British Telecommunications Public Limited Company Client server model
US6895573B2 (en) 2001-10-26 2005-05-17 Resultmaker A/S Method for generating a workflow on a computer, and a computer system adapted for performing the method
US7143360B1 (en) 2001-10-29 2006-11-28 Cypress Semiconductor Corporation Pin-out connections/drive levels direct-set by drop down list
US7320126B2 (en) 2001-11-06 2008-01-15 Sandisk Corporation Implementation of in system programming to update firmware on memory cards
US7010773B1 (en) 2001-11-19 2006-03-07 Cypress Semiconductor Corp. Method for designing a circuit for programmable microcontrollers
US6966039B1 (en) 2001-11-19 2005-11-15 Cypress Semiconductor Corp. Method for facilitating microcontroller programming
US7086014B1 (en) 2001-11-19 2006-08-01 Cypress Semiconductor Corporation Automatic generation of application program interfaces, source code, interrupts, and datasheets for microcontroller programming
US6715132B1 (en) 2001-11-19 2004-03-30 Cypress Semiconductor Corporation Datasheet browsing and creation with data-driven datasheet tabs within a microcontroller design tool
US20030120707A1 (en) 2001-12-21 2003-06-26 Sander Bogdan Systems and methods for exporting functionality of a modularized system
US7346672B2 (en) 2002-03-12 2008-03-18 Hewlett-Packard Development Company, L.P. Automatic TFTP firmware download
AU2003251542A1 (en) 2002-07-03 2004-01-23 Tokyo Electron Limited Method for dynamic sensor configuration and runtime execution
US8074201B2 (en) * 2002-07-10 2011-12-06 National Instruments Corporation Deployment and execution of a program on an embedded device
FR2841998B1 (fr) 2002-07-04 2004-10-22 Canon Kk Procede d'execution sur une station d'un reseau de communication d'un programme informatique represente dans un langage de balisage
SE524627C2 (sv) 2002-10-07 2004-09-07 Abb Research Ltd Trådlös regulator och förfarande för styrning av en anordning anordnad relativt en robot
US7478141B2 (en) 2003-06-26 2009-01-13 Intel Corporation Accessing firmware of a remote computer system using a remote firmware interface
WO2005020021A2 (en) 2003-08-22 2005-03-03 Idx Systems Corporation Information system supporting customizable user interfaces and process flows
EP1530139A1 (en) 2003-11-05 2005-05-11 Sap Ag Method and computer system for workflow management
US8104043B2 (en) 2003-11-24 2012-01-24 Microsoft Corporation System and method for dynamic cooperative distributed execution of computer tasks without a centralized controller
US7331047B2 (en) 2003-11-25 2008-02-12 Microsoft Corporation Deterministic system and method for implementing software distributed between a desktop and a remote device
GB2411495A (en) 2004-02-27 2005-08-31 Cyan Holdings Ltd Method and apparatus for generating configuration data
US20050198624A1 (en) 2004-03-02 2005-09-08 Chipman Timothy W. Method and system for program transformation
US7810099B2 (en) 2004-06-17 2010-10-05 International Business Machines Corporation Optimizing workflow execution against a heterogeneous grid computing topology
US7526534B2 (en) 2004-07-16 2009-04-28 Cassatt Corporation Unified system services layer for a distributed processing system
US20060041854A1 (en) 2004-07-22 2006-02-23 Steven Schlanger Devices and methods for programming microcontrollers
US20060020910A1 (en) 2004-07-22 2006-01-26 Steven Schlanger Devices and methods for communicating with a microcontroller
GB2434670B (en) 2004-08-13 2008-06-11 Remasys Pty Ltd Monitoring and management of distributed information systems
JP2006079447A (ja) 2004-09-10 2006-03-23 Fujitsu Ltd 集積回路設計支援装置、集積回路設計支援方法及び集積回路設計支援プログラム
AU2006247999A1 (en) 2005-04-20 2006-11-23 Videoegg, Inc. Browser enabled video manipulation
US7558915B2 (en) 2005-06-06 2009-07-07 Dell Products L.P. System and method for updating the firmware of a device in a storage network
KR100714693B1 (ko) 2005-06-07 2007-05-04 삼성전자주식회사 소프트웨어 모듈의 독립성을 보장하는 데이터베이스어플리케이션을 구현하는 시스템 및 방법
US20070073771A1 (en) 2005-09-28 2007-03-29 Baikov Chavdar S Method and system for directly mapping web services interfaces and java interfaces
US7481361B2 (en) 2005-09-29 2009-01-27 International Business Machines Corporation Method and system for identifying unsafe synthetic transactions and modifying parameters for automated playback
US20070174037A1 (en) 2005-11-10 2007-07-26 Chuan-Po Ling Multiple-microcontroller emulation system, multiple-microcontroller integrated development environment, and method for the same
US20070142929A1 (en) 2005-12-16 2007-06-21 Microsoft Corporation Specifying optional and default values for method parameters
US7813909B2 (en) 2006-05-03 2010-10-12 Sony Computer Entertainment Inc. Register mapping in emulation of a target system on a host system
US8028258B1 (en) 2006-02-16 2011-09-27 Cypress Semiconductor Corporation Interactive graphical pin assignment
US7627838B2 (en) 2006-04-25 2009-12-01 Cypress Semiconductor Corporation Automated integrated circuit development
US7886234B2 (en) 2006-10-13 2011-02-08 Mediatek Inc. Systems and methods for creating embedded target images
US20080109782A1 (en) 2006-10-18 2008-05-08 Utstarcom, Inc. Method and system for pin assignment
KR20080044576A (ko) 2006-11-17 2008-05-21 오종택 애드혹 통신 네트워크를 이용한 전력분산 장치 및 시스템과그 방법
JP2008165340A (ja) 2006-12-27 2008-07-17 Fujitsu Ltd 遠隔手続呼出方式
US8316427B2 (en) 2007-03-09 2012-11-20 International Business Machines Corporation Enhanced personal firewall for dynamic computing environments
WO2009073932A1 (en) 2007-12-13 2009-06-18 Labtronics Technology Pty Ltd Application specific virtual real-time operating system compiler
US8316343B2 (en) 2007-12-29 2012-11-20 Amx Llc Self-describing device module and system and computer-readable medium for the production thereof
US20090198770A1 (en) 2008-02-04 2009-08-06 Universal Scientific Industrial Co., Ltd. System and method of updating codes in controller
US9311115B2 (en) 2008-05-13 2016-04-12 Apple Inc. Pushing a graphical user interface to a remote device with display rules provided by the remote device
US8249950B2 (en) 2008-07-11 2012-08-21 Ebay Inc. Payment mechanism integration wizard
WO2010023695A1 (en) 2008-08-25 2010-03-04 Power-One Italy S.P.A. A hardware virtualization system
US9411864B2 (en) 2008-08-26 2016-08-09 Zeewise, Inc. Systems and methods for collection and consolidation of heterogeneous remote business data using dynamic data handling
KR101042908B1 (ko) 2009-02-12 2011-06-21 엔에이치엔(주) 네트워크 분리 장애 상황에서 메이저 그룹을 결정하기 위한방법, 시스템, 및 컴퓨터 판독 가능한 기록 매체
DE102009011679A1 (de) 2009-02-23 2010-08-26 Pilz Gmbh & Co. Kg Verfahren und Vorrichtung zum Erstellen eines Anwenderprogrammes für eine Sicherheitssteuerung
US8948067B2 (en) 2009-04-23 2015-02-03 Honeywell International Inc. Wireless controller grids for process control and other systems and related apparatus and method
CN102422263B (zh) 2009-05-07 2016-03-30 赛普拉斯半导体公司 开发、编程和除错环境
BRPI1010897A2 (pt) 2009-05-19 2019-02-19 Nholdings Sa método e sistema para prover um dispositivo local com serviços de computador de um provedor remoto e método e sistema para anunciar um usuário de uma máquina virtual hospedada por um servido remoto
CA2698066A1 (en) 2009-07-31 2011-01-31 Nitobi Software Inc. System and method for remotely compiling multi-platform native applications for mobile devices
US8214653B1 (en) 2009-09-04 2012-07-03 Amazon Technologies, Inc. Secured firmware updates
US8508367B2 (en) * 2009-09-21 2013-08-13 Checkpoint Systems, Inc. Configurable monitoring device
US8707161B2 (en) 2009-09-30 2014-04-22 Facebook, Inc. Executing server side script code specified using PHP on a server to generate dynamic web pages
CN101697125B (zh) 2009-11-04 2013-05-08 中兴通讯股份有限公司 一种开发环境转换的方法及装置
US8869138B2 (en) 2011-11-11 2014-10-21 Wyse Technology L.L.C. Robust firmware update with recovery logic
US8775781B2 (en) 2010-03-25 2014-07-08 Microsoft Corporation Intelligent boot device selection and recovery
US8655461B2 (en) 2010-05-25 2014-02-18 Siemens Product Lifecycle Management Software Inc. Method, system, and non-transitory computer readable storage medium for generating code for a closed-loop controller
US8479154B1 (en) 2010-08-20 2013-07-02 Google Inc. Interaction with partially constructed mobile device applications
US8694954B2 (en) 2010-11-29 2014-04-08 Norman Ortiz System and methods for mobile application development using mobile devices
US8726285B2 (en) 2011-01-28 2014-05-13 Ciambella Ltd. Method and apparatus for triggering workflow deployment and/or execution
US9678747B2 (en) 2011-02-08 2017-06-13 Openspan, Inc. Code injection and code interception in an operating system with multiple subsystem environments
US8504989B2 (en) 2011-03-10 2013-08-06 Infosys Limited Service definition document for providing blended services utilizing multiple service endpoints
US20120233588A1 (en) 2011-03-10 2012-09-13 Infosys Technologies Ltd. Blended service creation, test, and deployment environment for multiple service endpoints
US20130201316A1 (en) 2012-01-09 2013-08-08 May Patents Ltd. System and method for server based control
US20150045960A1 (en) 2012-01-23 2015-02-12 Scl Elements Inc. Programmable peripheral unit
CA2870359C (en) 2012-04-12 2015-10-13 Absolute Software Corporation Configuration of third party applications in a sandboxed environment
KR20130115729A (ko) 2012-04-13 2013-10-22 삼성전자주식회사 디스플레이장치, 리모컨 및 그 제어방법
US9292416B2 (en) 2012-10-12 2016-03-22 Vmware, Inc. Software development kit testing
US9015694B2 (en) 2012-10-31 2015-04-21 Aruba Networks, Inc Cloud-based firmware distribution service
US20140215433A1 (en) 2013-01-30 2014-07-31 Oracle International Corporation Class oriented file format for modeling and persisting bpmn scripting code
US9372785B2 (en) 2013-03-07 2016-06-21 Microsoft Technology Licensing, Llc Identifying implicit assumptions associated with a software product
DK3011442T3 (da) 2013-06-18 2021-01-04 Ciambella Ltd Fremgangsmåde og anordning til generering af et brugerdefineret softwareudviklingskit (sdk)
US10296297B2 (en) 2013-08-09 2019-05-21 Oracle International Corporation Execution semantics for sub-processes in BPEL
US20150127192A1 (en) 2013-11-06 2015-05-07 Hitachi, Ltd Wireless vehicle control system
JP6441061B2 (ja) 2014-12-16 2018-12-19 株式会社ダイヘン 機械制御システム及び機械制御システムのユーザインタフェース設定方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8086744B2 (en) * 2004-05-07 2011-12-27 George Mason Intellectual Properties, Inc. Meta-protocol
US20120311526A1 (en) * 2011-06-02 2012-12-06 Recursion Software, Inc. System and method for pervasive software platform-based model driven architecture application generator
CN102929681A (zh) * 2012-10-31 2013-02-13 中国运载火箭技术研究院 一种虚拟试验分布式对象模型框架代码自动生成方法
US20140372975A1 (en) * 2013-06-18 2014-12-18 Ciambella Ltd. Method and apparatus for code virtualization and remote process call generation
CN103473108A (zh) * 2013-08-12 2013-12-25 福建富士通信息软件有限公司 一种Java代码生成方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109032573A (zh) * 2018-06-20 2018-12-18 深圳市编玩边学教育科技有限公司 一种硬件编程系统和方法

Also Published As

Publication number Publication date
CN107750356B (zh) 2020-02-14
JP2018518746A (ja) 2018-07-12
EP3295649B1 (en) 2024-03-06
EP3295649A1 (en) 2018-03-21
WO2016182913A1 (en) 2016-11-17
KR102622652B1 (ko) 2024-01-10
KR20180008548A (ko) 2018-01-24
SG11201708743UA (en) 2017-11-29
CA2984106A1 (en) 2016-11-17
CA2984106C (en) 2021-12-21
US10095495B2 (en) 2018-10-09
HK1246421A1 (zh) 2018-09-07
JP6719484B2 (ja) 2020-07-08
US20160328216A1 (en) 2016-11-10
EP3295649A4 (en) 2019-01-09

Similar Documents

Publication Publication Date Title
CN107750356A (zh) 用于一组基于控制器的装置的自动软件开发的方法和设备
CN106170764B (zh) 用于自动设备程序生成的方法和装置
EP3394743B1 (en) Method and apparatus for creating and managing controller based remote solutions
CN106030601B (zh) 用于利用轻量级容器对运行时的安卓应用创建沙盒的方法和设备
US10067490B2 (en) Method and apparatus for modifying behavior of code for a controller-based device
US20170063611A1 (en) User Configuration Mechanism for Internet-of-Things (IOT)
US9619122B2 (en) Method and apparatus for automatic device program generation
CN103597860B (zh) 对消息账户的选择性链接
CN107079063A (zh) 共享内容的方法及其电子设备
CN106062734A (zh) 二级装置的自然语言控制
CN105308982A (zh) 家庭用具、移动设备和家庭用具控制系统
CN110401687A (zh) 一种配置文件传输方法及相关设备和存储介质
CN103516726A (zh) 基于终端行为的验证方法、装置、客户端、服务器及设备
CN106063364A (zh) 用于使用数字控制外部设备的电子设备及其方法
CN106940635A (zh) 用于输出声音的方法以及支持该方法的电子设备
CN106201748A (zh) 一种基于移动终端的消息处理的方法、装置及移动终端
CN106688243A (zh) 装置对装置内容提供方法
CN110493771A (zh) 数据网络的连接方法、装置、存储介质及终端设备
CA2989654C (en) Method and apparatus for modifying behavior of code for a controller-based device
CN105743929B (zh) 一种终端互动的方法及装置
CN103488773A (zh) 一种网站数据获取方法及装置
Chang et al. Design and implementation of resource-centric web services in smart grid cyber-physical systems
EP2846302A1 (en) Communication device, method for establishing a transaction between said communication device and a terminal

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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1246421

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant