CN101776994B - 用于Flash应用程序的具有分布式对象的集成硬件平台的系统和方法 - Google Patents
用于Flash应用程序的具有分布式对象的集成硬件平台的系统和方法 Download PDFInfo
- Publication number
- CN101776994B CN101776994B CN201010002255.3A CN201010002255A CN101776994B CN 101776994 B CN101776994 B CN 101776994B CN 201010002255 A CN201010002255 A CN 201010002255A CN 101776994 B CN101776994 B CN 101776994B
- Authority
- CN
- China
- Prior art keywords
- api
- platform
- hardware
- flash
- host computer
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 159
- 230000008569 process Effects 0.000 claims description 29
- 238000012544 monitoring process Methods 0.000 claims description 24
- 230000007613 environmental effect Effects 0.000 claims description 19
- 230000003993 interaction Effects 0.000 claims description 9
- 230000033001 locomotion Effects 0.000 claims description 7
- 238000001514 detection method Methods 0.000 claims description 2
- 238000004891 communication Methods 0.000 abstract description 18
- 230000002093 peripheral effect Effects 0.000 abstract description 4
- 238000010586 diagram Methods 0.000 description 25
- 238000011161 development Methods 0.000 description 19
- 238000012360 testing method Methods 0.000 description 16
- 241000282326 Felis catus Species 0.000 description 14
- 230000009471 action Effects 0.000 description 14
- 241001465754 Metazoa Species 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 7
- 230000004044 response Effects 0.000 description 6
- 238000006243 chemical reaction Methods 0.000 description 5
- 239000012141 concentrate Substances 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 4
- 230000006855 networking Effects 0.000 description 4
- 238000009434 installation Methods 0.000 description 3
- 230000002452 interceptive effect Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 241001269238 Data Species 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000003032 molecular docking Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 238000002360 preparation method Methods 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 241000981770 Buddleja asiatica Species 0.000 description 1
- 241000196324 Embryophyta Species 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 239000000654 additive Substances 0.000 description 1
- 230000000996 additive effect Effects 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 230000002950 deficient Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000008034 disappearance Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000002045 lasting effect Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000010422 painting Methods 0.000 description 1
- 230000035699 permeability Effects 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 230000017702 response to host Effects 0.000 description 1
- 230000004043 responsiveness Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/541—Interprogram communication via adapters, e.g. between incompatible applications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
- G06F9/548—Object oriented; Remote method invocation [RMI]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/131—Protocols for games, networked simulations or virtual reality
Abstract
提供了用于Flash应用程序的具有分布式对象的集成硬件平台的系统和方法,用于提供集成硬件平台,以允许经由在主机系统上的Flash运行时环境中执行的Flash应用程序所使用的应用程序接口(API)的硬件控制。提供了计算机平台,其包括处理器、外围硬件、连接器设备以及存储器。所述存储器包括由用于Flash应用程序的API提供的用于远程方法的API实现、用于使得Flash应用程序和平台处理器之间能够通信的代理服务器、以及用于提供安全策略从而为与平台处理器的通信授予网络连接许可的安全服务。API远程方法调用允许Flash应用程序控制外围硬件,并且联网的服务器可管理远程调用以控制多个联网客户的平台硬件。
Description
技术领域
本发明一般涉及数据和图形显示。更具体地,本发明涉及具有分布式对象的Flash应用程序。
背景技术
对于丰富的多媒体互联网应用,Flash平台很受欢迎,其在多数主要硬件和操作系统中具有高的浏览器渗透率和可用性。用户能够从个人电脑到移动电话及视频游戏机的多种设备容易地运行Flash应用程序。越来越多地,现代Flash应用程序正使用分布式对象以提供用户和服务器之间共享的在线背景给用户。因此,例如在虚拟社区和在线游戏世界,用户能够对其他用户产生持久改变的影响。例如,用户能够互相谈话,交易物品,组队成组,以及进行其它的相互作用。另外,由于Flash平台的方便可得,几乎在任何地方,无论是在家、办公室、网吧或机场候机楼,用户都能够访问这些在线社区。
然而,互动只限于能够和Flash应用程序直接通信的设备。因此,人类输入设备仅限于传统的键盘、诸如电脑鼠标的定位设备(pointingdevices)、网络摄像机以及在Flash中具有直接硬件支持的其它设备。另外,Flash应用程序的输出一般限于在执行Flash应用程序的系统上播放的视听内容。因此,在Flash应用程序中,很难支持诸如单独的设备上的视听回放以及振动、物理对象的运动的特征。
虽然可直接连接到Flash的外围设备对于传统的应用可能是合适的,但是与在线游戏和社区相互作用的更多的创新方式可能要求不在Flash中实施的新的硬件支持。虽然这种新硬件可能容易由单独的硬件或软件支持,但是用户会更喜欢技术麻烦最少的解决方案。Flash应用程序能够方便地在互联网上被访问,并且在许多系统中,一般预装了或可容易获得Flash环境,使得用户免去了使用专用的游戏硬件或安装额外的游戏软件的麻烦,使用专用的游戏硬件或安装额外的游戏软件在公共环境中尤其不切实际。由于Flash平台的方便可得,因而用户能够从家里、办公室或在旅行期间访问相同的在线账户。然而,对于直接硬件访问,Flash平台只提供有限的支持,限制了用户能够与Flash应用程序相互作用的方式。
发明内容
本发明提供系统和方法来克服本领域中的缺陷和不足,该系统和方法用于用户与可广泛访问的Flash平台相互作用,以提供在共享在线环境下的互动体验,突破了当前对在Flash应用程序中可直接访问的硬件的限制。
提供系统和方法,其提供用于Flash应用程序的具有分布式对象的集成硬件平台,该平台大体上如在至少一个附图中所示和/或关于至少一个附图所描述。
本发明提供一种由计算机平台的平台处理器使用以经由用于Flash应用程序的应用程序接口(API)来提供硬件控制的系统,所述Flash应用程序在具有主机处理器和主机存储器的主机系统上的Flash运行时环境中执行,所述计算机平台包括:
位于所述主机系统之外的硬件设备;
可链接到所述主机系统的连接器设备;以及
平台存储器,其具有由所述Flash应用程序的所述API提供的用于远程方法的API实现、使得所述Flash应用程序和所述平台处理器之间能够通信的代理服务器、以及用于提供安全策略来为与所述平台处理器的通信授予网络连接许可的安全服务;
所述系统包括:
用于通过所述连接器设备建立与所述主机系统的链接的装置;
用于启动所述安全服务和所述代理服务器的执行的装置;
用于从所述Flash应用程序接收由所述代理服务器的执行所中继的API远程方法调用的装置;以及
用于执行由所述API远程方法调用所指示的所述API实现以控制所述硬件设备的装置。
根据本发明所提供的系统,其中所述平台处理器还被配置为向一服务器发送所述API远程方法调用。
根据本发明所提供的系统,其中所述服务器处理所述API远程方法调用,以分配一API远程方法调用到第二个主机系统。
根据本发明所提供的系统,其中所分配的API远程方法调用由在所述第二个主机系统上执行的Flash应用程序使用,以控制链接到所述第二个主机系统的计算机平台的硬件设备。
根据本发明所提供的系统,其中所述平台处理器被配置为将安全服务代码和代理服务器代码复制到所述主机存储器,并且其中所述平台处理器被配置为使得所述主机处理器执行来自所述主机存储器的所述安全服务代码和所述代理服务器代码。
根据本发明所提供的系统,其中所述连接器设备被配置为使用通用串行总线(USB)。
根据本发明所提供的系统,其中所述硬件设备被配置为使用提供所述硬件设备的物理运动的机械控制系统。
根据本发明所提供的系统,其中所述硬件设备被配置为使用表示系统来控制视听元件。
根据本发明所提供的系统,其中所述硬件设备被配置为使用环境监测系统以探测和记录外部信号来与所述计算机平台相互作用。
根据本发明所提供的系统,其中所述环境监测系统包括用于探测和记录与所述计算机平台的触觉相互作用的触觉传感器。
根据本发明所提供的系统,其中所述环境监测系统包括用于音频记录的扩音器。
根据本发明所提供的系统,其中所述环境监测系统包括用于视频记录的摄像机。
本发明提供一种由计算机平台的平台处理器使用以经由Flash应用程序使用的应用程序接口(API)来提供硬件控制的方法,所述Flash应用程序在具有主机处理器和主机存储器的主机系统上的Flash运行时环境中执行,所述计算机平台包括位于所述主机系统之外的硬件设备、可链接到所述主机系统的连接器设备、以及平台存储器,所述平台存储器具有由所述Flash应用程序的所述API提供的用于远程方法的API实现、用于使得所述Flash应用程序和所述平台处理器之间能够通信的代理服务器、以及用于提供安全策略来为与所述平台处理器的通信授予网络连接许可的安全服务,所述方法包括:
通过所述连接器设备建立与所述主机系统的链接;
启动所述安全服务和所述代理服务器的执行;
从所述Flash应用程序接收由所述代理服务器的执行所中继的API远程方法调用;以及
执行由所述API远程方法调用所指示的所述API实现以控制所述硬件设备。
根据本发明所提供的方法,其中所述平台处理器还被配置为向一服务器发送所述API远程方法调用。
根据本发明所提供的方法,其中所述服务器处理所述API远程方法调用,以分配一API远程方法调用到第二个主机系统。
根据本发明所提供的方法,其中所分配的API远程方法调用由在所述第二个主机系统上执行的Flash应用程序使用,以控制链接到所述第二个主机系统的计算机平台的硬件设备。
根据本发明所提供的方法,其中所述平台处理器被配置为将安全服务代码和代理服务器代码复制到所述主机存储器,并且其中所述平台处理器被配置为使得所述主机处理器执行来自所述主机存储器的所述安全服务代码和所述代理服务器代码。
根据本发明所提供的方法,其中所述连接器设备被配置为使用通用串行总线(USB)。
根据本发明所提供的方法,其中所述硬件设备被配置为使用环境监测系统以探测和记录外部信号来与所述计算机平台相互作用。
本发明还提供一种用于控制由具有平台处理器的计算机平台提供且位于主机系统之外的硬件设备的方法,所述方法供在所述主机系统上的Flash运行时环境中执行的Flash应用程序使用,所述平台处理器提供用于使所述Flash应用程序和所述平台处理器之间能够通信的代理服务器、以及用于提供安全策略从而为与所述平台处理器通信授予网络连接许可的安全服务的执行,所述方法包括:
向所述安全服务的执行发起对所述安全策略的请求;
确认所述Flash运行时环境已经为与所述平台处理器的通信授予许可;以及
通过网络连接发送API远程方法调用到所述代理服务器的执行,以控制所述硬件设备。
附图说明
在审阅了下面的详细描述和附图后,本发明的特征和优点对于本领域的普通技术人员将变得更加明显,其中:
图1呈现了根据本发明的一种实施方式的集成硬件平台环境的框图;
图2a呈现了根据本发明的一种实施方式,描述用于所述集成硬件平台的接口生成工作流程的流程图;
图2b呈现了根据本发明的一种实施方式,用于由Flash开发者所利用的所述集成硬件平台的Flash开发环境的框图;
图2c呈现了根据本发明的一种实施方式,用于由硬件开发者所利用的所述集成硬件平台的硬件开发环境的框图;
图3呈现了根据本发明的一种实施方式,具有分布式对象的集成硬件平台环境的框图;以及
图4示出了根据本发明的一种实施方式描述步骤的流程图,通过这些步骤,集成硬件平台中的硬件设备的处理器经由用于Flash应用程序的应用程序接口(API)来提供硬件控制。
具体实施方式
本申请是针对用于Flash的具有分布式对象的集成硬件平台的一种系统和方法。下面的描述包含有关本发明的实施的具体信息。本领域的技术人员将会意识到,本发明可以用与本申请具体讨论的方式所不同的方式来实施。此外,为了不使本发明模糊,本发明的一些具体细节未被讨论。本申请中未描述的具体细节在本领域的普通技术人员的知识范围之内。本申请的附图及其伴随的详细描述仅针对本发明的示例性实施方式。为保持简洁,使用本发明的原则的本发明的其他实施方式在本申请中未被具体描述,且未由本发明的附图具体图解。
图1呈现了根据本发明的一种实施方式的集成硬件平台环境的框图。环境100包括硬件设备110和主机系统150。硬件设备110包括外部硬件115、硬件系统125、硬件API 131、远程分布式方法132、串行器133、硬件应用程序135、分布式方法136、解串器(deserializer)137、串行连接API 139、以及连接器142。外部硬件115包括传感器116、伺服系统117以及显示装置118。硬件系统125包括环境监测系统126、机械控制系统127以及表示系统(presentation system)128。连接145提供硬件设备110的连接器142和主机系统150的接受器(receptacle)152之间的数据通信。主机系统150包括接受器152、主机处理器160和主机存储器170。主机存储器170包括安全服务162、代理服务器163以及Flash运行时环境(runtime environment)174。Flash运行时环境174包括动作脚本(Actionscript)硬件API 171、Flash应用程序175以及Flash二进制套接字(binary socket)API 179。动作脚本硬件API 171包括串行器173、远程分布式方法172、解串器177以及分布式方法176。
从一个高层次的角度看,环境100允许主机系统150与连接的硬件设备110相互作用。主机系统150经由主机处理器160运行Flash应用程序175,该Flash应用程序可以进一步连接到由游戏服务器的分布式在线服务所支持的联网在线游戏。除了游戏,Flash应用程序175还可以支持任何其他类型的分布式在线应用程序,如虚拟世界、业务合作、社会网络或电子商务。
为了简便,图1仅描述了单个主机系统,且忽略了关于所述游戏服务器的细节,其在下面的图3中以更多细节来描述。此外,图1仅描述了连接到主机系统150的单个硬件设备,但是可选择的实施方式可以允许并行访问在运行Flash应用程序的单个主机系统上的许多硬件设备。例如,Flash应用程序175可能包括一个赛车游戏,允许多个编号和类型的硬件设备如方向盘和踏板连接到主机系统150,以分屏幕视频显示,以容纳多个游戏者。然后Flash应用程序175能够被设计成探测和利用所有连接的方向盘和踏板,并且代理服务器163能够相应地配置为在Flash应用程序175和多个硬件设备之间适当地按规定路线发送通信。这种多个硬件设备特性还可以与在线游戏服务器结合,以提供在硬件设备和Flash应用程序之间的多对多通信,例如允许在线赛车,其中多个参加的主机系统的每一个都能够容纳一个或几个游戏者,这取决于连接到每一个主机系统的硬件设备的数量。然而,为便于简化例子和提高可读性,本申请将集中于只有单个硬件设备连接到主机系统的实施方式。
硬件设备110可以提供新颖的特性例如物理运动、环境监测、次要显示装置或扬声器以及其他硬件能力给Flash应用程序175,其对于标准的Flash平台并非可用。通过此额外的硬件,与主机系统150的相互作用被扩展到Flash运行时环境174的本身能力和主机系统150的标准支持的硬件能力之外。通过利用硬件应用程序接口(API)131实施RMI(远程方法调用),Flash应用程序175能够远程控制硬件设备110的硬件系统125,或提供硬件设备110所请求的数据。类似地,在相反的方向,动作脚本硬件API 171允许硬件设备110远程控制Flash应用程序175或返回所请求的值。此外,图1中所省略的分布式对象API,通过与游戏服务器通信,可以允许Flash应用程序175与连接到其他主机系统的其他远程硬件设备联接。
主机系统150可能包括个人计算机、视频游戏机、移动电话或能运行所述Flash平台的任意其他设备。主机系统150可能以前已经经由网页浏览器访问过网页服务器,以通过诸如互联网的网络下载Flash应用程序175。然后Flash应用程序175可以在Flash运行时环境174中执行,该环境可包括提供Flash播放器支持的网页浏览器插件。
运行时环境174提供一种环境,其中Flash应用程序175能够被翻译成可由主机处理器160执行的机器代码。Shockwave Flash(SWF)文件不对应于能够被直接执行的机器代码,而是以中间字节码的形式被储存,需要翻译成机器代码以运行在预期的平台上。最初,这可能像是不利的,但正是因为SWF文件不依赖于通过直接编译成机器代码的特定的结构,才使得相同的SWF文件能够通过利用适合各个所需的目标平台的Flash运行时环境而被跨完全不同的平台使用,类似Java。这允许Flash应用程序被运行于多种多样的背景、平台和配置,但是,由于使用解释性运行时环境的缘故,有一些处理代价。而诸如动态编译和适时(just-in-time,JIT)编译等技术能够减轻使用字节码而不是预编译的二进制所带来的许多性能损失。
对于多数用户,最熟悉的Flash运行时环境是用于诸如InternetExplorer或Firefox的网页浏览器的浏览器插件,支持特定的平台或体系结构,诸如Windows或Linux。这允许Flash应用程序再现在网页浏览器的背景中。然而,浏览器插件不是再现Flash的唯一方法。例如,AdobeIntegrated Runtime或Adobe AIR提供一种跨平台的运行时环境,其支持Flash,但是着眼于本地安装的桌面应用程序而非网页浏览器中运行的程序。因此,Adobe AIR环境能够提供额外的特性,其一般对于本地安装的桌面应用程序如本地或离线数据储存可用。无论Flash运行时环境174是作为浏览器插件运行、是被本地安装作为Adobe AIR、还是代表一些可选择的应用程序范例,Flash应用程序175都能够被支持。
硬件设备110经由连接145可链接到主机系统150,连接145可以包括,例如物理上链接到连接器142和接受器152的通用串行总线(USB)电缆。在此实施方式中,代理服务器163可以包括用于在Flash二进制套接字API 179所使用的二进制套接字通信与串行连接API 139所使用的USB串行连接之间的无缝翻译的机制。
USB仅仅是用于硬件设备连接的一个示例性协议,并且可选择的实施方式可以使用例如Firewire连接器,或使用诸如Bluetooth或WiFi协议的无线传输。如果连接145包括物理电缆如USB或Firewire,那么连接145能够从主机系统150获取电力以操作硬件设备110的组件。在无线传输的情况下,连接器142和接受器152可能会被无线接收器和发射器取代,连接145可代表无线射频信号,并且电力可能通过具有插接站(dockingstation)的嵌入式可充电电池或一些其他方法来提供。有线和无线连通性都还可能被提供有对电池充电的有线连接。由于代理服务器163和串行连接API 139对于Flash应用程序175和硬件应用程序135是模块化的,所以新连通性协议支持能够容易被实施,因为前述应用程序不直接与连通性协议连接。
一旦硬件设备110被提供了电力,硬件应用程序135能够经由硬件API 131操纵硬件系统125,硬件系统125包括环境监测系统126、机械控制系统127以及表示系统128。所提供的外围硬件系统仅仅是示例性的,因为任意硬件可以被添加到硬件设备110。环境监测系统126可提供关于外部环境的不同的细节,如触觉相互作用、音频反馈和视频反馈,其可以由触觉传感器、扬声器和摄像机支持。机械控制系统127可通过控制伺服系统、传动装置、发动机以及其他机械设备为硬件设备110的运动做准备。表示系统128可控制不同的视听元件,如LCD屏、扬声器和LED灯。外部硬件115提供实际的硬件组件以支持硬件系统125,包括用于监测的传感器116、用于运动的伺服系统117以及用于显示图像的显示装置118。
硬件设备110还包括远程分布式方法132和分布式方法136,形成RMI系统的硬件设备方面。而硬件应用程序135能够根据分布式方法136使用硬件API 131来控制硬件系统125,或者发送远程分布式方法132以请求来自Flash应用程序175的服务。类似地,Flash应用程序175能够使用动作脚本硬件API 171来调用远程分布式方法172或接收分布式方法176,这形成了前述RMI系统的Flash方面。串行器133和解串器137为硬件设备110实行可能必要的、不同的对象数据的变换,如信号编组(marshalling)和解组(unmarshalling)、引用解析(reference resolving)以及其他操作。可移植的数据流使得即使在不同的结构或环境的远程位置也可以是语义上相同的。例如,相应的串行器173和解串器177允许主机系统150与硬件设备110无缝通信对象数据,即使主机系统150运行在完全不同的结构上。
Flash应用程序175通过使用远程方法以驱动硬件系统125而非试图直接控制硬件系统125,能够达到更加及时和准确的硬件控制。当硬件系统125需要以严格的定时容差来驱动以有效地或完全地运行时,尤其如此。例如,伺服系统117可以由脉宽调制预期脉冲信号以只有几毫秒的周期率来驱动。由于硬件设备110的嵌入式处理器(图1中未显示)能够将其所有资源仅用于服务硬件应用程序135,因此,如果硬件应用程序135被适当开发,则其能够支持有保证的及时的脉冲信号生成。
然而,Flash应用程序175可以在如Windows的通用的多任务主机平台上运行,其设计成通过使用进程调度程序以同时容纳几个不同的应用程序来服务所有的执行任务。因此,Flash应用程序175可能需要与其他任务竞争主机处理器160的关注。因此,需要实时服务的硬件设备110上的任务可能不会收到有保证的资源,因为硬件中断或其他软件进程可能抢占主机处理器160。即使在主机系统150上有足够的资源可用以服务于时间关键的任务,但由于命令从Flash应用程序175发送到硬件系统125的协议开销,可能会引进一些延迟。在此延迟的期间,用于硬件控制的关键的时间窗口可能已经消逝。
另一方面,诸如由嵌入式处理器提供的那些专用的主机外(off-host)的计算,能够提供用于细粒度(fine-grained)硬件控制的实时响应性。当开发硬件应用程序135时,可针对硬件设备110中的嵌入式处理器的能力来优化方法,以确保硬件系统125和相应的外部硬件115在嵌入式处理器所提供的有限的CPU周期内被有效地驱动。由于嵌入式处理器不需要像通用的处理器那样支持其他应用程序,方法执行时间能够在外部硬件115所要求的时间容差内被测量和优化。因此,由硬件应用程序135所支持的远程方法能够保证用于准确和有效的硬件控制的及时性。
在Flash应用程序175能够调用远程方法以控制硬件系统125之前,必须首先提供对用于硬件设备110的分布式对象的引用,其可以例如在通信握手过程的结束时被交换,或通过咨询名称目录服务而被获取。一旦获取了所述分布式对象,其公开或提供可以由Flash应用程序175调用的远程方法的接口,在图1中示为远程分布式方法172。这些远程方法可例如允许环境监测系统126经由传感器116获取温度数据,允许机械控制系统127经由伺服系统117移动一个对象,以及允许表示系统128在显示装置118上显示图像。
因此,Flash应用程序175的开发者不必使自己关心硬件设备110的详细运作,并且能够简单地调用由动作脚本硬件API 171公开的远程方法,其由例如在硬件设备110的机器代码实施。类似地,如果硬件设备110需要来自Flash应用程序175的、待被完成的某些信息或任务,硬件设备110的开发者能够使用远程分布式方法132,而不是不得不理解Flash应用程序175的错综复杂。通过使用模块式开发的这种技术,工作流程能够被分段和独立地开发,加快了交付日程并且控制了开发费用。
虽然图1已经采用面向对象的RMI方式用于远程执行,,但是也可以使用远程过程调用(RPC)或其他提供远程执行的方法。也可以实施图1中未图示的更灵活的RMI方式,例如支持可动态加载的类的RMI系统。目前,只有对象引用被传递,并且API实现被假设存在于远程位置。可动态加载的类将允许硬件API容易地更新,因为API实现可以按更新的方法的需求被获取。
然而,由于硬件设备110的嵌入式处理器可能已经因费用和电力考虑而抑制了计算资源,复杂的RMI系统可能是不合乎要求的。待在硬件设备110上执行的方法一般会众所周知且是不变的,因为硬件系统125将可能不支持终端用户的硬件系统模块化的交换,所以,可能更为合理的是,为硬件设备110建立嵌入式静态硬件API,使其适合于制造中将包括的具体的硬件系统。然而,所述静态硬件API还可能被储存在可擦写存储器部分,如果错误修正或额外的方法被开发用于硬件系统125,则允许硬件API仍然可被更新。
Flash运行时环境174能够通过主机系统150的网络协议栈,例如传输控制协议/互联网协议(TCP/IP)协议栈,来路由通信。由于Flash应用程序175仅能够直接寻址在Flash运行时环境174中本身支持的硬件,而网络通信在Flash运行时环境174中是本身支持的,所以,Flash应用程序175可改为利用网络通信来与硬件设备110通信。
然而,由于硬件设备110通过USB而非网络被连接到主机系统150,代理服务器163提供Flash应用程序175和硬件设备110之间的路由服务转换。代理服务器163可以作为本地主机服务而执行,截接通过指定的网络端口的通信传播。连接145建立之后,在硬件设备110和主机系统150之间的初始的握手可能导致安全服务162和代理服务器163从硬件设备110被复制到主机存储器170,用于主机处理器160的进一步执行。然后Flash二进制套接字API 179能够被配置为通过用于与硬件设备110通信的指定的网络端口与本地主机通信,代理服务器163无缝地处理二进制套接字数据和串行数据之间的转换。因此,代理服务器163通过利用Flash本身支持的网络通信能力,桥接硬件设备110和Flash应用程序165之间的通信缺口。
允许Flash应用程序175发送和接收来自任意位置的数据,会造成潜在的安全问题,尤其对于DNS绑定攻击,所以不同的安全协议已经在Flash的较新的版本中被实施。特别令人感兴趣的是套接字策略文件,其呈现规则列表,为套接字连接管理允许的网络端口和主机。因此,套接字策略文件能使得服务器可以拒绝来自某些主机或端口的访问,但是Flash客户必须首先觉察到它们。
因此,在Flash运行时环境174允许Flash二进制套接字API 179通过所请求的网络端口连接到服务器目的地之前,Flash运行时环境174通过默认端口843自动向同一服务器目的地的IP地址发出对套接字主策略文件的请求。即使服务器目的地和请求的主机在相同的域,此请求也被发送。可选择地,Flash二进制套接字API 179能够明确指定一个可选择的端口来请求安全策略。如果服务器目的地在超时周期内不提供响应,或者如果返回的套接字策略文件拒绝来自主机系统150或所请求的网络端口的访问,那么Flash运行时环境174将拒绝与服务器目的地的套接字通信,并且Flash二进制套接字API 179可以为原始请求返回一个错误代码。
通过提供套接字策略文件形式的被适当格式化的安全策略,在代理服务器163所使用的网络端口上允许来自主机系统150的访问,安全服务162可以满足Flash的以上的安全特性。因此,Flash运行时环境174被授予许可来通过代理服务器163管理的端口与服务器目的地通信,或者与主机系统150通信,因为本地主机是一个身份参照(identity reference)。这些许可仅仅是使得主机系统150和硬件设备110之间能够相互通信的最少数量的特权,并且安全服务162能够例如返回更广阔的套接字策略文件,允许从任何主机或任何端口访问。
虽然套接字策略文件指定用于套接字通信的许可,但是套接字元策略指定访问套接字策略文件自身的许可。套接字元策略可以仅仅被限定在从默认端口843提供的主套接字策略文件中。然而,由于默认的元策略允许从服务器目的地上的任何端口和任何位置访问套接字策略,所以一般不需要指定一个元策略,因为“所有”设置是默认的。此外,默认的套接字元策略预计对于Flash的未来版本仍然保持“所有”。
虽然安全服务162和代理服务器163允许Flash应用程序175与硬件设备110通信,但是其需要由主机处理器160执行以提供这种通信服务。虽然传统的本地安装的软件通过安装本地服务或专门的驱动程序能够很普通地完成这一点,但是在Flash应用程序的背景下,此情况可能不那么明显。
一种可能是在连接145一建立时就使用握手过程,这启动执行安全服务162和代理服务器163。此握手过程可能例如依靠于呈现作为一种公共的HID(人机接口设备)的硬件设备110,使得主机系统150能够自动支持不具有专门的驱动程序的硬件设备110,并且Flash应用程序175能够简单地轮询硬件设备110的存在,以启动握手过程。以这种方式,用户能够简单地连接硬件设备110,用于在Flash应用程序175中立即使用,而无需处理复杂的软件或驱动程序的安装。其他实施方式可能使用例如自动执行机制如Windows的Autorun,或可下载的驱动插件如Java或ActiveX小部件(widget)。然而,由于用户可能不得不面对的各种安全告警和提示,使用由主机系统150自动支持的一般公认的接口的实施方式可能是优选的,因为这种接口一般能够在没有用户介入的情况下运行。未来的主机平台可能提供可信计算,使得可以允许自动执行来自合法发布者的可信代码,从而可能提供更加灵活和精细的系统。
出于本申请的目的,假设握手过程能够被实施,以在主机处理器160上开始安全服务162和代理服务器163的执行。作为备用,如果用于硬件设备110的自动支持的不同尝试失败了,可以提供手动软件安装指南或软件下载给终端用户。一旦驱动程序或软件被手动安装,其可能被配置为在主机系统150一起动时就自动执行,减轻手动安装的一些麻烦,因为用户仅需要完成该过程一次。
移动到图2a,图2a呈现了根据本发明的一种实施方式,描述用于所述集成硬件平台的接口生成工作流程的流程图。流程图200包括API契约文件(contract file)290、RMI接口生成器293、Flash二进制套接字API 279、动作脚本硬件API 271、C/C++串行连接API 239、串行器233、解串器237、硬件API 231、远程分布式方法232以及分布式方法236。API契约文件290包括硬件API定义291和Flash API定义292。RMI接口生成器293包括Flash动作脚本接口构建器(builder)294和硬件C/C++接口构建器295。动作脚本硬件API 271包括串行器273、解串器277、远程分布式方法272以及分布式方法276。
动作脚本硬件API 271对应于图1中的动作脚本硬件API 171,其包括对应于串行器173的串行器273、对应于解串器177的解串器277、对应于远程分布式方法172的远程分布式方法272、以及对应于分布式方法176的分布式方法276。Flash二进制套接字API 279对应于Flash二进制套接字API 179。C/C++串行连接API 239对应于串行连接API 139。串行器233对应于串行器133。解串器237对应于解串器137。硬件API 231对应于硬件API 131。远程分布式方法232对应于远程分布式方法132。分布式方法236对应于分布式方法136。
在流程图200中可以发现如图1所描述的使用用于远程执行的RMI方式的一些开发益处。在写实施代码之前,可以提前结合关于Flash远程方法或Flash API定义292和硬件远程方法或硬件API定义291两者将如何运作的协定标准来准备API契约文件290。利用通过RMI接口生成器293处理API契约文件290的结果、以及代替远端现行工作(WIP)API方法的模拟测试系统的开发,开发团队能够独立地开发Flash动作脚本或硬件C/C++,而不等待或依靠其他开发团队的进展。只要开发者遵循由API契约文件290预定的规范,那么独立开发的代码的后来的集成可以没有任何问题地一起无缝地工作。此外,通过允许RMI接口生成器293产生处理RMI支持和网络或串行总线通信的细节的API模块,可以避免可能起因于手动编码这些API模块的人类编程错误,并且开发者能够将其注意力集中于实施用于主要的Flash或C/C++应用程序的代码。
起因于API契约文件290的编程代码的增加的模块化和抽象化也促进了更容易读、开发、调试和维护的更高级的程序设计风格,长期来说减少了开发时间和费用。虽然具有大量的嵌入式低级程序代码和冗余码的专门(ad-hoc)的程序设计风格可以提供更快的初始开发时期,但是,对于任何中等大小的项目,例如在线游戏,在缺少代码的逻辑模块化的情况下,代码维护可能迅速变成不利条件,而由API契约文件290所提供的清晰定义的API能够促使逻辑模块化和代码重用。
检查RMI接口生成器293,Flash动作脚本接口构建器294和硬件C/C++接口构建器295两者都生成图1中已经观察到的不同的API模块。RMI接口生成器293能够从API契约文件290取得一般描述的API定义,并且将其转换成以用于特定的目标平台的代码描述的API模块,或图2a情况下的Flash和C/C++。RMI接口生成器293还可以被配置为通过替换接口构建器而为其它目标平台生成API模块,但是C/C++对于低级系统编程是常用的编程语言,并且也可适合产生用于测试硬件设备210的机器代码。常规的RMI接口生成器293可能被内部开发,或者API契约文件290可能使用现有的接口描述语言来表达,并且现有的跨平台RMI接口生成器293可以被用来加快开发。
转向图2b,图2b呈现了根据本发明的一种实施方式,用于由Flash开发者所利用的所述集成硬件平台的Flash开发环境的框图。图2b包括测试主机系统250,其包括WIP(现行工作)Flash应用程序275、动作脚本硬件271、Flash二进制套接字API 279、以及硬件设备模拟器296。测试主机系统250可以对应于图1中的主机系统150的简化版本。
Flash二进制套接字API 279和动作脚本硬件API 271显示为灰色以强调这些API模块已经通过RMI接口生成器293生成,并且不需要来自开发者的进一步的相互作用。因此,Flash开发团队能够将开发集中于WIP Flash应用程序275、或WIP Flash应用程序275将在客户方面支持的在线游戏,包括分布式方法276的实施。
由于独立的团队可能正在开发硬件设备,硬件设备模拟器296作为替代物来代替,用于开发目的。硬件设备模拟器296不一定需要准确地模拟硬件设备。例如硬件设备模拟器296能够实施方法以返回预定的测试值,或其可能更准确模仿实际硬件设备的响应,这取决于可用的开发资源、产品时间表以及其他开发团队的进展。现行工作硬件设备可能也被使用,其中未开发好的远程方法被指向硬件设备模拟器296而已开发好的远程方法被指向WIP硬件。
类似地,独立的网络和服务器团队可能开发项目的分布式对象部分。通过使用用于在线游戏的服务器模拟器,即使没有工作网络基础结构,对于网络互操作性,测试主机系统250然后仍然能够被测试。相反地,如果这种网络基础结构确实存在,那么可针对实际联网的硬件,对测试主机系统250进行测试。如果这种测试确实发生了,那么可能需要进行一些处理以阻止一般公众试图访问图2b中的测试组件。例如,阻止公众访问的防火墙可能被安装用于测试组件,或者本地网络可能与公共互联网隔离。
移动到图2c,图2c呈现了根据本发明的一种实施方式,由硬件设备开发者所利用的硬件开发环境的框图。图2c包括测试硬件设备210,其包括硬件API 231、原型(prototype)硬件系统225、WIP硬件应用程序235、远程分布式方法232、串行器233、分布式方法236、解串器237、C/C++串行连接API 239以及主机系统模拟器297。测试硬件设备210可以对应于图1中的硬件设备110的简化版本。原型硬件系统225可以对应于硬件系统125。
与图2b类似,几个API元件显示为灰色以表明它们已经由RMI接口生成器293准备,其包括硬件API 231、远程分布式方法232、串行器233、分布式方法236、解串器237以及C/C++串行连接API 239。因此,硬件开发团队能够将开发集中于WIP硬件应用程序235、或者与原型硬件系统225联接的主要硬件控制程序、以及分布式方法236的实施。
由于独立的Flash开发团队可能正在开发Flash应用程序,出于开发的目的,主机系统模拟器297作为主机系统来代替,执行Flash应用程序。与图2b中的硬件设备模拟器296类似,主机系统模拟器297不一定需要准确模拟执行Flash应用程序的主机系统。例如,主机系统模拟器297可以实施方法以返回预定的测试值,或者其可以更准确模仿实际Flash应用程序的响应,这取决于可用的开发资源、产品时间表以及其他开发团队的进展。也可使用测试主机系统上的现行工作Flash应用程序,其中未开发好的远程方法被指向主机系统模拟器297而已开发好的远程方法被指向WIP Flash应用程序。
类似地,开发原型硬件系统225可与开发驱动硬件系统的软件分开。集成电路和电子工程团队可能独立于原型硬件系统225工作,而嵌入式系统编程团队工作于用于驱动测试硬件设备210的软件,两个团队预先达成关于原型硬件系统225将怎样经由硬件API 231与WIP硬件应用235接口的协议。
因此,通过分离逻辑接口,模拟缺失或在开发部分中,以及利用自动化预处理工具如图2a中的RMI接口生成器293,独立并行开发可以通过很少的预先计划例如API契约文件290的准备来进行。通过周期地重建独立开发的现行工作组件和互操作性测试,可能要求接口修正或实施改变的任何问题可以在变成主要问题之前早期得到解决。因此模块化编程方式的优点能够被保留而不牺牲整体方式的测试益处。
图3呈现了根据本发明的一种实施方式,具有分布式对象的集成硬件平台环境的框图。分布式环境300包括硬件设备310a、硬件设备310b、硬件设备310c、主机系统350a、主机系统350b、主机系统350c以及游戏服务器385。硬件设备310a包括串行API 339、硬件应用程序335a、环境监测系统326a、表示系统328a、触摸敏感的“猫毛”316a以及扬声器318a。硬件设备310b包括串行API 339、硬件应用程序335b、环境监测系统326b、机械控制系统327b、触摸敏感的“狗毛”316b以及伺服系统317b。硬件设备310c包括串行API 339、硬件应用程序335c、环境监测系统326c、表示系统328c、扩音器316c以及扬声器318c。主机系统350a到350c的每一个都包括分布式对象API 389、Flash应用程序375、Flash二进制套接字API 379以及代理服务器363。连接345a到345c分别将主机系统350a到350c与硬件设备310a到310c相连接。
虽然每一个主机系统包括相同的应用程序代码,但是每一个主机系统都有独立的主机处理器(图3中省略)来独立地运行应用程序代码。正如图1,每一个主机客户可能已经从网页服务器下载了应用程序代码。每一个硬件设备还包含特别定制的用于每一个硬件设备的特定硬件配置的硬件应用程序,每一个硬件应用程序在图3中省略的嵌入式处理器上执行。几个其他的细节在图3中也省略了,例如用于实施RMI的一些细节,以呈现更加简明易懂的示例性分布式系统的图示。如果需要,对于额外的细节,可参考图1和图2。
硬件设备310a到310c的每一个都对应于图1的硬件设备110。串行API 339对应于串行连接API 139。硬件应用程序335a到335c的每一个都对应于硬件应用程序135。环境监测系统326a到326c的每一个都对应于环境监测系统126。机械控制系统327b对应于机械控制系统127。表示系统328a到表示系统328c每一个都对应于表示系统128。主机系统350a到350c的每一个都对应于主机系统150。Flash应用程序375对应于Flash应用程序175。Flash二进制套接字API 379对应于Flash二进制套接字API 179。代理服务器363对应于代理服务器163。
游戏服务器385有可能经由分布式在线服务386连接到几个主机系统以支持共享在线环境。例如,游戏服务器385可能主管一个在线世界,其中用户由Flash应用程序375上的动物角色代表。每一个主机系统的用户可购买代表他们希望在线玩的动物的硬件设备。因此主机系统350a的用户可能购买一个猫型的硬件设备作为硬件设备310a,而主机系统350b的用户可能购买一个狗型的硬件设备作为硬件设备310b,并且主机系统350c的用户可能购买一个鸟型的硬件设备作为硬件设备310c,由图3中的图标显示。然后每一个主机系统能够询问其各自的硬件设备以获取用于执行远程方法的数据对象,并且可以通过一网络(未在图3中显示)发送这些数据对象到游戏服务器385。然后分布式在线服务386能够监测和管理每一个连接的主机系统,允许主机系统通过分布式对象API 389访问连接到其他主机系统的硬件设备。
虽然每一个硬件设备的外观可能不同,但是内部组件可能都类似图1中的硬件设备110,具有一些不同硬件能力。每一个平台都装备有环境监测系统,但其被连接到不同的硬件。对于环境监测系统326a,对触摸敏感的“猫毛”316a进行硬件访问。这可能包括猫毛的人工外层,其配置成探测抚摸和其他触摸相互作用。因此,主机系统350a的用户可能抚摸触摸敏感的“猫毛”316a,其生成硬件信号以被发送到环境监测系统326a,如果需要,其被依次传递到硬件应用程序335a用于进一步处理。以相似的方式,触摸敏感的“狗毛”316b可能提供相同的功能,并且扩音器316c可能记录在主机系统350处的用户的说话的声音而非探测触觉相互作用。
每一个硬件设备还包含一些硬件系统以允许动物对相互作用“作出反应”。例如,提供到扬声器318a的访问的表示系统328a能够模仿猫叫声。这可能被触发作为对触摸敏感的“猫毛”316a被抚摸的响应。控制伺服系统317b的机械控制系统327b能够启动人工狗尾的摆动,也被触发作为对触摸敏感的“狗毛”316b的抚摸的响应。表示系统328c可能从扩音器316c获取音调上升的声音样本,以模仿在主机系统350c处的用户说出的话。
这些种类的互动玩具可能已经在玩具商店的货架上可得,但是Flash应用程序375和游戏服务器385提供方便的共享在线背景以使用这些玩具。例如,一旦用户连接硬件设备到其各自的主机系统,Flash应用程序375可探测动物类型并且在连接该到主机系统的显示装置上视觉再现该动物化身(avatar)。此外,当Flash应用程序375与分布式对象API 389联接时,用户不仅能够看见他们自己的化身,也能够看见经由一网络连接到游戏服务器385的其他主机系统的化身。因此,图3中每一个主机系统的每一个用户都能够在他们各自的显示装置上同时看见猫、狗和鸟。
通过利用分布式对象API 389,Flash应用程序375能够支持分布式用户与动物化身和相关的硬件设备相互作用。例如,主机系统350b处的用户可能指示他的狗化身朝与主机系统350a相关的猫化身吠叫。因此Flash应用程序375可以调用由硬件设备310b提供的远程“吠叫”方法。然后硬件应用程序335b能够执行由被调用的对象所表明的相关本地方法,或所述“吠叫”方法。这可能例如发送命令到机械控制系统327b,使得伺服系统317b移动硬件设备310b的外部的“颚”。图3中未示出的用于硬件设备310b的表示系统,还可能被利用来创造通过扬声器的可听见的吠叫。
到目前为止,本实施例的所有影响被局限于本地背景、或单一的主机系统和单一的硬件系统。然而,回想将吠叫指向猫化身的硬件设备310b的用户,或与主机系统350a相关的用户。因此,主机系统350b可能经由分布式对象API 389到分布式在线服务386,通知游戏服务器385此吠叫动作。分布式在线服务386能够查询账户数据库,以确定与猫化身相关的主机系统。然后基于可能性、账户统计或其他变量,分布式在线服务386能够执行某种逻辑以确定猫化身的反应应该是什么,并且发送合适的响应到主机系统350a。例如,分布式在线服务386方法可能指示主机系统350a调用“毛直立(fur standing)”方法,导致触摸敏感的“猫毛”316a竖立。
可选择地,猫可能朝狗发出嘶嘶声,导致类似的进程发生。分布式在线服务386可能询问与主机系统350b相关的“勇气(courage)”变量以决定狗的反应。如果狗具有较低的勇气,则Flash应用程序375可能指示机械控制系统327b使用伺服系统317b移动狗处于呜咽的位置,而高勇气可能导致狗站立而处于威胁的姿势。这种响应也能够被发回游戏服务器385,以使得主机系统350a和主机系统350c处的用户也能够在他们各自的显示装置上观察到呜咽的或威胁猫的狗。再举一个例子,硬件设备310c的鸟通过扬声器318c重复的词组也可通过主机系统350a和主机系统350b的扬声器鸣叫,取决于鸟化身与在线世界中的其他用户的接近程度。
这个在线动物化身游戏仅仅是一个可能的实施方式,并且许多其他的实施方式能够使用相同的原则。例如,Flash应用程序375可包括在线赛车游戏,其具有看起来像方向盘并且支持力反馈或振动的硬件设备。如果竞争的游戏者将他的车撞到用户,那么该用户的方向盘可能被指示强烈振动,并且相同的影响可能发生在竞争的游戏者。Flash应用程序375还可以包括两个游戏者的联网的棋游戏,其具有类似于棋盘的硬件设备,该硬件设备具有硬件以探测棋子的位置并且移动棋子而没有手动介入。因此,一边的用户能够手动地移动棋子,而另一边的棋子可能自动移动而没有用户介入,并且虚拟的棋盘的显示可以在两边更新。
当然,除了游戏,集成硬件平台还可以支持其他的应用程序。例如,所述平台可以利用用于硬件设备的绘图板,允许通过Flash应用程序375由互联网连接的用户之间的协同绘图(collaborative drawing)或头脑风暴(idea brainstorming)。由一个用户绘制的草图能够被所连接的其他用户看见,并且其他连接的用户能够修改其在绘图板上看见的草图,所有的用户看见相同的共享的画布背景(canvas)。由于本申请所描述的集成硬件平台提供了到任意种类的硬件的广义的、抽象的接口,用于扩展Flash应用程序的能力的创造性的实际上是无限的。
图4示出了根据本发明的一种实施方式描述步骤的流程图,通过所述步骤,集成硬件平台中的硬件设备的处理器经由Flash应用程序的应用程序接口(API)来提供硬件控制。流程图400省去了某些细节和特性,其对于本领域的普通技术人员是明显的。例如,作为本领域已知的,步骤可以包括一个或多个子步骤或可以涉及具体的装备或材料。虽然流程图400中所表明的步骤410到440足以描述本发明的一种实施方式,但是本发明的其他实施方式可以使用与流程图400中所示的步骤不同的步骤。
参考图4中流程图400的步骤410和图1的环境100,流程图400的步骤410包括硬件设备110的处理器,其通过连接145建立与主机系统150的链接。如之前所述,这可以利用物理连接如USB电缆或通过具有电池作为电源的无线传输来做到。可选择地,可以支持这两种连接类型,其中物理连接为电池提供充电电力。如果连接145是物理连接,那么硬件设备110的嵌入式处理器可能会闲置,直到其从连接器142接收到指示电连接的电流。如果连接145使用无线传输,那么插入到主机系统150的无线接收器软件保护器(dongle)或手动开关可能会触发该嵌入式处理器进入操作状态。一旦硬件设备110接收到电力,其可能开始准备任何必要的握手或协议过程以打开与主机系统150的通信,例如公开可探测到的USB设备。
参考图4中流程图400的步骤420和图1中的环境100,流程图400的步骤420包括硬件设备110的处理器,其启动安全服务代码162和代理服务器代码163的执行。如之前所述,这可以通过让主机系统150使用USB HID发现以及Flash方面的设备轮询、通过利用自动操作系统特性、通过使用下载的插件、或通过复制安全服务代码162和代理服务器代码163到主机存储器170用于由主机系统150的主机处理器160执行的其他的方法来完成。未来的平台可能提供可信计算,使得允许来自合法发布者的可信代码的自动执行,从而提供精细的解决方案。
参考图4中流程图400的步骤430和图1中的环境100,流程图400的步骤430包括硬件设备110的嵌入式处理器,其从Flash应用程序175接收由代理服务器163的执行所中继(relay)的API远程方法调用。此事物处理的细节已经结合图1讨论了一些细节,但是简略地,远程分布式方法172被调用,被串行器173串行,由代理服务器163转送和转换成串行数据,由串行连接API 139在硬件设备110上接收,由解串器137解串,并且由硬件应用程序135根据其而起作用。
参考图4中流程图400的步骤440和图1中的环境100,流程图400的步骤440包括硬件设备110的处理器,其实施来自步骤430的API RMI所指示的硬件API 131以控制硬件系统125。再次,此事物处理的细节已经结合图1和图2讨论了一些细节,但是总结步骤440,其集中于特定的被调用的远程方法的实施,这可能涉及嵌入式机器代码的执行或通过其他方式执行。
另外,主机系统150能够利用联网服务器,如图3的游戏服务器385,允许与其他主机系统的硬件设备相互作用。以这种方式,对一个硬件设备的状态改变能够影响不同硬件设备的状态。在如图3的联网背景下,硬件设备310a到310c能够使用公共的Flash应用程序375、分布式对象API 389和游戏服务器385,经过他们各自的主机系统350a到350c而相互通信。这开辟了一个互动新世界,其具有对以前在Flash硬件平台上不直接支持的硬件设备上的控制。通过使用利用Flash的网络通信能力的方便的一体化的集成硬件平台,在支持共享的在线体验的Flash应用程序中获得新硬件的支持可以像插入USB线一样简单。
从本发明的上述描述,明显的是,在不偏离本发明的范围的情况下,可使用不同的技术来实施本发明的构思。此外,虽然本发明结合确定实施方式的具体参考而被描述,但是本领域的普通技术人员将意识到,在不偏离本发明的精神和范围的情况下,可以做出形式或细节上的改变。因此,所描述的实施方式在所有方面都被视为说明性的而非限制性的。还应当理解的是,本发明不局限于这里描述的特定的实施方式,而是在不偏离本发明的范围的情况下能够有许多重排、修改以及替换。
Claims (20)
1.一种由计算机平台的平台处理器使用以经由用于Flash应用程序的应用程序接口(API)来提供硬件控制的系统,所述Flash应用程序在具有主机处理器和主机存储器的主机系统上的Flash运行时环境中执行,所述计算机平台包括:
位于所述主机系统之外的硬件设备;
可链接到所述主机系统的连接器设备;以及
平台存储器,其具有由所述Flash应用程序的所述API提供的用于远程方法的API实现、使得所述Flash应用程序和所述平台处理器之间能够通信的代理服务器、以及用于提供安全策略来为与所述平台处理器的通信授予网络连接许可的安全服务;
所述系统包括:
用于通过所述连接器设备建立与所述主机系统的链接的装置;
用于启动所述安全服务和所述代理服务器的执行的装置;
用于从所述Flash应用程序接收由所述代理服务器的执行所中继的API远程方法调用的装置;以及
用于执行由所述API远程方法调用所指示的所述API实现以控制所述硬件设备的装置。
2.如权利要求1所述的系统,其中所述平台处理器还被配置为向一服务器发送所述API远程方法调用。
3.如权利要求2所述的系统,其中所述服务器处理所述API远程方法调用,以分配一API远程方法调用到第二个主机系统。
4.如权利要求3所述的系统,其中所分配的API远程方法调用由在所述第二个主机系统上执行的Flash应用程序使用,以控制链接到所述第二个主机系统的计算机平台的硬件设备。
5.如权利要求1所述的系统,其中所述平台处理器被配置为将安全服务代码和代理服务器代码复制到所述主机存储器,并且其中所述平台处理器被配置为使得所述主机处理器执行来自所述主机存储器的所述安全服务代码和所述代理服务器代码。
6.如权利要求1所述的系统,其中所述连接器设备被配置为使用通用串行总线(USB)。
7.如权利要求1所述的系统,其中所述硬件设备被配置为使用提供所述硬件设备的物理运动的机械控制系统。
8.如权利要求1所述的系统,其中所述硬件设备被配置为使用表示系统来控制视听元件。
9.如权利要求1所述的系统,其中所述硬件设备被配置为使用环境监测系统以探测和记录外部信号来与所述计算机平台相互作用。
10.如权利要求9所述的系统,其中所述环境监测系统包括用于探测和记录与所述计算机平台的触觉相互作用的触觉传感器。
11.如权利要求9所述的系统,其中所述环境监测系统包括用于音频记录的扩音器。
12.如权利要求9所述的系统,其中所述环境监测系统包括用于视频记录的摄像机。
13.一种由计算机平台的平台处理器使用以经由Flash应用程序使用的应用程序接口(API)来提供硬件控制的方法,所述Flash应用程序在具有主机处理器和主机存储器的主机系统上的Flash运行时环境中执行,所述计算机平台包括位于所述主机系统之外的硬件设备、可链接到所述主机系统的连接器设备、以及平台存储器,所述平台存储器具有由所述Flash应用程序的所述API提供的用于远程方法的API实现、用于使得所述Flash应用程序和所述平台处理器之间能够通信的代理服务器、以及用于提供安全策略来为与所述平台处理器的通信授予网络连接许可的安全服务,所述方法包括:
通过所述连接器设备建立与所述主机系统的链接;
启动所述安全服务和所述代理服务器的执行;
从所述Flash应用程序接收由所述代理服务器的执行所中继的API远程方法调用;以及
执行由所述API远程方法调用所指示的所述API实现以控制所述硬件设备。
14.如权利要求13所述的方法,其中所述平台处理器还被配置为向一服务器发送所述API远程方法调用。
15.如权利要求14所述的方法,其中所述服务器处理所述API远程方法调用,以分配一API远程方法调用到第二个主机系统。
16.如权利要求15所述的方法,其中所分配的API远程方法调用由在所述第二个主机系统上执行的Flash应用程序使用,以控制链接到所述第二个主机系统的计算机平台的硬件设备。
17.如权利要求13所述的方法,其中所述平台处理器被配置为将安全服务代码和代理服务器代码复制到所述主机存储器,并且其中所述平台处理器被配置为使得所述主机处理器执行来自所述主机存储器的所述安全服务代码和所述代理服务器代码。
18.如权利要求13所述的方法,其中所述连接器设备被配置为使用通用串行总线(USB)。
19.如权利要求13所述的方法,其中所述硬件设备被配置为使用环境监测系统以探测和记录外部信号来与所述计算机平台相互作用。
20.一种用于控制由具有平台处理器的计算机平台提供且位于主机系统之外的硬件设备的方法,所述方法供在所述主机系统上的Flash运行时环境中执行的Flash应用程序使用,所述平台处理器提供用于使所述Flash应用程序和所述平台处理器之间能够通信的代理服务器、以及用于提供安全策略从而为与所述平台处理器通信授予网络连接许可的安全服务的执行,所述方法包括:
向所述安全服务的执行发起对所述安全策略的请求;
确认所述Flash运行时环境已经为与所述平台处理器的通信授予许可;以及
通过网络连接发送API远程方法调用到所述代理服务器的执行,以控制所述硬件设备。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310089295.XA CN103336724B (zh) | 2009-01-13 | 2010-01-12 | 用于Flash应用程序的具有分布式对象的集成硬件平台的系统和方法 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/319,979 US8359605B2 (en) | 2009-01-13 | 2009-01-13 | System and method for integrated hardware platform for flash applications with distributed objects |
US12/319,979 | 2009-01-13 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310089295.XA Division CN103336724B (zh) | 2009-01-13 | 2010-01-12 | 用于Flash应用程序的具有分布式对象的集成硬件平台的系统和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101776994A CN101776994A (zh) | 2010-07-14 |
CN101776994B true CN101776994B (zh) | 2013-04-03 |
Family
ID=42212141
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310089295.XA Expired - Fee Related CN103336724B (zh) | 2009-01-13 | 2010-01-12 | 用于Flash应用程序的具有分布式对象的集成硬件平台的系统和方法 |
CN201010002255.3A Expired - Fee Related CN101776994B (zh) | 2009-01-13 | 2010-01-12 | 用于Flash应用程序的具有分布式对象的集成硬件平台的系统和方法 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310089295.XA Expired - Fee Related CN103336724B (zh) | 2009-01-13 | 2010-01-12 | 用于Flash应用程序的具有分布式对象的集成硬件平台的系统和方法 |
Country Status (4)
Country | Link |
---|---|
US (2) | US8359605B2 (zh) |
EP (1) | EP2207094B1 (zh) |
JP (1) | JP5330276B2 (zh) |
CN (2) | CN103336724B (zh) |
Families Citing this family (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8176468B2 (en) * | 2005-12-01 | 2012-05-08 | Cypress Semiconductor Corporation | Multivariable transfer functions |
US8938674B2 (en) * | 2009-04-20 | 2015-01-20 | Adobe Systems Incorporated | Managing media player sound output |
US8219598B1 (en) * | 2009-05-11 | 2012-07-10 | Google Inc. | Cross-domain communicating using data files |
US20110209116A1 (en) * | 2010-02-19 | 2011-08-25 | Embedded Logix, Inc. | Programming Method and System For DAQ-Containing Device |
US8887132B1 (en) * | 2010-09-03 | 2014-11-11 | Christopher R. Hunter | Application runtime environment and framework |
US20120110602A1 (en) * | 2010-10-29 | 2012-05-03 | Cisco Technology, Inc. | Community Sensor-Coordinating Entity |
US8963692B2 (en) | 2010-10-29 | 2015-02-24 | Cisco Technology, Inc. | Aggregating and routing sensor data at a community sensor-coordinating entity |
CN102135902B (zh) * | 2011-03-01 | 2015-01-14 | 深圳市天趣网络科技有限公司 | Flash游戏的控制方法 |
US9553776B2 (en) | 2011-05-16 | 2017-01-24 | Avocent Huntsville, Llc | System and method for accessing operating system and hypervisors via a service processor of a server |
US8973089B2 (en) * | 2011-08-08 | 2015-03-03 | Adobe Systems Incorporated | Secure socket policy files for establishing secure socket connections |
CN102999153B (zh) * | 2011-09-08 | 2016-05-04 | 北京林业大学 | 基于自然人机交互的二维数据对象控制系统及其方法 |
CN102520942B (zh) * | 2011-12-06 | 2014-09-10 | 中国海洋大学 | 基于传感器的分布式海洋观测软件系统开发平台及方法 |
CN102497330A (zh) * | 2011-12-12 | 2012-06-13 | 北京像素软件科技股份有限公司 | 一种mmorpg中跨服务器组队的方法 |
CN102662633A (zh) * | 2012-03-16 | 2012-09-12 | 深圳第七大道科技有限公司 | 一种Flash任务的多线程处理方法和系统 |
JP6351609B2 (ja) * | 2012-11-05 | 2018-07-04 | エーエフエル・テレコミュニケーションズ・エルエルシー | 分散型テストシステムアーキテクチャ |
US10909501B2 (en) | 2013-03-15 | 2021-02-02 | Trupanion, Inc. | Pet insurance system and method |
US10013530B2 (en) | 2013-03-15 | 2018-07-03 | Trupanion, Inc. | Pet insurance system and method |
USD777737S1 (en) * | 2013-03-15 | 2017-01-31 | Trupanion, Inc. | Display screen or portion thereof with graphical user interface for pet insurance |
US10891590B2 (en) | 2013-03-15 | 2021-01-12 | Trupanion, Inc. | Pet insurance system and method |
GB2521412A (en) * | 2013-12-18 | 2015-06-24 | Continuumbridge Ltd | An apparatus for network bridging |
US9378123B2 (en) * | 2013-12-31 | 2016-06-28 | International Business Machines Corporation | Testing of transaction tracking software |
CN104462949B (zh) * | 2014-10-27 | 2017-09-26 | 中国建设银行股份有限公司 | 一种插件的调用方法及装置 |
US9602648B2 (en) * | 2015-04-30 | 2017-03-21 | Keyssa Systems, Inc. | Adapter devices for enhancing the functionality of other devices |
US11349922B2 (en) | 2016-04-06 | 2022-05-31 | Marvell Asia Pte Ltd. | System and method for a database proxy |
US10237350B2 (en) * | 2016-04-06 | 2019-03-19 | Reniac, Inc. | System and method for a database proxy |
US10290151B2 (en) * | 2016-08-17 | 2019-05-14 | Blackberry Limited | AR/VR device virtualisation |
US11075897B2 (en) | 2017-10-20 | 2021-07-27 | Vertiv It Systems, Inc. | System and method for communicating with a service processor |
CN110300082B (zh) * | 2018-03-21 | 2022-03-08 | 腾讯科技(深圳)有限公司 | 一种接口生成方法、装置及存储介质 |
JP7120804B2 (ja) | 2018-05-16 | 2022-08-17 | アルパイン株式会社 | 機器、表示体用部品及び表示体の固定方法 |
US11379727B2 (en) * | 2019-11-25 | 2022-07-05 | Shanghai United Imaging Intelligence Co., Ltd. | Systems and methods for enhancing a distributed medical network |
US11429595B2 (en) | 2020-04-01 | 2022-08-30 | Marvell Asia Pte Ltd. | Persistence of write requests in a database proxy |
US20220046019A1 (en) * | 2020-08-04 | 2022-02-10 | Juniper Networks, Inc. | Adding third party hardware to network devices |
CN113360379B (zh) * | 2021-06-04 | 2022-06-10 | 上海哔哩哔哩科技有限公司 | 程序测试环境创建方法和程序测试环境创建装置 |
CN113434196A (zh) * | 2021-06-29 | 2021-09-24 | 北京房江湖科技有限公司 | 用于管理应用程序的方法和装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101202689A (zh) * | 2006-10-23 | 2008-06-18 | 韩国电子通信研究院 | 网络机器人系统以及其中的通信方法 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030033353A1 (en) * | 2001-08-08 | 2003-02-13 | Simpson Shell S. | Method for web-based imaging service to redirect to a preferred destination based on a criteria |
JP2003114859A (ja) | 2001-10-05 | 2003-04-18 | Matsushita Electric Ind Co Ltd | Usb接続機器 |
US7534157B2 (en) * | 2003-12-31 | 2009-05-19 | Ganz | System and method for toy adoption and marketing |
US8221220B2 (en) * | 2006-08-11 | 2012-07-17 | Disney Enterprises, Inc. | Method and/or system for adaptive gaming experience |
CN101132571A (zh) * | 2006-08-22 | 2008-02-27 | 薛飞 | 在手机上显示和操作远程计算机的方法和系统 |
US20080076573A1 (en) * | 2006-09-08 | 2008-03-27 | John Loehrer | Network-based game system |
US20100228963A1 (en) * | 2007-03-08 | 2010-09-09 | Mobilaps, Llc | Methods of placing advertisments, interstitials and toolbars in a web browser |
US8230455B2 (en) * | 2007-07-11 | 2012-07-24 | International Business Machines Corporation | Method and system for enforcing password policy for an external bind operation in a distributed directory |
US8128500B1 (en) * | 2007-07-13 | 2012-03-06 | Ganz | System and method for generating a virtual environment for land-based and underwater virtual characters |
CN100566274C (zh) * | 2007-09-14 | 2009-12-02 | 东南大学 | 用于远程内容监管的无线局域网接入装置 |
US8543667B2 (en) * | 2008-01-14 | 2013-09-24 | Akamai Technologies, Inc. | Policy-based content insertion |
US8250627B2 (en) * | 2008-07-28 | 2012-08-21 | International Business Machines Corporation | Transaction authorization |
-
2009
- 2009-01-13 US US12/319,979 patent/US8359605B2/en active Active
-
2010
- 2010-01-12 JP JP2010004437A patent/JP5330276B2/ja active Active
- 2010-01-12 CN CN201310089295.XA patent/CN103336724B/zh not_active Expired - Fee Related
- 2010-01-12 CN CN201010002255.3A patent/CN101776994B/zh not_active Expired - Fee Related
- 2010-01-13 EP EP10000240.1A patent/EP2207094B1/en not_active Not-in-force
-
2012
- 2012-12-31 US US13/732,075 patent/US8924989B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101202689A (zh) * | 2006-10-23 | 2008-06-18 | 韩国电子通信研究院 | 网络机器人系统以及其中的通信方法 |
Also Published As
Publication number | Publication date |
---|---|
EP2207094B1 (en) | 2016-11-02 |
EP2207094A3 (en) | 2012-05-30 |
EP2207094A2 (en) | 2010-07-14 |
US8359605B2 (en) | 2013-01-22 |
US20100180284A1 (en) | 2010-07-15 |
US8924989B2 (en) | 2014-12-30 |
CN103336724A (zh) | 2013-10-02 |
CN103336724B (zh) | 2016-12-07 |
JP5330276B2 (ja) | 2013-10-30 |
JP2010182297A (ja) | 2010-08-19 |
US20130132979A1 (en) | 2013-05-23 |
CN101776994A (zh) | 2010-07-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101776994B (zh) | 用于Flash应用程序的具有分布式对象的集成硬件平台的系统和方法 | |
CN101170579B (zh) | 使用处理引擎来提供集中应用的系统和方法 | |
Bonarini et al. | R2P: An open source hardware and software modular approach to robot prototyping | |
CN105487882A (zh) | 应用软件试用系统、方法及其服务器与使用者装置 | |
US20110191787A1 (en) | System and method for providing sensor data from embedded device to software development environment | |
CN103927253A (zh) | 多浏览器兼容性测试方法及系统 | |
CN113079216B (zh) | 一种云应用的实现方法、装置、电子设备及可读存储介质 | |
CN107391219B (zh) | 函数编译方法和装置 | |
CN103168301A (zh) | 向Web应用透露资源能力 | |
CN104007974B (zh) | 一种机器人应用在线仿真和远程验证的系统与方法 | |
US8122459B2 (en) | Engine agnostic interface for communication between game engines and simulations systems | |
CN109669691B (zh) | 基于嵌入式Linux音频播放器的平台通用控制方法及系统 | |
CN106776292A (zh) | 多系统开启及登录的方法及装置 | |
KR100750407B1 (ko) | 사용자 인터페이스를 이용한 원격 조종 로봇 시스템 및 그방법 | |
CN110727423A (zh) | 跨平台开发行动应用程序的方法及其系统 | |
Bambagini et al. | A code generation framework for distributed real-time embedded systems | |
KR20150080053A (ko) | 스마트 기기가 주변 장치를 제어하는 서비스 제공 장치, 서비스 제공 시스템 및 서비스 제공 방법 | |
US11487267B2 (en) | Simplifying communication between a client application and a single-board data processing system | |
US8475282B1 (en) | Engine agnostic interface for communication between game engines and simulation systems | |
KR20200002228A (ko) | 가상현실 서비스 장치 및 그 방법 | |
WO2023096004A1 (ko) | 모듈화 방식의 게임 제작 방법 및 시스템 | |
Le Pallec et al. | A support to multi-devices web application | |
Sato et al. | WWW-based Remote Controller for LEGO robots | |
CN117931644A (zh) | 一种v2x自动化测试方法和系统 | |
GB2583806A (en) | Simplifying communication between a client application and a single-board data processing system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130403 |
|
CF01 | Termination of patent right due to non-payment of annual fee |