首页 > 范文大全 > 正文

基于UPnP的数字电视机顶盒控制技术的研究

开篇:润墨网以专业的文秘视角,为您筛选了一篇基于UPnP的数字电视机顶盒控制技术的研究范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:数字电视机顶盒技术代表嵌入式家庭多媒体终端的发展趋势,其延伸出的“信息化家电平台”概念更是对家庭多媒体终端技术产生了深远的影响。该论文旨在为智能家庭网络整合提供一种灵活、简便的系统实现方案。如果将数字电视机顶盒接入家庭网络,控制家庭网络中的设备,提供可视化的GUI(Graphical User Interface),方便用户操作,实现资源共享,那么这样的网络正是人们所期望的。

关键词:UPnP;数字电视机顶盒:控制点;libupnp

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2013)01-0162-03

随着越来越多的设备联入网络,对于共享设备以及共享设备提供的资源和服务的需求也越来越强烈,透明的访问各种联入网络的资源也成为了一种非常复杂的任务。UPnP(Universal Plug and Play),通用即插即用。Microsoft公司称“UPnP”将延伸到家庭中的每一个设备,它会成为个人电脑、应用程序、智能设备集成工作所必需的框架、协议和接口标准。它是一种架构在TCP/IP和HTTP技术之上的,分布式、开放的网络结构,以使得在联网的设备间传递控制和数据。UPnP 技术实现了控制点、设备和服务之间通讯的支持,并且设备和相关服务的也使用XML(Xtensible Markup Language)定义并且公布出来。对于设备的描述,使用HTML(Hypertext Markup Language)表单表述设备控制界面。它既允许设备供应商提供基于浏览器的用户界面和编程控制接口,也允许开发人员定制自己的设备界面。

upnp论坛成立于1999年10月18日,该组织目前已吸引超过200个在消费电子、家庭自动化、计算机、家电、计算机网络和移动设备等领域的顶级供应商的参与。UPnP技术在IP层以上,应用层以下,所以与具体的物理接入手段和应用无关。使用UPnP协议不需要设备驱动程序,因此使用UPnP建立的网络是介质无关的,它可以运行在几乎所有的操作系统平台之上,可以使用C,C++,JAVA和VB等开发语言,使得在办公室、家庭和其他公共场所方便地构建设备相互联通的网络环境[1-2]。

总之,使用UPnP,设备可以动态加入网络,自动获得一个IP地址,向其他设备公布它的能力或者获知其他设备的存在和服务,所有这些过程都是自动完成的,此后设备能够彼此直接通讯。

1 SDK架构

Linux SDK for UPnP Devices(libupnp)是一个便携的、可移植的UPnP的C语言开发包。为开发者建立符合UPnP设备体系规范的控制点、设备和桥提供了一套API和开源代码。Libupnp使开发人员摆脱各种协议的细节,专心进行服务或者控制所需的具体开发。SDK各模块之间的关系如图1所示[3]。

1)Device/Control Point:客户端或服务器程序运行在整个SDK的最顶层,实现一个特定服务的功能。例如,一个网关类的服务,服务器实现能够用UPnP控制的“网络使能”功能。

2)SDK API:SDK API从控制点或服务程序中提取出核心UPnP协议的细节并给应用程序访问功能提供统一的接口。这使得开发者免于SSDP,GENA和SOAP各种协议细节的烦恼。

3)SSDP:SSDP(SimpleService Discovery Protocol)模块实现了简单服务发现协议,提供UPnP的发现阶段。该模块允许控制点发送多播信息搜索网络上的设备并接受应答。

4)Mini Web Server:迷你Web服务器模块处理标准HTTP GET请求,许多UPnP部分都用这种基本的HTTP请求服务。该模块管理那些能用GET命令获得的文档地址,并实现了使用HTTP协议的实际数据流。迷你Web服务器模块实现了HTTP/1.1的RANGE头,允许一个远程客户端请求一个文件定的一片或者多片。

5)GENA:GENA模块实现通用事件通知架构,实现UPnP的事件部分。控制点使用该模块订阅和取消订阅感兴趣的服务,服务应用程序从该模块中接受订阅和退订消息并产生相应的事件。

6)SOAP:SOAP(Simple Object Access Protocol)模块实现简单对象访问协议,提供UPnP的控制部分。控制点使用该模块产生相应的XML文档来检索一个服务的状态表,服务器使用该模块解码控制请求并产生应答。

7)HTTP:HTTP对接收信息的HTTP头进行语法分析并构建发送信息头。该模块能处理HTTP/1.0和HTTP/1.1头,也支持HTTP/1.1F分块编码语法。

2 机顶盒作为控制器的设计和实现

2.1 初始化与注册

一个控制点应用程序在使用任何API函数前必须先初始化SDK。初始化时应用程序可指定IP地址和端口号。对控制点来说,初始化设置了用于侦听事件的缺省IP地址和端口,若IP地址是NULL,那第一个非空,非回环地址将被启用。如果端口号为0,将使用一个随机端口。也可以在初始化之后使用函数UpnpGetServerIpAddress()和UpnpGetServerPort()来从SDK检索到IP地址和端口号。对控制点,选定一个IP地址的唯一好处就是可以在多接口配置中侦听一个特定的接口,选定一个固定的端口号没有任何实际意义。初始化代码如下: