时间:2022-09-07 04:20:56
摘要: QNX CAR 2应用平台的总体架构简单且灵活。由于PPS消息传递模式采用松耦合架构,因此非常灵活。如果新增组件或设备,也只需要极少的工作,因为新的组件只需要数据,并订阅相关的PPS对象。即使修改HMI技术,也不会给底层组件带来较大的影响。所有这些需求都可为相关的API带来改变。
关键词:HTML5;通信;PPS
DOI: 10.3969/j.issn.1005-5517.2012.8.002
挑战
利用HTML5开发的人机界面(HMI)位于软件开发的上层环境中,但它们通常需要接入硬件。在汽车系统中,他们必须从CAN总线、GPIO引脚以及I 2 C和SPI器件等底层组件中取回信息。
试图编写让HMI与底层服务通信的界面是比较昂贵的办法。更好的方法是使用无关HMI的异步通信模式,比如永久性/订阅(PPS)。
永久性/订阅
QNX的PPS部署是在松耦合消息架构中针对者和订阅者提供的一种基于对象的服务。由于PPS利用标准的POSIX文件系统服务,它可以使用任何编程语言或者应用环境。
任何 PPS 服务客户端都可以是一个独立的者、订阅者,也可以既是者又是订阅者。以异步方式进行。者可修改对象及其属性并写入文件系统中。当任何者更改对象时,PPS 服务都会通知订阅该对象的所有客户端。PPS 客户端能订阅多个对象,PPS对象能有多个者和多个订阅者。因此,能访问不同对象属性应用数据的者可使用相同对象与该对象的所有订阅者交流信息。
永久性是由系统设计人员定义的特性,并为个体目标属性所设。当PPS运行时,不但可以维护内存中的对象,而且可以按需要或在关机时将对象保存到永久性存储体中。
PPS还能简化新组件的集成。由于者和订阅者不必认识对方,因此开发人员只需确定这些新组件的内容,以及他们需要其他 PPS客户端得到的数据内容。
QNX CAR 2应用平台
QNX CAR 2应用平台为PPS提供了理想的实施环境。从用户角度说,该平台的关键功能包括如下。
HMI:基于HTML5的HMI,支持简易标识、换肤和个性化。
信息和娱乐:多媒体(音频和视频);调幅、调频和高清电台;流网络电台;整合天气预报;基于电话或家庭的媒体支持苹果和 DLNA。
汽车界面:气候控制和诊断程序可在低油位、刹车问题及其他情况下通知司机。
导航、免提电话、语音辨识和社交网络。
QNX CAR 2平台还支持将众多应用和广泛的底层软件组件直接连接至硬件。
QNX CAR 2平台的HMI使用HTML5,并采用包括Sencha和jQuery JavaScript 库的JavaScript架构。该架构也支持如Adobe AIR和Elektrobit GUIDE HMI等其它易于集成HMI的技术。HTML5和Cascading Style Sheets(CSS3)的使用可以实现应用程序在车内系统以及移动智能手机以及平板电脑之间来回切换。
PPS处理众多系统组件和HMI之间的通信。由于PPS无关技术和语言,因此仅需要极少数的API来为HMI和组件提供界面:
一个PPS API处理HMI和PPS服务客户端之间的通信;
一个SQL API与本地媒体库接口。
另一套被称为UI内核的API,处理HTML5层和用户界面核心组件之间的通信,以及介于这个核心组件和其它HMI技术之间的通信。
H M I和硬件之间的通信由JavaScriptwrapper类和JNEXT处理。C/C++程序直接与车辆硬件接口,并对PPS对象进行读写。要访问为这些对象写入的信息,HMI中的JavaScript会呼叫一个wrapper类来与JavaScript PPS类通信。对于其它呼叫者来说,wrapper类展现了自然的、基于类别的JavaScript API。
图2 PPS服务客户端和对象。
服务客户端A仅是一个订阅者
服务客户端B仅是一个者
服务客户端C既是者,也是订阅者
图3 时序图可以显示不同QNX CAR 2组件之间的通信:a) 司机发出声控命令。b) 声控服务处理命令,并PPS对象。c)导航服务若已订阅导航相关的PPS对象,会收到更新,处理该请求,并PPS对象。d) HTML5 / 网页引擎得到更新;接着开始渲染所需的用户界面要素,并通过UI内核显示结果。