首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

PPS消息传送可简化医疗设备设计

PPS消息传送可简化医疗设备设计

  本文小结
  QNX MD应用展现了PPS消息传送可以如何应用于松耦合的医疗器械架构中。该设计实现了HMI和支持标准康体佳协议的互通性管理器之间灵活、强大的通信。这个互通性管理器还可与外部组件设备通信。由于组件仅仅根据实施需求来发布和订阅PPS对象,他们不需要了解对方,因此不费吹灰之力就可以扩展或修改系统。实际上,PPS组件的松耦合架构使更改、升级和扩展任务变得更加轻松,从而减少了风险。

  PPS服务可设计成使用二进制对象或可读对象。
  我们选择将可读对象和属性用于QNX PPS,因为与较大对象的成本相比,其具有更大的开发和调试优势。
  可读对象允许使用简单的文件系统工具从命令行进行调试,比如cat命令用于订阅,echo命令用于发布。
  举例来说:
  cat /pps/media/PlayCurrent
  cat /pps/media/.all?wait
  或
  echo "attr::value"》/pps/objectfilename
  同样,调试信息(包括PPS对象和属性)能够通过订阅一个对象并打印出来的简单程序被检索到。
  持久发布/订阅
  对于实时操作系统(比如必须满足严格的可靠性和可获取性要求的QNX Neutrino RTOS)来说,发送/接收/回复消息传送模式非常适用,甚至是有强制要求。但是,和异步消息传送一样,发送/接收/回复消息传送也不是复杂系统的最佳选择,特别是当这些系统必须轻松地集成不同的应用和功能时。发送/接收/回复消息传送密切联系着发送方和接收方。
  发布/订阅已经以各种形式存在了至少20年。1987年,K.P.Birman和T.A.Joseph将类似的消息传送模式(虚拟同步)描述为"一种容错的异步公告牌机制".
  二十年前,北电网络公司应用了一种类似模型以在电话交换机(如DMS-100)上进行故障监测,并使用了网络监测和报告系统的技术。只要在网上快速搜索,就能找到许多发布/订阅的应用实例。再深入搜索,还能在美国计算机协会(ACM)的门户网站上找到几百份与发布/订阅的某些方面或其他观察者模式计算模型有关的文章。
  我们将重点介绍,在重启时也能确保持续性的发布/订阅模型或PPS如何能够帮助不仅支持各种设备和软件组件、而且能与复杂人机界面进行通信的嵌入式应用程序进行开发和部署。
  我们对QNX MD使用了基于Qt的HMI,但是PPS消息传送模式的优势也可以应用于由其他技术建造的HMI.实际上,在其他系统上已经应用了PPS,包括QNX CAR应用平台和Smart Energy参考应用,这两者都拥有基于Adobe Flash的HMI.
  基于对象的系统
  PPS是在松耦合消息传送架构中针对发布者和订阅者提供的一种基于对象的服务。根据实现服务的需要,任何PPS服务客户端都既可以是单独的发布者或订阅者,也可以既是发布者又是订阅者。
  发布以异步方式进行。PPS对象集成在PPS文件系统的路径名空间中。发布者可修改对象及其属性并将其写入到文件系统中。当任何发布者更改对象时,PPS服务都会通知订阅该对象的所有客户端。PPS客户端能订阅多个对象,PPS对象可以有多个发布者和多个订阅者。因此,能访问应用到不同对象属性的数据的发布者可使用相同对象与该对象的所有订阅者交流信息。
  PPS客户端必须知道感兴趣的是哪些PPS对象。如果是发布方,他们需要知道在什么时候发布什么消息;如果是订阅者,他们需要知道订阅的对象种类和感兴趣的对象属性。然而,PPS客户端不必管理错误,只需在使用open()、read()和write() POSIX API调用的范围内缓冲,确认其理解读取的内容以及是否希望读取处于阻塞或非阻塞状态。PPS服务会负责处理其他内容。客户端只需要知道已读取消息并且能分析读取内容。同样,由于PPS订阅者使用read()调用检索对象,他们无需管理这些对象的缓冲区。
  推送还是提取?
  在默认状态下,QNX PPS服务是作为推送式发布系统运行的;也就是说,发布者会将数据推送到对象中,订阅者会根据通知或在闲暇时读取数据。
  但有些数据(如接口上的数据包计数)变化太快,因此无法通过使用默认推送发布的PPS有效地进行发布。
  为此,QNX PPS还提供了一种选项,允许订阅者将PPS变成提取式发布系统。当订阅者打开具有该选项的对象并发出一个read()调用时,该对象的所有发布者会收到一个通知以在对象中写入当前数据。订阅者的读取会一直阻塞直至对象的数据得到更新并返回新的数据。
返回列表