CN108431765A - 设备应用的生成 - Google Patents

设备应用的生成 Download PDF

Info

Publication number
CN108431765A
CN108431765A CN201680076295.8A CN201680076295A CN108431765A CN 108431765 A CN108431765 A CN 108431765A CN 201680076295 A CN201680076295 A CN 201680076295A CN 108431765 A CN108431765 A CN 108431765A
Authority
CN
China
Prior art keywords
equipment
hardware
output
user interface
expression formula
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
CN201680076295.8A
Other languages
English (en)
Other versions
CN108431765B (zh
Inventor
J·萨卡
O·科勒
P·R·巴拉拉姆
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
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 Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN108431765A publication Critical patent/CN108431765A/zh
Application granted granted Critical
Publication of CN108431765B publication Critical patent/CN108431765B/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • G06F3/04842Selection of displayed objects or displayed text elements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • 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/43Checking; Contextual analysis
    • G06F8/433Dependency analysis; Data or control flow analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • User Interface Of Digital Computer (AREA)
  • Stored Programmes (AREA)

Abstract

本公开的示例能够实现用户界面中的设备链接的重新计算。在一些示例中,表示第一硬件设备的第一元素在计算设备用户界面的设计面处被接收。表示第二硬件设备的第二元素在设计面处被接收。与第一个元素相关联的输出的选择被接收。将第二个元素的属性绑定到与第一个元素相关联的输出的属性的功能被自动生成。本公开的各方面使得自动生成的功能能够在设计面处被显示。

Description

设备应用的生成
背景技术
创建可执行的计算机程序通常涉及生成算法、验证算法的正确性以及将算法实现为编程语言。这个处理往往需要很多领域的专业知识,包括以目标编程语言编码。生成硬件设备的程序通常需要设备协议和功能的特定知识。
例如诸如电子表格或工作表软件的重新计算软件已经允许在数据源和数据接收器之间进行声明性转换。对于连接各种数据源和数据接收器的任意给定的转换集合,数据源的输出可能会被数据接收器消耗,或者数据源的输出可能会在被数据接收器消耗之前受制于转换。这些不同的转换被评估,这会导致在整个诸如电子表格文档的重新计算文档中呈现一个或多个输出。用户可以诸如通过修改单元格中的值来添加和编辑声明性转换,而不需要深入了解编码知识,并且此编辑会自动导致转换被重新计算,这可能会导致一个或多个输出中的改变。
物联网(IoT)是指嵌入有电子设备、软件、传感器和网络连接能力的物理对象的网络。这些物理对象,有时被称为“智能设备”,能够收集数据和交换数据。然而,智能设备通常仅限于经由设置协议进行通信,并且通常只能与其他专有设备或设备制造商规定的服务交换数据。
发明内容
本公开的示例提供了使用至少两个硬件元素来生成可执行程序。表示第一硬件设备的第一元素在计算设备用户界面的设计面处被接收。表示第二硬件设备的第二元素在设计面处被接收。接收与第一元素相关联的输出的选择,并且自动地生成将第二元素的属性绑定到与第一元素相关联的输出的属性的功能。本公开的各方面进一步使自动生成的功能能够在设计面处显示,可视地展露将两个元素系在一起并且因此将网络内的两个硬件设备系在一起的逻辑。
另一方面,提供了一种用于生成可执行程序的计算设备。该计算设备包括处理器和用户界面,该用户界面在接收表示硬件设备的硬件节点和软件节点的处理器上被实现。计算设备还包括在处理器上实现的代码生成器,其包括获得在用户界面处生成的表达式。代码生成器针对硬件节点和软件节点之间的依赖分析所获得的表达式。代码生成器还基于分析的表达式生成依赖图并基于生成的依赖关系图来生成可执行代码。本公开的各方面使得所生成的可执行代码能够被显示在用户界面处。
在又一方面,提供了一种或多种具有在其上实施有用于生成可执行程序的计算机可执行指令的计算机存储介质。指令包括在用户界面处接收表示源设备的源组件。接收表示用户界面处的目标设备的目标组件。接收对输出的选择,所述输出是来自所述源设备的输出,所述输出是对所述目标设备的输入。自动地生成将目标设备的属性绑定到来自源设备的输出的属性的功能。本公开的各方面使得自动生成的功能能够在用户界面处被显示。
提供本发明内容是为了以简化的形式介绍将在以下详细描述中进一步描述的一些概念。本发明内容并非旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用作确定所要求保护的主题的范围的辅助手段。
附图说明
图1是图示了用于生成可执行程序的计算设备的示例性框图。
图2是图示了用于生成可执行程序的开发者环境的示例性框图。
图3是图示了计算设备的、用于生成要在设计面处显示的表达的操作的示例性流程图。
图4是图示了计算设备的、用于生成绑定两个设备的可执行代码的操作的示例性流程图。
图5A-5E是图示了用于生成可执行代码以绑定硬件设备的用户界面的示例性框图。
图6A-6G是图示了经由可执行代码来连接设备的示例性框图。
图7是图示了可以用于生成可执行程序的计算设备的示例性框图。
图8是图示了可以用于生成可执行程序的云计算设备的示例性框图。
在整个附图中,对应的附图标记表示对应部分。
具体实施方式
参照附图,本公开的示例能够实现可执行代码的自动生成以将硬件设备绑定到转换链。在一些示例中,一个设备的输出用作另一设备的输入。设备的链可能不需要任意编程能力,并且可以能够跨不同的通信协议工作。本公开的示例提供了将硬件设备作为数据源或数据接收器或数据源和数据接收器两者添加到声明性转换链,使得从链中移除或添加硬件设备导致所生成的设备链的重新计算。此外,所选择的硬件设备的输出可能是用作另一硬件设备输入的数据接收器的值。
本公开的示例能够实现将不同设备和不同类型的设备链接在一起,而不管设备类型和所选择的设备的任意支持的协议。通过在重新计算用户界面的上下文中能够实现包括软件和硬件节点两者之间交互的转换链,提供了多设备创作环境。此外,本公开的各方面可以促进设备之间的通信,该各方面可以将不同设备的数据传输类型反序列化为运行时实体,允许与其他运行时实体交互,表示软件转换或跨越多个设备的转换,或者两者,提供具有多种设备能力和数据传输类型的知识的多设备创作环境。
本公开的各方面提供了有效且高效地创建设备链。例如,可以在计算设备用户界面的设计面处接收第一设备的表示和第二设备的表示。接收将一个设备的属性与另一设备的属性联系起来的选择,并且可以基于所接收的选择来自动生成可执行程序。以这种方式,可以为非技术用户提供设计用于网络内的硬件设备的可执行程序的优点,而不必确定兼容性或经由代码来提供编程细节。在一些示例中,可以经由用户手势或与用户界面的可视元素的用户交互来接收要绑定在一起的设备和属性的选择。
此外,本公开的示例使用户能够选择与一个硬件设备相关联的输出并且将另一硬件设备的属性绑定到该选择的输出的属性,使得自动生成的可执行代码是转换链,其中硬件作为链中的一个或多个节点。本公开的各方面进一步使得自动生成的表达能够被显示在设计面处,可视地展露基于用户选择而自动生成的代码。这允许在用户认为合适时可以查看功能以进行检查或修改。非开发人员用户可以通过在某些情况下的可视元素的选择来修改在设计面上可视地展露的代码的各个方面,这也有助于增加他们对设备和设备能力的理解,以及改进用户的技术敏锐度。
不管用户界面是否与执行代码的硬件相关联,本公开的其他方面允许作为编译的转换链的可执行代码的自动生成,其本身可以在一块硬件上运行。不是与应用编程接口通信而应用编程接口进而与服务通信的硬件设备,本公开的各方面提供编译的转换链,其可以在硬件设备本身上运行,例如作为无头代码。
本文描述的方法、介质和系统可以使用包括计算机软件、固件、硬件或其组合或子集的计算机编程或工程技术来实现。将智能设备接口到转换链中通常需要软件转换和专用设备专用代码。本公开的各方面展露了设计环境中多个智能设备的输入和输出功能,改进了用户可访问性以及设备链创建过程的准确性。另外,本公开的示例通过基于对可视展露的功能的用户选择来自动地生成可执行代码来增加运行时的可执行代码的准确性,从而移除了无意的编码错误。
另外,本文描述的示例能够实现基于在设计面用户界面处的用户对可视展露的设备能力的用户选择,以高效和有效的方式自动地生成和修改设备的可执行代码。通过生成如本公开所描述的可执行代码,一些示例通过策略性地管理计算、处理、存储器和/或其他资源来减少处理负载和/或增加处理速度。基于用户选择来自动地生成将两个或多个硬件设备绑定在一起的应用,向转换链添加硬件的效果可以改进应用以及托管应用的一个或多个设备的性能。另外,一些示例可以通过简化至少一些操作(诸如通过将可执行代码推送到一个或多个设备以作为无头代码在设备上运行)来节省存储器、减少网络带宽使用、改进操作系统资源分配、和/或改进设备之间的通信。如本文所使用的,无头代码是指非图形用户界面(非GUI)可执行代码。
参照图1,示例性框图图示了用于生成可执行代码的操作环境100。在图1的示例中,与用户104相关联的计算设备102表示用于应用设计的系统。计算设备表示执行指令(例如,作为应用程序、操作系统功能、或应用程序和操作系统功能两者)以实现如本文所述的操作和功能的任意设备。计算设备可以包括移动计算设备或任意其他便携式设备。在一些示例中,移动计算设备包括移动电话、膝上型计算机、平板计算机、计算板、上网本、游戏设备和/或便携式媒体播放器。计算设备还可以包括较少的便携式设备,诸如台式个人计算机、售货亭、桌面设备、工业控制设备、无线充电站以及电动汽车充电站。另外,计算设备可以表示一组处理单元或其他计算设备。
计算设备102被配置为相对于其他设备接收、存储和传输数据(诸如用户输入、设备输入数据、设备输出数据、编程代码、图形数据、依赖关系数据、操作系统数据等)计算设备。术语“计算设备”和“计算机”可以在全文中互换使用。
在一些示例中,计算设备具有至少一个处理器106、存储器区域108和至少一个用户界面。处理器包括任意数量的处理单元,并且被编程为执行用于实现本公开的各方面的计算机可执行指令。指令可以由处理器或计算设备内的多个处理器执行,或由计算设备外部的处理器执行。在一些示例中,处理器被编程为执行诸如附图(例如图3和图4)中所示的那些指令。
在一些示例中,处理器表示执行本文描述的操作的模拟技术的实现。例如,操作可以由模拟计算设备和/或数字计算设备来执行。
在计算设备中还具有一个或多个计算机可读介质,诸如存储器区域。存储器区域包括与计算设备相关联或可由计算设备访问的任意数量的介质。存储器区域可以在计算设备的内部(如图1所图示)、计算设备外部(未图示)或两者(未图示)。在一些示例中,存储器区域包括被连接到模拟计算设备中的只读存储器和/或存储器。
存储器区域除了其他数据之外还存储一个或多个应用。应用在由处理器执行时操作以在计算设备上执行功能。示例性应用包括开发者环境110,其可以表示用于设计其他可执行应用的应用。应用可以与对应的应用或服务(诸如经由网络(未图示)可访问的web服务)进行通信。例如,应用可能表示与云中执行的服务器侧服务相对应的下载的客户端侧应用。在一些示例中,所生成的应用可以被配置为在运行时期间与数据源和云中的其他计算资源进行通信,或者可以在客户端侧服务和云服务之间共享和/或聚合数据。术语“存储器区域”和“存储器”可以在全文中互换使用。
存储器区域还存储一个或多个计算机可执行组件。示例性组件包括用户界面组件。例如,用户界面组件112在由计算设备102的处理器106执行时使处理器106执行操作,包括例如在与开发者环境110的用户交互期间接收用户选择。
在一些示例中,用户界面组件包括用于向用户显示数据并从用户接收数据的图形卡。用户界面组件还可以包括用于操作图形卡的计算机可执行指令(例如,驱动程序)。此外,用户界面组件可以包括显示器(例如,触摸屏显示器或自然用户界面)和/或用于操作显示器的计算机可执行指令(例如,驱动器)。用户界面组件还可以包括以下一项或多项以向用户提供数据或从用户接收数据:扬声器、声卡、相机、麦克风、振动电机、一个或多个加速计、BLUETOOTH品牌通信模块、全球定位系统(GPS)硬件和光感受光传感器。例如,用户可以通过以特定方式移动计算设备来输入命令或操纵数据。在另一示例中,用户可以通过提供可由用户界面组件检测到的手势(诸如触摸屏显示器或自然用户界面的触摸或轻敲)来输入命令或操纵数据。
开发者环境110为应用设计和生成提供设计工具和设计环境。在一些示例中,开发者环境110包括设计面114、组件库116、代码生成器118和策略集合120。设计面114可以是开发者环境110的交互式画布或交互式设计面。在一些示例中,设计面114是在交互式计算设备上显示的交互式图形用户界面的一部分。例如,设计面114可以是可通信地耦合到手势检测机构(诸如触摸屏的手势检测组件)的交互式表面,使得检测到的手势用于传送与开发者环境或开发者环境的元素的交互。
组件库116可以包括一个或多个应用组件或控件,其可以在应用设计中被选择或使用。在一些示例中,组件库116可以包括表示硬件设备的硬件元素。这些硬件元素可以经由用户与设计面114的交互来选择并绑定到或连线到其他硬件元素。示例硬件元素可以包括但不限于电器、电子设备、车辆、机器、机器人、家具、衣服、家庭用品、办公用品、固定装置、照明、音频/视频设备、通信设备和/或任意其他合适的硬件设备的表示。如本文所使用的,智能设备可以指不论协议的具有通信能力的任意设备。如本文所使用的,组件可以指控制、对象、实体或无论是在设计期间还是在运行时可以在应用或程序中使用的任意组件。
组件库116可以部分地由计算设备102的范围内的、由计算设备102共享的网络内、或者以其他方式与计算设备102通信的检测到的设备或智能设备来填充。在一些示例中,设备发现服务122可以与计算设备102通信,提供关于在网络或范围内检测到的设备的信息。在其他示例中,设备发现机制可以被实现为开发者环境110的一部分。设备发现可以周期性地、基于事件触发、基于请求、经由广播或者任意其他合适的方法发生。例如,硬件设备可以进入网络的范围内并可以广播设备通知。在另一示例中,设备发现服务122可以周期性地或基于某些其他来扫描可用设备。
硬件设备124和硬件设备126表示可以分别由组件库116中的硬件元素128和硬件元素130表示的两个检测到的硬件设备。在一些示例中,组件库116可以在设计面114提供组件的可视表示以供选择。用户104可以选择来自组件库116的表示硬件设备124和硬件设备126的硬件元素128和硬件元素130,以便将硬件元素128和硬件元素130与功能132绑定在一起。功能132可以是具有将硬件元素130的一个或多个属性绑定到硬件元素128的一个或多个参数的表示。设备能力列表134提供与表示硬件设备的所选择的硬件元素相关联的功能性的输出的可选列表。例如,硬件设备124可以是烤箱,由烤箱的可视图标表示为硬件元素128。烤箱图标的选择(诸如由用户将烤箱图标从组件库116中的可视列表拖动到设计面114上)可以触发设备能力列表134以显示烤箱的输出。在这个示例中,智能烤箱的设备能力或输出可以是加热、检测温度、控制温度、定时器功能、数字信息显示、警报等等。设备能力可以指硬件设备的任意功能、输出或属性。例如但不限于,设备能力可以包括:可听输出、触觉输出、可视输出、图形显示输出、感觉输出、加热功能、冷却功能、传感器控制、传感器调节、传感器检测、自动运动、机器人运动、机器人功能、机动功能、推进、搅拌、振动、激活、去激活、浸入、饱和、脱水、监控、通信、录音、音频拍摄、视频拍摄、多媒体拍摄、检测、标识、放大、缩小、平移、旋转和/或任意其他合适的功能或输出。
术语“硬件设备”,“硬件组件”和“智能设备”可以在全文中互换使用。智能设备可以是任意类型的电子设备,其能够经由协议(例如3G、无线电波、传输控制协议(TCP)/互联网协议(IP)、以太网等)连接到网络、服务和/或其他设备。智能设备的示例包括家用电器(冰箱、微波炉、烤面包机、电视机、家庭影院系统、咖啡机、淋浴器、垃圾处理器、烤箱、垃圾桶、洗碗机、门、镜子、恒温器、热水器、太阳能电池板、空气压缩机、门铃、风扇等)、安全系统、手表、可穿戴设备、电话、眼镜、计算机、平板计算机、照明、相机、打印机(包括3D打印机)、家具、碎纸机、系留设备以及能够连接到网络的任意其他设备。在这个示例中,硬件设备124、126可以是智能设备,其能够发送和/或接收来自其他智能设备的输入和/或输出,以及接收输入并向用户显示输出。
在一些示例中,设备能力和数据传输类型或协议可以在设备发现期间被诸如开发者环境110的创作环境发现或以其他方式获得。作为一个示例,设备登录到创作环境,并提供元数据文件作为登录过程的一部分,元数据文件包括设备协议、属性、能力和任意其他合适的信息。例如,当解串行化两个或更多设备之间的协议并生成将两个或更多个设备链接在一起到转换链中的可执行代码时,该元数据文件由创作环境使用。在其他示例中,发现的设备可以与创作环境交换消息,其可以包括关于设备能力和/或支持的协议的元数据和/或信息。在一些示例中,智能设备可以具有专有通信协议,而在其他示例中,智能设备可以具有开放或可发现的协议。在一些示例中,开发者环境110可以使用凭证或者通过一些其他手段从专有设备获得设备协议和能力信息。
代码生成器118自动地生成可执行代码136,其包含表示硬件元素128、130以及功能132的语法以及任意依赖关系。如本文所使用的,自动地指代在没有用户或管理员介入的情况下发生的过程。换言之,可以在设计面114处接收硬件元素的选择和对一个或多个属性或功能的选择,并且可以由代码生成器118使用所接收的数据来生成可执行代码136,其中没有其他外部干预。在一些示例中,代码生成器118可以编译一个或多个表达式以生成可执行代码。可执行代码136可以被推送到用于运行时执行的硬件设备,诸如硬件设备124,以执行等待硬件设备124和硬件设备126的功能132。
图2是图示了用于生成可执行程序的开发者环境200的框图。开发者环境200可以是图1中的开发者环境110的示意性示例。开发者环境200包括设计面202和设计逻辑204。
设计逻辑204包括设备发现机制206、表达式生成机制208、依赖关系图210、协议解串行化器机制212、代码生成器214和部署机制216。设备发现机制206可以在具有可用或检测到的设备或组件的设计面202处至少部分地填充组件列表218。组件列表218提供作为硬件设备的可视表示的硬件元素或硬件组件。在一些示例中,第一选择的组件或硬件元素可以被称为源组件,并且第二选择的组件可以被称为目标组件。
设计面202接收源组件220和目标组件222的初始选择。例如,初始选择可以是将源组件图标从组件列表拖放到设计面202的设计画布区域上。输出列表224可以可视地显示与由诸如源组件220或目标组件222的组件表示的硬件设备的设备能力相对应的相关联输出。输出可以是能够被另一设备接收和/或解译的任意类型的输出,可以是数字和/或模拟的,并且可以包括数据、声音、可视指示器、气味、触觉反馈和/或运动。例如,在源组件220表示恒温器的情况下,输出列表224可以可视地显示可选功能的列表,诸如温度传感器、时间指示、定时器功能、激活空调单元、激活加热器元件等等。设计面202可以从输出列表224接收与选择的组件相关联的输出的选择,诸如源组件220的输出226。可以选择目标组件222,其提示输出列表224以可视地显示与由目标组件222表示的硬件设备的设备能力相对应的输出的可选列表。可以为目标组件222选择输出228,并且可以从功能栏230选择功能以连接源组件220和源组件222,并且特别是输出226和输出228。
在功能栏230中选择的用于连接源组件220和目标组件222的属性或输出的功能(诸如图1中的功能132)可通过将输出226作为输入232提供给目标组件222来将输出226联系到输出228,使得源组件220的输出226是目标组件222的输入232,其触发来自目标组件222的输出228。换句话说,源组件220和目标组件222表示转换链中的硬件节点,该转换链将一个硬件设备的输出作为输入,并创建来自接收该输入的另一硬件设备的输出。本文使用的输入提供用于接收、计算、解释和/或分析另一智能设备的输出的输入功能。
表达式生成机制208基于所接收的组件和/或输出选择来自动地生成代码。表达式生成机制208还可以基于自动地生成的代码,利用组件和组件的属性之间的依赖关系来更新依赖关系图210。公式栏234可视化地展露与组件以及组件的属性的绑定相对应的自动地生成的代码。例如,公式栏234可以显示表达式236,表达式236包括参数238和参数240。例如,参数238可以对应于输出226并且参数240可以对应于输入232和输出228。在一些示例中,公式栏234还可以提供用户交互以修改自动地生成的参数或表达式。
表达式可以是功能,或者可以包含多个功能,其进而可以包含多个参数。例如,公式栏234提供表达式236,该表达式236可以将从一个设备输出的时间绑定为输入以触发从另一设备输出的加热,其中参数238与时间有关,并且参数240与被另一设备的加热元素达到的预配置的温度有关。任意数量的参数可以被利用,并且可以从用户、硬件元素、计算机等接收数据。表达式可以被参数化,和/或可以基于与一个或多个硬件元素相关联的底层代码。虽然参数和表达式本身可以从底层代码中导出,但表达式也可以利用存储在参数本身内的值。诸如表达式236的表达式可以是关于经由参数系到表达式的一个或多个硬件元素的协议不可知的。
协议列表242为开发者环境200提供所支持的通信协议的列表。在一些示例中,组件(诸如源组件220或目标组件222)的选择可以可选地在可视上展露与由该组件表示的硬件设备兼容的协议,或以其他方式由该组件表示的硬件设备支持。在其他示例中,用于源组件220的协议242和用于目标组件222的协议244可以由协议解串行化器机制212识别,协议解串行化器机制212可以使用协议242和协议244来生成运行时实体246,所述运行时实体246提供协议242与协议244之间的通信和/或解释。解串行化为技术和非技术用户两者均提供了用于实现智能设备之间的互操作性的方式,智能设备包括通常不能彼此通信的智能设备。例如,解串行化器机制212生成运行时实体并将与硬件元素(也称为硬件节点)相关联的所声明的数据传输类型并入运行时实体中,作为所生成的可执行代码的一部分。
诸如图2的示意性示例中的源组件220和目标组件222的硬件元素被登录到创作环境,诸如开发者环境200,以便在组件列表218处提供可选择的硬件元素。在硬件元素被登录或被添加到组件列表218时,伴随硬件元素的设备元数据被提供给设计逻辑204或由设计逻辑204获得。设备元数据可以包括但不限于由硬件元素表示的设备的输入属性、设备的输出属性、设备所支持的协议、以及与由硬件元素表示的硬件设备相关联的任意其他合适的设备信息。运行时实体246使用由设计逻辑204获得的该设备元数据来支持在运行时表达式236的执行。在示意性示例中,协议解串行化器机制212将协议242和协议244标识为用于基于与源组件220和目标组件222相关联的设备元数据对表达式236进行解串行化的协议,所述源组件220和目标组件222在这些组件的登录到创作环境处或在这些组件添加到组件列表218处被提供或获得。作为另一示例,协议解串行化器机制212由与硬件元素或组件相关联的设备元数据驱动,并且基于设备元数据将设备协议解串行化为运行时实体246。
代码生成器214至少部分地基于依赖关系图210将表达式236和运行时实体246编译成可执行代码,诸如设备程序248。依赖关系图210提供了设备链中的智能设备中的关系的图形和/或基于代码的表示。智能设备的链创建依赖关系,使得设备链的一部分(诸如一个或多个硬件元素)的修改沿设备链传播改变,其中智能设备链和/或代码被重新配置、重新编译和/或重新计算。例如,当以图形地表示时,依赖关系图210提供了改变(或提议的改变)如何影响设备链中的硬件元素的高级视图。例如,恒温器在读取特定温度时可以触发空调压缩机启动,其转而可以触发电视机打开(或改变到指定的通道)。移除空气压缩机可能会中断电视机的功能,但是在一些示例中,设备链可以是自校正的,使得参数被自动应用到设备链下面的设备。在一些示例中,当移除硬件元素时可以生成通知,该通知可以在设计面202处显示。添加硬件元素可以在依赖关系链中的任意合适的点处完成。然而,这可能涉及在输出在附加硬件元素处被接收以及输入从附加硬件元素被发送的方面的附加修改。一些示例还会在允许依赖关系改变之前提供确认提示。
例如,代码生成器214可以基于在功能栏230处选择的功能调用来生成设备程序248以连接选定的组件。部署机制216可以将设备程序248作为可执行代码部署到一个或多个目标,诸如到硬件设备或到云或到硬件设备和云两者。部署机制216允许作为设备程序248的设备链被上传、下载、保存、导出、导入和共享。任意合适的文件类型(包括应用或“应用”)可以被利用,并且文件中的数据可以包括例如表示智能设备和相关联功能(包括输出226、输入232和输出228)的硬件元素220、222、设备协议226、228、依赖关系图210以及相关联代码和表达式,诸如表达式236和参数238、240。这允许具有相同(或类似)智能设备的用户发送和接收在智能设备之间提供定制功能的文件。例如,如果用户A在闹钟和电视之间创建设备链,则用户A可以将设备链作为设备程序248发送给用户B以享受类似的定制功能。此外,用户B然后能够修改公式栏234内的参数(例如闹钟的闹钟时间),以便改变闹钟时间以适应用户B的偏好。一些示例还提供与其他用户有关的参数,诸如用户B的闹钟和/或设备链,实时和/或基于周期性更新地继承用户A的闹钟和/或设备链的更新的闹钟时间。在一些示例中,用户创建设备链,该设备链可以被应用于各种类型的设备,而不是专用于特定品牌/型号的设备或设备协议。例如,烤箱的恒温器控制器的输出可以保存为公布的设备链文件,其中另一用户可以下载设备链以使它们的恒温器以相同的方式控制它们的烤箱。在该示例中,设备链示意性地涉及恒温器和烤箱,但不限于任意特定类型的设备。
图3是图示了计算设备的用于生成要在设计面处显示的表达式的操作的示例性流程图。在操作302,计算设备在设计面处接收第一硬件元素。例如,诸如通过用户将烤箱图标拖放到设计界面的设计画布上在设计界面处选择智能烤箱。在操作304,计算设备在设计面处接收第二硬件元素。继续该示例,选择智能电视作为第二设备。在操作306,计算设备接收与第一硬件元素相关联的输出的选择。例如,所选择的输出可以是烤箱上的预加热传感器。在操作308,计算设备自动地生成将第二硬件元素的属性绑定到与第一硬件元素相关联的输出的表达式。在操作310,计算设备在设计面处显示自动地生成的表达式,其中此后该处理终止。这可以包括显示在表达式中可编辑参数以及可编辑参数值。继续上面的示例,生成的表达式具有温度参数,该温度参数从烤箱传感器接收温度数据,该温度数据作为输入绑定到在设计面处的智能电视。
图4是图示了计算设备的用于生成绑定两个设备的可执行代码的操作的示例性流程图。在操作402,过程以计算设备在用户界面处接收源组件开始。在操作404处,计算设备在用户界面处接收目标组件。例如,源组件和目标组件可以表示两个不同的硬件设备。在操作406,计算设备接收对来自源组件的输出的选择,该输出是对目标组件的输入。在操作408处,计算设备生成将目标设备的属性绑定到来自源设备的输出的属性的功能。在操作410处,计算设备将该功能输出到用户界面。
在操作412处,计算设备然后标识源设备和目标设备的一个或多个协议。在一些示例中,所选择的硬件元素可以表示两个不同的硬件设备,每个硬件设备具有不同的协议。例如,支持的智能恒温器可以是由源组件表示的一个设备,支持的智能窗帘可以是由目标组件表示的另一设备。
在操作414处,计算设备确定源协议(与源组件相关联)是否不同于目标协议(与目标组件相关联)。如果计算设备确定协议不相同,则在操作416处,计算设备将该功能编译成可执行代码,并在操作418处,部署该可执行代码。
如果计算设备确定协议不同,则在操作420处,计算设备将源协议和目标协议进行解串行化以生成运行时实体。所生成的运行时实体能够实现具有不同协议的不同类型的设备之间的通信。然后,在操作422处,计算设备将功能和生成的运行时实体编译成可执行代码,然后部署可执行代码。
图5A-5E是用于生成用于将硬件设备绑定在一起的可执行程序示例性用户界面图示。任意界面元素可以以任意方式显示,并且不需要类似于图5A-5E中所示的那些界面元素。
设计面500可以是图2中的设计面202的示意性示例。参照图5A,可以基于可用于选择以包括在设备链中的设备来显示可用设备502的列表。可以利用任意合适类型的显示器,包括3D和/或全息图。可用设备502可以使用刷新504来刷新或更新,刷新504可以是用户可选择的选项,或者可以被周期性地被更新或者在某个其他基础上被更新,诸如在一些示例中从进入发现服务范围的设备接收设备通知。在其他示例中,可用设备502的列表可以实时地、接近实时地或基于指定的基础来自动地被刷新/周期性地被更新。可用设备502的列表可以通过诸如接近度、协议/网络、设备类型等任意准则来过滤。选择506可以选择第一硬件元素,诸如烤箱508。在该示例中,烤箱508可以是表示智能烤箱设备的硬件元素。例如,选择506可以来自输入设备,诸如由外围设备控制的光标,或者任意其他类型的输入(例如,触摸屏、手势、语音、眼睛移动/闪烁)。在烤箱508的选择后,与由烤箱508所表示的智能烤箱设备相关联的烤箱能力被显示为烤箱输出510。例如,烤箱输出可以包括但不限于加热元素512、温度控制器514、温度传感器516、和定时器功能518。
参照图5B,设计面500图示了对第二硬件元素的选择,该第二硬件元素诸如通过提供与烤箱相邻的删除选择器520来提供烤箱508当前不是用户界面交互的焦点的可视指示。这种可视指示可以以任意方式提供,诸如通过在当前被选择的或者受制于修改的元素周围提供高光或边框。在其他示例中,除了另一可视指示符之外,还可以提供删除选择器520,以便为有效的用户提供用于从设计面500的设计画布区域中移除硬件元素的交互。
在该图示中,恒温器522已经被选择为表示智能恒温器设备的第二硬件元素。所显示的恒温器输出可以包括温度传感器524,激活空调单元526,激活加热器528和计时器530。注意,不需要显示与烤箱508和恒温器522相关联的协议,因为设计逻辑将识别所支持的协议并为可执行代码提供运行时实体,以能够实现由这些硬件元素表示的两个不同硬件设备之间的通信。以这种方式,用户可以将不同类型的设备链接在一起而不管协议如何,从而创建连接智能设备的程序,这些智能设备可能不一定被预编程为彼此通信。
参照图5C,设计面500描绘了用户已经选择烤箱508作为源组件来查看可用作恒温器522(目标组件)的输入的可用输出或属性的模式。这里的用户选择532选择温度控制器534作为烤箱508的输出以定制为目标组件的输入。用于定制的输出的选择在可视地展露了在功能栏536处正在被生成和/或被修改的功能,并且还可以在设计面500处提供输入字段或对话框,诸如具有输入域540的对话框538。在此示例中,对话框538具有输入提示“指定温度范围”以引导用户朝向在输入域540输入的值的类型。可以利用任意类型的输入条目(文本、下拉列表、单选按钮等等)以及任意类型的数据格式和/或数据类型。另外,可以在功能栏536处提供功能的下拉列表以从可用于当前选择的硬件元素的功能中进行选择。
表达式栏542将表达式显示为其是基于设计面500处的用户选择自动地生成的。表达式可以包括一个或多个参数,包括所选择的值。这在一些示例中,这可视地将由设计逻辑生成的代码或伪代码展露给用户,并且还可以在用户期望修改表达式栏542内的表达式的或参数时提供附加的修改。在所描述的示例中,当前表达式“接收温度范围”利用参数“温度值”,该参数尚未包含值,但将反映输入到输入字段540中的值。
参考图5D,设计面500描绘了其中用户已经选择恒温器522作为目标组件的模式,该目标组件在该示例中接收源组件(烤箱508)的选择的输出作为输入。在该示例中,输出544在烤箱508附近被显示,显示作为烤箱508的输出的<350°的定制温度范围,以用作恒温器522的输入。例如,由烤箱508表示的智能烤箱可以被编程或设置到350°或以其他方式达到该温度,这可以触发智能烤箱向恒温器522发送消息。
恒温器522作为目标组件的选择显示用于选择的相关输出。在该示例中,已经选择了变化温度546作为恒温器522的输出,该恒温器522基于作为恒温器522的输入而接收的来自烤箱508的输出544而被改变。目标组件的属性或输出的选择在功能栏536处显示所选择的功能,并且向对话框548提供输入域550,以引导用户通过期望的输出的定制。这里,对话框548具有提示“改变温度”以引导用户输入到输入域550中的合适值。表达栏542基于对要绑定到源组件的输出的目标组件的属性的选择来可视地显示对自动地生成的表达式的添加或修改。
参考图5E,设计面500描绘了在功能栏536处已经进行连接功能的选择以将所选择的硬件元素和硬件元素的所选择的属性或输出进行绑定以执行期望的输出的模式。
在该示例中,显示用于恒温器522的输出552的图形表示,将温度改变为72。在一些示例中,可以为数字温度参数值指定/选择温度类型(华氏温度、摄氏温度、开氏温度等)。例如在此被描绘为自动地生成的箭头的图形连接指示符554表示潜在的设备链。任意数量的设备都可以链接在一起。硬件元素可以接收多个输入和/或将多个输出发送到另一硬件元素或多个其他硬件元素。设备链接不限于设备的顺序链接。在一些示例中,图形连接指示可以由用户在有或者没有软件辅助绘图辅助的情况下绘制。另外,可以提供删除机制来移除图形连接指示符554,其中删除机制可以利用任意类型的接口,并且在一些示例中可能不被利用。确认提示556可以用于请求用户确认当前设备链是预期的。此处的确认提示显示参数的内容,但在其他示例中不需要。例如,在接收到对“确认”选项的选择时,设备链由生成可执行代码的代码生成器创建。功能栏536反映连接功能。这也反映在表达式栏542中,其在第一表达式面板562中显示利用参数“输入值”和“输出值”的“连接”功能。第二表达式面板560显示包含值“72°F”的参数“输出值”。第三表达面板558显示包含“<350°”的值的参数“输入值”。在一些示例中,可以由用户修改公式栏或表达式面板的内容,诸如以改变值或修改参数。在其他示例中,表达式的参数或各方面的修改可以被设计逻辑限制为与所选择的硬件元素和/或属性兼容的改变或值。
被编译为可执行代码的设备链可以被保存、下载、上传和/或与其他人共享。根据链文件创建者、后续用户、智能设备制造商、第三方等阐述的许可/限制,链文件可能会受到时间限制、被销售和/或被租用。此外,链文件可能具有安全特征(密码、生物识别等)和/或与用户简档相关联。另外,一个或多个智能设备可以具有提供可以由用户进一步修改的内置功能模板的模板和/或主简档。此外,用户可以将他们的设备链的一些或全部一起保存为一个捆绑包,其也可以由任意类型的安全措施保护。在一些示例中,还可以将代码和/或更新例如从云、其他设备、制造商等等推送到智能设备和/或硬件元素。
现在参考图6A,设计面600描绘了在已经选择了刷新604选项之后的可用设备602的示意性示例。例如,附加设备可被发现或标识为可用智能设备用于包括在设备链中。可以通过从可用设备列表中选择硬件设备的图形表示来选择第一硬件元素或源组件。在该示例中,恒温器606已经被选择并且被放置在设计面600的设计画布区域。恒温器606是恒温器设备的图形表示,该恒温器设备可以是智能恒温器。恒温器输出608显示由恒温器606表示的硬件设备的设备能力。在该示例中,输出可包括温度传感器610、激活空调612、激活加热器614、定时器616和时钟618。附加的输出可用于选择。另外,虽然描绘了选择按钮的图形栏,但可以使用下拉列表或可选择选项的任意其他图形显示。这里,按钮620表示附加输出可用于选择并且可以通过在该示例性可视显示中滚动来查看的可视指示。
参照图6B,设计面600表示用户已经选择第二硬件元素或目标组件的模式。另一硬件元素的选择可以显示与第一硬件元素或先前的硬件元素相邻的删除选项622。另外,在其他示例中,可以选择第一硬件元素作为目标组件,其中选择第二硬件元素作为源组件。
在该图示中,咖啡机624被选择为目标组件。咖啡机输出626在该示例中与公式栏相邻显示,其中可用输出与由咖啡机624的图形元素表示的智能咖啡机的设备能力相关联。示例输出包括研磨628、调制630、加热632和定时器634。
参考图6C,选择作为源组件的恒温器606显示与由恒温器606表示的设备相关联的输出。时钟642的选择640可以在功能栏644处展露所选择的功能,从而向用户可视地提供指示用户选择调用的用于修改或定制的功能。对话框646可以被提供有输入域648以捕捉与所选择的功能相关联的期望值,以便自动地生成将在公式栏650处显示的表达式的参数。
参考图6D,作为目标组件的咖啡机624的选择移动到用于定制咖啡机的输出的模式,该模式基于恒温器的输出来可能受影响或改变。这里,将被用作到目标组件的输入的定制输出652可以被显示在设计面600处。研磨功能656的选择654可以诸如经由对话框658和输入域660来提供用于定制的参数。用户提示“研磨量(以杯为单位):”可指导用户到与所选择的功能兼容的数据类型或值类型。在公式栏650处显示基于用户选择生成的表达式。
参照图6E,可以选择第三硬件元素以添加到正在创建的设备链中。在该示例中,淋浴器664的选择662将第三硬件元素添加到用于链接的选定元素。淋浴器664表示智能淋浴器,例如具有自动启动水压力、调节水温、改变玻璃外壳的可见度或任意其他可能的自动化的能力的淋浴器。淋浴器664的选择显示淋浴器输出666,其在该示例中可以包括:激活水668、温度传感器670、温度控制器672和玻璃磨砂器674。
参考图6F,咖啡机624的选择显示相关联的输出,其可用作淋浴器664的输入。在该示例中,恒温器606是对于作为目标组件的咖啡机624的源组件,而咖啡机624可以是对于作为目标组件的淋浴器664的源组件。换句话说,单个设备链中可能有多于一个源组件和/或多于一个目标组件。在该示例中,作为咖啡机624的输出的研磨678的选择676提供经由对话框680和输入域682的输出的定制。这里,设计逻辑可以推断期望咖啡机设备的循环作为目标组件的输入。在这个示例中,智能恒温器识别时间,其触发智能咖啡机开始研磨两杯咖啡豆,其进而触发智能淋浴器将水激活到定制温度,甚至使玻璃外壳雾化以降低能见度。
图6G描绘恒温器、咖啡机和淋浴器的链。连接指示符684的图形表示提供了正在创建的设备链的可视表示。确认请求686可以提示用户确认所描绘的连接是预期的连接。
附加示例
在一些示例中,由代码生成器为设备链生成的可执行代码可以是无头代码并且可以被推送到一个或多个硬件设备。例如,无头码可以被部署到智能烤箱,并且可以在智能烤箱处运行以控制咖啡机或恒温器或连接在设备链中的其他设备的输出。
另外,不管设备类型或设备支持的协议类型如何,都可以将任意设备连接到另一个或多个设备。在物联网(IoT)中,可以选择任意物联网设备来连接到任意其他IoT设备或多个IoT设备。
用于所生成的表达式或参数以及连接以及甚至源组件和目标组件的用户意图也可以基于遥测或机器学习来推断。在示例场景中,针对用户的两个设备之间的默认连接建议可以基于来自过去的用户行为的机器学习,或者基于新用户的遥测。
作为本文所述的其它实例的备选或除了本文所述的其它实例之外,示例包括以下的任意组合:
-其中可执行代码是无头的;
-识别与由第一元素表示的第一硬件设备相关联的第一设备协议,该第一设备协议与由第二元素表示的与第二硬件设备相关联的第二设备协议不同;
-对第一设备协议和第二设备协议进行解串行化,以生成经由第一设备协议和第二设备协议进行通信的运行时实体;
-用生成的运行时实体来编译自动生成的表达式以生成可执行代码;
-获得与第一元素相对应的第一硬件设备的设备能力;
-提供第一硬件设备的设备能力作为与在设计面处的第一个元素相关的输出列表;
-获得与第二元素相对应的第二硬件设备的设备能力;
-提供第二硬件设备的设备能力作为与在设计面处的第二个元素相关的输出列表;
-从发现服务中发现第一个硬件设备;
-在设计面处提供表示第一个硬件设备的第一个元素作为可选择的元素;
-检测在设计面处的或指向设计面处的第一元素和第二元素的用户手势;
-其中所述用户界面进一步获得关于与所接收的硬件节点相关联的设备能力和数据传输类型的信息;
-其中代码生成器进一步将与硬件节点相关联的所声明的数据传输类型解串行化为运行时实体,作为生成的可执行代码的一部分;
-其中源设备的设备能力作为源组件的属性而展露于用户界面处,并且其中目标设备的设备能力作为目标组件的属性而展露于用户界面处;
-分析源设备和目标设备之间依赖关系的自动生成功能;
-基于对自动生成功能的分析来生成依赖关系图;
-使用依赖关系图来生成可执行代码;
-将可执行代码部署到云、源设备、目标设备或其他硬件设备中的至少一个;
-从发现服务中发现源设备;
-标识与由第一元素表示的第一硬件设备相关联的第一设备协议,该第一设备协议与由第二元素表示的与第二硬件设备相关联的第二设备协议不同;
-对第一设备协议和第二设备协议进行解串行化以生成经由第一设备协议和第二设备协议进行通信的运行时实体;
-用生成的运行时实体来编译自动生成的表达式以生成可执行代码。
在一些示例中,图3和图4中图示的操作可以被实现为编码在计算机可读介质上的软件指令、被编程或设计为执行操作的硬件或两者。例如,本公开的方面可以被实现为芯片上的系统或包括多个互连的导电元素的其他电路。
虽然已经根据各种示例及其相关联的操作描述了本公开的各方面,但本领域技术人员将理解,来自任意数目的不同示例的操作的组合也在本公开的各方面的范围内。在一些示例中,可以实现安全措施以请求开发者环境和由硬件元素表示的硬件设备配对以便输入设备元数据、描述、能力、事件、协议描述等等。在该示例中,开发者环境可以生成逻辑作为所生成的可执行代码的一部分,该可执行代码包括代码将被部署到的硬件设备的签名交换过程,使得在运行时硬件设备可以授权可执行程序在硬件设备上运行。
在一些其他示例中,可以使用验证提供者服务来将智能设备与开发者环境例如诸如经由用户凭证配对。本公开的各方面可以提供所生成的可执行程序的广播或公布,以供开发者环境的另一实例下载以供另一用户定制。
另外,硬件设备可以用作转换的功能,或者作为转换链中的参与者。例如,设备可以是在转换链中提供输入和/或输出的节点。在另一示例中,设备可以是功能,使得该设备对状态的转换改变另一设备的状态。作为一个示例,智能灯泡可以在转换链中连接到音频播放器,具有指示当智能灯变暗时-改变智能灯泡的状态-音频播放器上的音量被降低-改变音频播放器的状态的参数。
尽管本公开的各方面没有追踪个人可标识信息,但是已经参考从用户监视和/或收集的数据描述了示例。在一些示例中,通知可以被提供给数据收集的用户(例如,经由对话框或偏好设置),并且用户被给予用于给予或拒绝监视和/或收集的同意的机会。同意可以采用选择同意或退出同意的形式。
示例性的操作环境
图7图示了可以在其上实现图1-2的示例的合适的计算和联网环境700的示例。计算系统环境700仅是合适的计算环境的一个示例,并不旨在对本公开的使用范围或功能提出任意限制。计算环境700也不应被解释为具有与示例性操作环境700中图示的组件中的任意一个或组合有关的任意依赖关系或要求。
本公开与许多其他通用或专用计算系统环境或配置一起操作。可适用于本公开的公知的计算系统、环境和/或配置的示例包括但不限于:个人计算机、服务器计算机、手持式或膝上型设备、平板设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络PC、小型计算机、大型计算机、包括任意上述系统或设备的分布式计算环境等。
本公开可以在由计算机执行的诸如程序模块的计算机可执行指令的一般上下文中描述。通常、程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。本公开也可以在分布式计算环境中实施,其中任务由通过通信网络链接的远程处理设备执行。在分布式计算环境中,程序模块可以位于包括存储器存储设备和/或计算机存储设备的本地和/或远程计算机存储介质中。如本文所使用的,计算机存储设备是指硬件设备。
参照图7,用于实现本公开的各个方面的示例性系统可以包括以计算机710形式的通用计算设备。计算机710的组件可以包括但不限于处理单元720、系统存储器730以及将包括系统存储器的各种系统组件耦合到处理单元720的系统总线721。系统总线721可以是几种类型的总线结构中的任意一种,包括存储器总线或存储器控制器、外围总线和使用各种总线架构的本地总线。作为示例而非限制,这样的架构包括工业标准架构(ISA)总线、微通道架构(MCA)总线、增强ISA(EISA)总线、视频电子标准协会(VESA)本地总线、和也称为夹层总线的外围组件互连(PCI)总线。
计算机710通常包括各种计算机可读介质。计算机可读介质可以是可由计算机710访问的任意可用介质,并且包括易失性和非易失性介质以及可移动和不可移动介质。作为示例而非限制,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块等信息的任意方法或技术实现的易失性和非易失性、可移动和不可移动介质。存储器731和732是计算机存储介质的示例。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其它存储技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储装置、磁带盒、磁带、磁盘存储器或其他磁存储设备、或可用于存储所需信息并可由计算机710访问的任意其他介质。然而,计算机存储介质不包括传播信号。相反,计算机存储介质排除传播的信号。任意这样的计算机存储介质可以是计算机710的一部分。
通信介质通常以诸如载波或其他传输机制的调制数据信号实施计算机可读指令、数据结构、程序模块等,并且包括任意信息传递介质。术语“调制数据信号”是指具有以对信号中的信息进行编码的方式设置或改变其特性中的一个或多个的信号。作为示例而非限制,通信介质包括诸如有线网络或直接有线连接的有线介质,以及诸如声学、RF、红外线和其他无线介质的无线介质。
系统存储器730包括诸如只读存储器(ROM)731和随机存取存储器(RAM)732的易失性和/或非易失性存储器形式的计算机存储介质。包含诸如在启动期间帮助在计算机710内的元素之间传递信息的基本例程的基本输入/输出系统733(BIOS)通常被存储在ROM 731中。RAM 732通常包含由处理单元720可立即访问和/或当前正在被所述处理单元720操作的数据和/或程序模块。作为示例而非限制,图7图示了操作系统734、诸如开发者环境735的应用程序、其他程序模块736和程序数据737,开发者环境735接收硬件元素并且生成可执行代码以将由硬件元素表示的硬件设备链接在一起。
计算机710还可以包括其他可移动/不可移动、易失性/非易失性计算机存储介质。仅作为示例,图7图示了从不可移动、非易失性磁介质读取或向不可移动、非易失性磁介质写入的硬盘驱动器741;提供从可移动、非易失性存储器752的读取或向可移动、非易失性存储器752写入的通用串行总线(USB)端口751;以及从诸如CD ROM或其他光学介质等的可移动、非易失性光盘756读取或向可移动、非易失性光盘756写入的光盘驱动器755。可以在示例性操作环境中使用的其他可移动/不可移动、易失性/非易失性计算机存储介质包括但不限于磁带盒、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等。硬盘驱动器741通常通过诸如接口740的不可移动存储器接口被连接到系统总线721,并且USB端口751和光盘驱动器755通常通过诸如接口750的可移动存储器接口被连接到系统总线721。
上面描述并在图7中图示的驱动器及其相关联的计算机存储介质为计算机710提供对计算机可读指令、数据结构、程序模块和其他数据的存储。在图7中,例如,硬盘驱动器741被图示为存储操作系统744、开发者环境745、其他程序模块746和程序数据747。注意,这些组件可以与操作系统734、开发者环境735、其他程序模块736以及程序数据737相同或不同。操作系统744、开发者环境745、其他程序模块746和程序数据747在本文中被赋予不同的数字以说明至少它们是不同的副本。用户可以通过诸如平板计算机或电子数字化仪764、麦克风763、键盘762和指点设备761(通常称为鼠标、轨迹球或触摸板)的输入设备将命令和信息输入到计算机710中。未在图7中图示的其他输入设备可以包括操纵杆、游戏手柄、圆盘式卫星天线、扫描仪等。这些和其他输入设备通常通过耦合到系统总线的用户输入接口760被连接到处理单元720,但是可以通过诸如并行端口、游戏端口或通用串行总线(USB)的其他接口和总线结构连接。监视器791或其他类型的显示设备也经由诸如视频接口790的接口连接到系统总线721。监视器791还可以与触摸屏面板等集成。注意,监视器和/或触摸屏面板可以物理地耦合到外壳,在外壳中计算设备710被集成到诸如平板型个人计算机中。另外,诸如计算设备710的计算机还可以包括诸如扬声器795和打印机796的其他外围输出设备,其可以通过输出外围接口794等连接。
计算机710可以使用到诸如远程计算机780的一个或多个远程计算机的逻辑连接在联网环境中操作。远程计算机780可以是个人计算机、服务器、路由器、网络PC、对等设备或其他公共网络节点,并且通常包括上面相对于计算机710描述的许多或全部元素,尽管在图7中仅图示了存储器存储设备781。图7中描绘的逻辑连接包括一个或多个局域网(LAN)771和一个或多个广域网(WAN)773,但是也可以包括其他网络。这种网络环境在办公室、企业范围的计算机网络、内联网和互联网中都很常见。
当在LAN联网环境中使用时,计算机710通过网络接口或适配器770连接到LAN771。当在WAN联网环境中使用时,计算机710通常包括调制解调器772或用于通过诸如互联网的WAN 773建立通信的其他部件。可以是内部的或外部的调制解调器772可以经由用户输入接口760或其他适当的机制连接到系统总线721。诸如包括接口和天线的无线联网组件可以通过诸如接入点或对等计算机的适当设备来被耦合到WAN或LAN。在联网环境中,相对于计算机710描绘的程序模块或其部分可以被存储在远程存储器存储设备中。作为示例而非限制,图7将远程应用程序785图示为驻留在存储器设备781上。可以理解,所示的网络连接是示例性的,并且可以使用在计算机之间建立通信链路的其他手段。
现在转到图8,示例性框图图示了用于生成设备应用的云计算环境。架构800图示了适用于实现本公开的各方面的示例性云计算架构。架构800不应被解释为具有与其中所示的任意单个组件或组件的组合相关的任意依赖或要求。另外,可以采用任意数量的节点、虚拟机、数据中心、角色实例或其组合来实现在本公开的范围内的期望的功能。
图8的分布式计算环境包括公共网络802、专用网络804和专用网络806。公共网络802例如可以是公共云。私有网络804可以是私有企业网络或私有云,而专用网络806可以是第三方网络或专用云。在该示例中,私有网络804可以托管顾客数据中心810,并且专用网络806可以托管互联网服务提供商812。混合云808可以包括公共网络802、私有网络804和专用网络806的任意组合。例如专用网络806可以是可选的,其中混合云808包括公共网络802和私有网络804。
根据结构控制器818,公共网络802可以包括被配置为托管和支持操作(包括分布式应用的任务)的数据中心。将理解和认识到,图8中图示的数据中心814和数据中心816是仅仅是用于容纳一个或多个分布式应用的一个合适的实现方式的示例,并不旨在对本公开的实施例的使用范围或功能性提出任意限制。数据中心814和数据中心816也不应被解释为具有与任意单个资源、资源组合、服务器(例如,服务器820、服务器822和服务器824)的组合、节点(例如,节点832和834)的组合、或用于访问资源、服务器和/或节点的API集合有关的任何依赖关系或要求。
数据中心814图示了包括诸如服务器820、服务器822和服务器824的多个服务器的数据中心。结构控制器818负责自动管理服务器并分配数据中心814内的任务和其他资源。举例来说,结构控制器818可以依赖于服务模型(例如,由拥有分布式应用的客户设计)来提供关于如何、何处以及何时配置服务器822以及如何、何处以及何时在其上放置应用826和应用828的指引。在一个实施例中,分布式应用的一个或多个角色实例可以放置在数据中心814的一个或多个服务器上,其中一个或多个角色实例可以表示软件、组件程序或参与分布式应用的角色实例的部分。在另一实施例中,角色实例中的一个或多个可以表示分布式应用可访问的存储数据。
数据中心816图示了包括诸如节点832和节点834的多个节点的数据中心。一个或多个虚拟机可以在数据中心816的节点上运行,诸如例如节点834的虚拟机836。尽管图8描绘了数据中心816的单个节点上的单个虚拟节点,但是根据本公开的示意性实施例,任意数量的虚拟节点可以在数据中心的任意数量的节点上实现。通常,基于放置在分布式应用上的需求(例如,处理负载量),将虚拟机836分配给分布式应用或服务应用的角色实例。如本文所使用的,短语“虚拟机”不意味着是限制性的,并且可以指处理单元执行的任意软件、应用、操作系统或程序,以便成为分配给其的角色实例的功能的基础。此外,虚拟机836可以包括处理能力、存储位置和数据中心816内的其他资产以正确地支持所分配的角色实例。
在操作中,虚拟机动态分配数据中心的第一节点和第二节点上资源,并且端点(例如,角色实例)动态地置于虚拟机上以满足当前处理负载。在一个实例中,结构控制器830负责自动管理在数据中心816的节点上运行的虚拟机并且负责将角色实例和其他资源(例如,软件组件)放置在数据中心816内。作为示例,结构控制器830可以依赖于服务模型(例如,由拥有服务应用的客户设计)来提供关于如何、何处以及何时配置诸如虚拟机836的虚拟机以及如何、何处以及何时在其上放置角色实例。
如上所述,可以在数据中心的一个或多个节点内动态建立和配置虚拟机。如本文所示,节点832和节点834可以是任意形式的计算设备,诸如例如个人计算机、台式计算机、膝上型计算机、移动设备、消费电子设备、服务器、图7的计算设备700等。在一个实例中,节点托管并支持虚拟机的操作,同时托管开拓出的其他虚拟机用于支持数据中心816的其他租户,诸如内部服务838和托管服务840。通常,角色实例可以包括不同客户拥有的不同服务应用的端点。
通常,节点中的每一个包括或被链接到某种形式的计算单元(例如,中央处理单元、微处理器等)以支持在其上运行的组件的操作。如本文所使用的,短语“计算单元”通常是指具有处理能力和存储器的专用计算设备,其支持操作软件,操作软件成为在其上的软件、应用和计算机程序的基础。在一个实例中,计算单元被配置有有形硬件元素或机器,其与节点集成或可操作地耦合到节点,以使每个设备能够执行各种处理和操作。在另一实例中,计算单元可以涵盖耦合到由每个节点容纳的计算机可读介质(例如,计算机存储介质和通信介质)的处理器(未图示)。
驻留在节点上的角色实例支持服务应用的操作,并且可以经由应用编程接口(API)互连。在一个实例中,可以经由诸如公共网络802的网络云来建立这些互连中的一个或多个。网络云用于互连诸如角色实例的资源,该资源可以可分布式地跨诸如节点832和834的各种物理主机被放置。另外,网络云促进通过连接在数据中心816中运行的服务应用的角色实例的信道的通信。举例来说,网络云可以包括但不限于一个或多个局域网(LAN)和/或广域网(WAN)。这种联网环境在办公室、企业范围的计算机网络、内联网和因特网中都很常见。相应地,网络在此不再进一步描述。
虽然已经根据各种示例及其相关联的操作描述了本公开的各方面,但本领域技术人员将理解,来自任意数量的不同示例的操作的组合也在本公开的各方面的范围内。
本文使用的术语“系留”在一些示例中指的是一个设备充当用于网络接入的另一设备的接入点的情况。系留连接可以通过有线连接或无线连接进行。本文使用的术语“Wi-Fi”在一些示例中是指使用高频无线电信号来传输数据的无线局域网。本文使用的术语在一些示例中指的是用于使用短波长短距离无线电传输来交换数据的无线技术标准。本文使用的术语在一些示例中指代用于使用短波长无线电传输在短距离上交换数据的无线技术标准。本文使用的术语“蜂窝”在一些示例中指的是使用短距离无线电台的无线通信系统,当它们连接在一起时,能够实现在宽地理区域上的数据的传输。本文使用的术语“NFC”在一些示例中指的是用于短距离数据交换的短距离高频无线通信技术。
尽管本公开的各方面没有追踪个人可标识信息,但是已经参考可以从用户监视和/或收集的数据描述了示例。在一些示例中,通知可以被提供给数据收集的用户(例如,经由对话框或偏好设置),并且用户被给予机会来给予或拒绝监视和/或收集的同意。同意可以采用选择同意或退出同意的形式。
虽然结合示例性计算系统环境进行了描述,但本公开的示例能够用许多其他通用或专用计算系统环境、配置或设备来实现。在涉及通用计算机的示例中,当被配置为执行本文描述的指令时,本公开的各方面将通用计算机转换为专用计算设备。
除非另有说明,否则在此说明和描述的本公开的示例中的操作的执行或进行的顺序不是必需的。也就是说,除非另外指明,否则操作可以以任意顺序被执行,并且本公开的示例可以包括比本文公开的更多或更少的操作。例如,可以想到,在另一操作之前、同时或之后执行或进行特定操作在本公开的各方面的范围内。
当介绍本公开的各方面的元素或其示例时,冠词“一”、“一个”、“该”和“所述”旨在表示存在一个或多个元素。术语“包括”、“包含”和“具有”旨在是包含性的并且意味着除了列出的元素之外可以存在其他元素。术语“示例性”旨在表示“一个示例”。短语“以下项中的一项或多项:A、B和C”意指“至少一个A和/或至少一个B和/或至少一个C”。
本文所说明和描述的实例以及未在本文中具体描述但在本发明的各大方面的范围内的示例构成用于产生可执行程序的示例性部件。例如,图1-2和7-8中所示的元素诸如当被编码以执行图3-4中所示的操作时构成用于在计算设备用户界面的设计面处接收表示第一硬件设备的第一元素的示例性部件,用于在设计面处接收表示第二硬件设备的第二元素的示例性部件,用于接收对与第一元素相关联的输出的选择的示例性部件,用于自动地生成将第二元素的属性绑定到与第一元素相关联的输出的属性的功能的示例性部件,以及用于在设计面处显示自动地生成的功能的示例性部件。
已经详细描述了本公开的各方面,显而易见的是,在不脱离所附权利要求限定的本公开的各方面的范围的情况下,可以进行修改和变化。由于在不脱离本公开的各方面的范围的情况下可对上述构造、产品和方法进行各种改变,所以上述说明中包含的和附图中图示的所有内容应旨在被理解为示意性的而不是在限制的意义上的。

Claims (15)

1.一种用于生成可执行程序的方法,包括:
在计算设备用户界面的设计面处,接收表示网络中的第一硬件设备的第一元素;
在所述设计面处接收表示所述网络中的第二硬件设备的第二元素;
接收对与所述第一元素相关联的输出的选择;
自动生成表达式,所述表达式将所述第二元素的属性绑定到与所述第一元素相关联的所述输出的属性,将所述第一元素和所述第二元素链接在设备链中;以及
在所述设计面处显示自动生成的所述表达式;以及
使用自动生成的所述表达式的所述设备链来生成设备程序。
2.根据权利要求1所述的方法,还包括:
编译自动生成的所述表达式以生成可执行代码;以及
将所述可执行代码部署到所述网络中的云、所述第一硬件设备、所述第二硬件设备或另一硬件设备中的至少一个。
3.根据权利要求1所述的方法,其中所述可执行代码是无头的。
4.根据权利要求1所述的方法,还包括:
标识与所述第一元素所表示的所述第一硬件设备相关联的第一设备协议,所述第一设备协议不同于与所述第二元素所表示的所述第二硬件设备相关联的第二设备协议;
对所述第一设备协议和所述第二设备协议进行解串行化以生成运行时实体,所述运行时实体经由所述第一设备协议和所述第二设备协议进行通信;以及
用所生成的所述运行时实体来编译自动生成的所述表达式以生成可执行代码。
5.根据权利要求1所述的方法,还包括:
获得与所述第一元素相对应的所述第一硬件设备的设备能力;以及
提供所述第一硬件设备的所述设备能力,作为与在所述设计面处的所述第一元素相关联的输出列表。
6.根据权利要求1所述的方法,还包括:
获得与所述第二元素相对应的所述第二硬件设备的设备能力;以及
提供所述第二硬件设备的所述设备能力作为与在所述设计面处的所述第二元素相关联的输出列表。
7.根据权利要求1所述的方法,还包括:
从发现服务中发现所述第一个硬件设备;以及
在所述设计面处提供表示所述第一硬件设备的所述第一元素作为可选元素。
8.根据权利要求1所述的方法,其中接收所述第一元素和所述第二元素还包括:
检测在所述设计面处的、或指向在所述设计面处的所述第一元素和所述第二元素的用户手势。
9.一种用于生成可执行程序的系统,所述系统包括:
处理器;
用户接口,在所述处理器上被实现,所述用户接口接收表示硬件设备的硬件节点和软件节点;以及
代码生成器,在所述处理器上实现,所述代码生成器执行操作以:
获得在所述用户界面处生成的表达式;
针对所述硬件节点和所述软件节点之间的依赖,分析所获得的所述表达式;
基于经分析的所述表达式来生成依赖图;
基于所生成的所述依赖图来生成可执行代码;以及
将所生成的所述可执行代码输出到所述用户界面用于显示。
10.根据权利要求9所述的系统,其中所述用户界面还获得关于与所接收的所述硬件节点相关联的设备能力和数据传输类型的信息。
11.根据权利要求9所述的系统,其中所述代码生成器还将与硬件节点相关联的已声明的数据传输类型解串行化为运行时实体,所述运行实体作为所生成的所述可执行代码的一部分。
12.一种或多种计算机存储介质,具有用于生成可执行程序的计算机可执行指令,所述可执行指令在由计算机执行时使所述计算机执行操作,所述操作包括:
在用户界面处接收表示源设备的源组件;
在所述用户界面处接收表示目标设备的目标组件;
接收对来自所述源设备的输出的选择,所述输出是对所述目标设备的输入;
自动生成将所述目标设备的属性绑定到来自所述源设备的所述输出的属性的功能;以及
在所述用户界面处显示自动生成的所述功能。
13.根据权利要求12所述的一个或多个计算机存储介质,其中所述源设备的设备能力作为所述源组件的属性而展露于所述用户界面,并且其中所述目标设备的设备能力作为所述目标组件的属性而展露于所述用户界面。
14.根据权利要求12所述的一种或多种计算机存储介质,还包括:
针对所述源设备与所述目标设备之间的依赖,分析自动生成的所述功能;以及
基于对自动生成的所述功能的所述分析来生成依赖图。
15.根据权利要求12所述的一种或多种计算机存储介质,还包括:
标识与由所述第一元素表示的所述第一硬件设备相关联的第一设备协议,所述第一设备协议不同于与由所述第二元素表示的所述第二硬件设备相关联的第二设备协议;
对所述第一设备协议和所述第二设备协议进行解串行化以生成运行时实体,所述运行时实体经由所述第一设备协议和所述第二设备协议进行通信;以及
用所生成的所述运行时实体来编译自动生成的所述表达式以生成可执行代码。
CN201680076295.8A 2015-12-28 2016-12-21 设备应用的生成 Active CN108431765B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/981,058 US10001976B2 (en) 2015-12-28 2015-12-28 Generation of a device application
US14/981,058 2015-12-28
PCT/US2016/067891 WO2017116876A1 (en) 2015-12-28 2016-12-21 Generation of a device application

Publications (2)

Publication Number Publication Date
CN108431765A true CN108431765A (zh) 2018-08-21
CN108431765B CN108431765B (zh) 2021-08-27

Family

ID=57822044

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680076295.8A Active CN108431765B (zh) 2015-12-28 2016-12-21 设备应用的生成

Country Status (4)

Country Link
US (2) US10001976B2 (zh)
EP (1) EP3398062B1 (zh)
CN (1) CN108431765B (zh)
WO (1) WO2017116876A1 (zh)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3106897A1 (en) * 2015-06-19 2016-12-21 Centre National d'Etudes Spatiales Gnss receiver with an on-board capability to implement an optimal error correction mode
KR20170091426A (ko) * 2016-02-01 2017-08-09 삼성전자주식회사 디스플레이장치 및 그 제어방법
US11391491B2 (en) * 2016-06-22 2022-07-19 Fluid Handling Llc Low water cut-off remote monitoring and diagnosing system
US20180004393A1 (en) 2016-07-01 2018-01-04 Autodesk, Inc. Three dimensional visual programming interface for a network of devices
US10834586B2 (en) * 2016-07-29 2020-11-10 Amzetta Technologies, Llc System and method for controlling heterogeneous internet of things (IoT) devices using single application
US20180225034A1 (en) * 2017-02-09 2018-08-09 ImageCraft Creations Inc. System and Method For Generating a User Interface For Communicating With a Remote Device
WO2019043622A1 (en) * 2017-09-01 2019-03-07 Telefonaktiebolaget Lm Ericsson (Publ) PRESENTATION OF PROCESS DRIVED BY A MEGAMODEL
US11099540B2 (en) 2017-09-15 2021-08-24 Kohler Co. User identity in household appliances
US10887125B2 (en) 2017-09-15 2021-01-05 Kohler Co. Bathroom speaker
US11093554B2 (en) 2017-09-15 2021-08-17 Kohler Co. Feedback for water consuming appliance
US11314215B2 (en) 2017-09-15 2022-04-26 Kohler Co. Apparatus controlling bathroom appliance lighting based on user identity
US10448762B2 (en) 2017-09-15 2019-10-22 Kohler Co. Mirror
US11175918B2 (en) * 2017-09-18 2021-11-16 American Megatrends International, Llc Management protocol adapter
US10698498B2 (en) * 2017-11-30 2020-06-30 Komodo OpenLab Inc. Configurable device switching mechanism that enables seamless interactions with multiple devices
US10564940B2 (en) * 2018-05-03 2020-02-18 International Business Machines Corporation Systems and methods for programming drones
CN111259175B (zh) * 2020-01-08 2024-05-07 北京小米移动软件有限公司 多维媒体数据传输方法及装置、电子设备、存储介质
CN113447111B (zh) * 2021-06-16 2022-09-27 合肥工业大学 基于形态分量分析的视觉振动放大方法、检测方法及系统

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090313004A1 (en) * 2008-06-16 2009-12-17 Real Dice Inc. Platform-Independent Application Development Framework
US20100070535A1 (en) * 2008-09-12 2010-03-18 Microsoft Corporation Data schema transformation using declarative transformations
US20120166246A1 (en) * 2010-12-22 2012-06-28 Software Ag Service-oriented process configuration systems and/or methods
US20120270505A1 (en) * 2011-04-25 2012-10-25 Gyan Prakash Headless external sensor discovery and data access using mobile device
US20130073730A1 (en) * 2011-09-20 2013-03-21 International Business Machines Corporation Virtual machine placement within a server farm
US8561038B1 (en) * 2009-12-31 2013-10-15 Google Inc. High performance execution environment
US20130304631A1 (en) * 2012-05-10 2013-11-14 Telefonaktiebolaget Lm Ericsson (Publ) Wi-fi hot-spot networking ecommerce
CN103403707A (zh) * 2010-12-28 2013-11-20 思杰系统有限公司 用于数据库代理请求交换的系统和方法
CN103493015A (zh) * 2011-04-20 2014-01-01 飞思卡尔半导体公司 生成资源高效的计算机程序代码的方法和装置
CN104662535A (zh) * 2012-07-24 2015-05-27 起元科技有限公司 数据模型中的实体映射
US20150319101A1 (en) * 2002-08-06 2015-11-05 Sheng Tai (Ted) Tsao Concurrent Web Based Multitasking Support For Computing System

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6996800B2 (en) 2000-12-04 2006-02-07 International Business Machines Corporation MVC (model-view-controller) based multi-modal authoring tool and development environment
US7174534B2 (en) 2001-01-22 2007-02-06 Symbol Technologies, Inc. Efficient system and method for running and analyzing multi-channel, multi-modal applications
US20070255662A1 (en) * 2006-03-30 2007-11-01 Obopay Inc. Authenticating Wireless Person-to-Person Money Transfers
US20090228862A1 (en) 2008-03-04 2009-09-10 Anders Bertelrud Modularized integrated software development environments
US8656055B2 (en) * 2009-08-25 2014-02-18 Oracle International Corporation Protocol wrapper and serializer/deserializer for facilitating data exchanges
US8719776B2 (en) 2009-12-30 2014-05-06 Foneclay, Inc. System for creation and distribution of software applications usable on multiple mobile device platforms
US9300705B2 (en) * 2011-05-11 2016-03-29 Blue Jeans Network Methods and systems for interfacing heterogeneous endpoints and web-based media sources in a video conference
US20150088974A1 (en) 2012-03-10 2015-03-26 Evado Holdings Pty Ltd Method and System of Application Development for Multiple Device Client Platforms
US20140035945A1 (en) 2012-08-03 2014-02-06 Todd Anglin Computing device applications with an automatically adapting user interface
CN103944864A (zh) * 2013-01-22 2014-07-23 腾讯科技(深圳)有限公司 信息传输方法、信息发送装置、接收装置及系统
US20140310619A1 (en) * 2013-04-12 2014-10-16 Microsoft Corporation Signal capture controls in recalculation user interface
US9417890B2 (en) 2013-04-12 2016-08-16 Microsoft Technology Licensing, Llc Compilation of transformation in recalculation user interface
US10291597B2 (en) * 2014-08-14 2019-05-14 Cisco Technology, Inc. Sharing resources across multiple devices in online meetings
US10789034B2 (en) * 2014-11-28 2020-09-29 Abhijit Rao System for information display

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150319101A1 (en) * 2002-08-06 2015-11-05 Sheng Tai (Ted) Tsao Concurrent Web Based Multitasking Support For Computing System
US20090313004A1 (en) * 2008-06-16 2009-12-17 Real Dice Inc. Platform-Independent Application Development Framework
US20100070535A1 (en) * 2008-09-12 2010-03-18 Microsoft Corporation Data schema transformation using declarative transformations
US8561038B1 (en) * 2009-12-31 2013-10-15 Google Inc. High performance execution environment
US20120166246A1 (en) * 2010-12-22 2012-06-28 Software Ag Service-oriented process configuration systems and/or methods
CN103403707A (zh) * 2010-12-28 2013-11-20 思杰系统有限公司 用于数据库代理请求交换的系统和方法
CN103493015A (zh) * 2011-04-20 2014-01-01 飞思卡尔半导体公司 生成资源高效的计算机程序代码的方法和装置
US20120270505A1 (en) * 2011-04-25 2012-10-25 Gyan Prakash Headless external sensor discovery and data access using mobile device
US20130073730A1 (en) * 2011-09-20 2013-03-21 International Business Machines Corporation Virtual machine placement within a server farm
US20130304631A1 (en) * 2012-05-10 2013-11-14 Telefonaktiebolaget Lm Ericsson (Publ) Wi-fi hot-spot networking ecommerce
CN104662535A (zh) * 2012-07-24 2015-05-27 起元科技有限公司 数据模型中的实体映射

Also Published As

Publication number Publication date
WO2017116876A1 (en) 2017-07-06
US10656917B2 (en) 2020-05-19
CN108431765B (zh) 2021-08-27
US10001976B2 (en) 2018-06-19
US20170185383A1 (en) 2017-06-29
EP3398062A1 (en) 2018-11-07
EP3398062B1 (en) 2021-05-12
US20180275968A1 (en) 2018-09-27

Similar Documents

Publication Publication Date Title
CN108431765A (zh) 设备应用的生成
US20200393952A1 (en) Integration platform of internet of things and virtual device
US11570676B2 (en) Method and system for realizing function by causing elements of hardware to perform linkage operation
US20130038800A1 (en) Universal User Interface App and Server
US20150229533A1 (en) Method and system for transferable customized contextual user interfaces
CN107703872A (zh) 家电设备的终端控制方法、装置及终端
US20140358986A1 (en) Cloud Database-Based Interactive Control System, Method and Accessory Devices
US20160057270A1 (en) Push User Interface
US9367657B2 (en) System and method for universal control of electronic devices
KR102043274B1 (ko) 3d 객체와 마커를 포함한 mr 콘텐츠를 제공하는 사이니지 시스템 및 그 방법
Bernardi et al. The inversion factor: How to thrive in the IoT economy
Walch et al. homeBLOX: making home automation usable
CN107836097A (zh) 用于增强与成人设备的交互的传感器获取和分析平台
US20170242577A1 (en) Method for establishing virtual community network connection and network communication system
Wang et al. Design and implementation of user-centered home appliance controlling service environment
WO2018195583A1 (en) Construction system and method
US20210088990A1 (en) Universal programming station with orientable blocks
KR101753232B1 (ko) 사물인터넷 환경 구축을 위한 그래픽 사용자 인터페이스 제공 방법 및 장치
JP2016184219A (ja) プログラム作成支援装置及びプログラム作成支援方法
JP2019114302A (ja) システム、情報処理装置、情報処理方法およびプログラム
CN116108514A (zh) 一种虚拟设备形象生成方法、装置、电子设备及存储介质
CN106662864A (zh) 电子装置的适应性控管
Tait Internet of Things Cross Device Theming
Zaarour Smart Playing Cards
CN116301511A (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
GR01 Patent grant
GR01 Patent grant