基于DVB-C的文件广播系统发送端软件设计.doc_第1页
基于DVB-C的文件广播系统发送端软件设计.doc_第2页
基于DVB-C的文件广播系统发送端软件设计.doc_第3页
基于DVB-C的文件广播系统发送端软件设计.doc_第4页
基于DVB-C的文件广播系统发送端软件设计.doc_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Q260046902 专业做论文西南科技大学毕业设计(论文)题目名称:基于DVB-C 的文件广播系统发送端软件设计年 级:2003级 本科 专科学生学号:20035024学生姓名:李 波 指导教师:周金治学生单位:信息工程学院 技术职称:讲师学生专业:电子信息工程 教师单位:信息工程学院西 南 科 技 大 学 教 务 处 制西南科技大学本科生毕业论文 IV基于DVB-C 的文件广播系统发送端软件设计摘要:为解决在互联网迅速发展中产生的“宽带瓶颈”与“信息垃圾”等问题,实现资源的有效利用,作者提出了一种利用基于DVB-C的广播网络平台来发送文件的思想。论文研究了文件广播系统的实现原理,分析了统一内容定位技术,给出了该系统在VC+ 6.0平台上的实现方案。由UCL标准框架确定文件信息标引元素,运用Access生成文件信息标引数据库,采用ADO技术访问并管理文件信息标引数据库,在MFC环境下调用由蓝拓扑公司生产的MPEG-2传输流发送卡的接口函数编写和调试程序。完成了发送端软件的设计,实现了服务器端循环发送文件的功能,并与客户端进行调试,完成了文件的选择接收和存储。实验结果表明,文中提出的基于DVB-C的文件广播系统实现方案是可行的。关键词:DVB-C;文件广播;UCL;ADO技术The Software Designation of Sending Based on the Documentary Broadcasting System of DVB-C Abstract: In order to resolve the problems which are brought by rapidly development of Internet, such as bandwidth bottleneck, information garbage and so on, implement the use of resource effectively, the author proposes a sort of documentary broadcasting system based on DVB-C to send files. This thesis studies the implemental theory of documents broadcasting system, and analyzes the technology of uniform content locator, and then presents the scheme for this system on the platform of the VC+6.0. The author sets the documentary information indexing by the UCL standard frame and uses the Access to build information indexing database, adopts technology of ADO to visit and manage information indexing database, then under the environment of MFC calls the API function of MPEG-2 transport stream send card designed by BLUETOP Corporation to code and debug the program, completes the designation of software of the sending end. Finally this thesis completes the designation of implements cycle sending of server. And debug with the client successfully, complete the choose receive and restore in the client. It is workable for the scheme based on the Documentary Broadcasting System of DVB-C, which is proved in the experiment. Key words: DVB-C, document broadcasting, UCL, ADO method目 录第1章 绪论1 1.1 研究背景1 1.2 国内外研究现状1 1.3 选题目的及意义1 1.4 主要研究内容2第2章 缩比实验系统3 2.1 实验系统的硬件构架3 2.2 硬件构架中各设备介绍6 2.2.1 发送卡介绍6 2.2.2 调制解调器介绍6第3章 UCL简介8 3.1 UCL的定义8 3.2 UCL研究8 3.3 UCL元数据规范框架9第4章 缩比实验开发平台及技术规范10 4.1 Visual C+6.0开发环境10 4.2 MFC简介10 4.3 线程介绍10 4.4 使用ADO访问数据库12 4.4.1 Access数据库的基本概念12 4.4.2 ADO简介12 4.4.3 ADO技术实现15 4.5 文件操作方法简介15 4.6 发送卡的API函数介绍17第5章 缩比实验系统实现19 5.1 缩比实验系统设计总流程19 5.2 缩比实验系统实现过程20 5.2.1 建立数据库并确定标引信息20 5.3.2 应用程序框架的建立21 5.3.3 显示数据库信息和管理数据库信息的实现26 5.3.4 主程序的编写27第6章 缩比实验调试与问题分析分析286.1 信息的语义标引显示与修改286.2 发送文件端软件调试296.3 缩比实验调试结果296.4 缩比实验调试问题与分析30结论31致谢32参考文献33附录34 附录1 ADO技术实现34 附录2 数据库文件内容35 附录3 显示数据库信息,与管理数据库信息的重要程序代码35 附录4 采用线程方法编写的主程序的部分主要代码38西南科技大学本科生毕业论文第1章 绪 论1.1 研究背景互联网的诸多优势使其迅速发展壮大,发展到现在不可避免地呈现出带宽瓶颈和信息垃圾两大问题。相比之下,广播网有较宽的频带,覆盖面较广,但突出的问题是用户收看节目受节目时间表限制。如果能将两网取长补短,则会有更广阔的应用前景。1.2 国内外研究现状在国外,目前,美国、欧洲和日本各自形成三种不同的数字电视标准。美国的标准是ATSC;欧洲的标准是DVB;日本的标准是ISDB。DVB数字广播传输系统利用了包括卫星、有线、地面等所有通用电视广播传输媒体。它们分别对应的DVB标准为DVB-S、DVB-C、DVB-T等,特别是DVB-S、DVB-C标准已成为事实上的国际标准。在国内,数据广播系统作为一数据通信方式不断向前发展,从最初的VBI、QPSK到现在的DVB-C;传输速率不断的提高(VBI 200K、QPSK 1.5M、DVB 38M);传输内容发生改变,从最初的文本信息,到现在的网站、多媒体及音视频信息。同时通过其发展过程中不断的营运及市场的检验,证明数据广播是数据通信的一个重要手段。由中国工程院李幼平院士所提出的“统一内容定位”(Uniform Content Locator)在数据广播网络平台(如有线电视HFC网)及IP交互网络平台(如因特网)上实现信息资源组织管理的创新技术理念,实现网络信息资源的“个性化按内容主动服务”。DVB技术作为目前数据广播的最高技术,通过不断的技术创新及市场发展,将推动数据广播产业更加辉煌。1.3 选题目的及意义虽然当代因特网的迅猛发展,以及全球普及,它逐渐成为了目前最大的信息资源宝库和最主要的信息交流渠道。然而,不得指出的是因特网的信息资源的特点却是量大而无序,并且是随着访问人数的增加,网络带宽的瓶颈效应和安全性问题愈加突出。基于因特网所暴露出来的问题,随着有线电视网的发展,DVB-C协议的完善,得到了解决。有线电视网的核心技术采用的是多电平正交幅度调制(64 QAM),8MHz的频带能容纳38.5Mbit/s的有效负荷;它频带宽、信道容量大、传输率高,并能很好的实现各种图像、语音、音乐、文字、数据的传输,而成为多媒体综合信息网的极好通道。这对于网络表现出来的杂乱无序、瓶颈效应和安全性问题都能完善的给出正确答案。通过该课题可以了解到当今的网络资源的使用情况;了解对文本进行语义标引的技术以及掌握基于VC+的编程能力;了解如何搭建基于DVB-C的实验网络平台;掌握蓝拓扑DVB-C数据发送卡的安装与使用方法;以及进行VC+软件开发的API函数的调用方法;熟悉QAM调制器的参数设置方法;掌握网络的连线方法;熟悉MPEG-2/DVB-C等相关的通信协议等。1.4 主要研究内容针对现在互联网信息量和用户量的不断增大,网络的带宽瓶颈和安全性问题日益突出,研究利用数据广播方式传输文件,采用UCL标引技术,最终来实现一个文件广播系统。设计并编写一套软件系统,实现网页文件的标引、发送、传输。以及在发送端将信息进行组织、标引。该实验采用的是缩比实验,它对硬件要求较少,只需两台计算机,一台装发送卡作为发送端,一台装接收卡作为接受端,并且能够较快运行VC+6.0的PC机,通过发送卡与接收卡、DVB-C的QAM组成的系统就能实现该实验。介绍并行数据广播系统的的分析,缩比实验的设计方案、具体实现过程,文件的传输、文件标引信息数据库的管理。 论文的章节安排如下:第二章介绍缩比实验系统。第三章对UCL知识进行了一些简单介绍。第四章介绍缩比实验开发平台及技术规范。第五章介绍缩比实验系统实现。第六章介绍实验系统调试与问题分析。第2章 缩比实验系统2.1 实验系统的硬件构架在我们这次的课题设计中,采用的实验平台是由缩比的硬件结构连接组成,结构如图2-1。Computer发送卡调制器模拟信道传输解调制接收卡Computer广播网络 图2-1 缩比的硬件结构DVB-C的实验网络平台的基本搭建图在图2-1中,信源服务器用插在其电脑PCI插槽上的发送卡及其接口函数完成DVB网关所做的工作以及TS流的产生和发送,以及对其他网页文件传送流分组的复用。在这个实验系统中,计算机是用作服务器端,是一个存放发送文件的播控服务器。这里压缩后产生的TS码流是一个长度定义为188个字节长的传输码流如图2-2。包头适配区域有用数据图2-2 TS码流的结构每个传输码流的前4个字节为包头(Header),包头后面就是需要传送的有用的信息,包括音频、视频、或数据信息,这里是就是调用对文件操作函数所提取的文件的信息。通常是184个字节长度,有时在有用信息(Useful Data)中插入一段适配区域(Adaptation Field),用于补充长度不完整的传输流,在我们这个课题中采用的是0来补充不完整的TS包,或者放置解码时钟(PCR)。传输流的字头是是传输流的关键,其结构如图2-3。同步字节 8bit111PID 13bit2114 bit图2-3 TS码流包头的结构每个TS码流的包头是有由32个比特组成,包头中每个结构的含义如表2-1所列。表2-1 TS码流的32比特各自代表的意思比特数 代号含义8Sync-byte同步字节1Ei 传输差错指示1Pusi有效负载起始指示器1Tpr传送优先级13Pid节目号2Xcr-flags传送加密控制1Af适配区域标识1Pf有效负荷标识4Cc连续计数器在这个32个比特中,需要指出的是13位的PID码特别重要,它是辨别码流信息性质的关键。分组首部各字段语义解释如下11:(1)同步字节 值固定为01000111(0x47),用于分组同步。它与像PID那样按规律产生的字段的值的选择应避免竞争的发生。(2)传送错误指示器 为1比特标志位。当置为1时表明在相关的传送分组中至少有一个不可纠正的错误位。此标志应由传送层之外的实体置1。当被置1后,在错误被纠正之前不能重置为0。(3)有效负载起始指示器 为1比特标志位,用来指示传送流分组带有PES分组或PSI数据时的情况。当传送流分组的有效负载带有PES分组数据时,该指示器具有以下特性:1表明传送流分组的有效负载将以PES分组的第一个字节开始;0表明在传送流的开始不是PES分组。当该指示器置为1时,在所有传送流分组中有且仅有一个PES分组开始。当传送流分组的有效负载带有PSI数据时,该指示器具有以下性质:如果传送流分组带有一个PSI部分的第一个字节,它的值被置1,表明传送流分组的第一个字节带有指针字段(pointer_field);如果传送流分组不带有一个PSI部分的第一个字节,它的值被置0,表明在有效负载中没有指针字段。当为空分组时,该指示器应置为0。对于空分组,该指示器应置0。对于只带有私用数据的传送流分组,对此比特的含义没有定义。(4)传送优先级 为1比特指示器,当被置为1时,表明相关的分组比其它具有相同PID但此位没有被置1的分组有更高优先级。传送机制可根据此位确定在一个原始流中数据的优先级。根据不同的应用,此优先级字段的编码可以不考虑PID,或者仅在一个PID内编码。此字段可能被通道特殊编码器或解码器修改。(5)PID 13位字段,指示存储于分组有效负载中数据的类型。PID值0x0000为程序关联表保留,而0x0001为条件访问表保留。PID值0x00000x000F保留,0x1FFFF为空分组保留。(6)传送加密控制 2位字段,用来指示传送流分组有效负载的加密模式。传送流分组首部包括适应字段,不应被加密。在空分组时,该字段的值置为00。加密控制值如表2-2所示。表2-2 加密控制值取值描述00未加密01用户定义10用户定义11用户定义(7)适配区域标识 是一个可变长的域,提供基本比特流解码所需的同步及时序等功能,以及编辑节目所需的各种机制,语法定义在ISO/IEC13818-1中有详细描述。(8)有效负载 是来自PES分组、PSI部分,以及不在这些结构中的私有数据的连续字节,空分组的PID为0x1FFF。该负载可以赋任何值。本论文研究的系统中,有效负载的数据是私有数据,数据类型由PID标识。(9)连续计数器 4位字段,随着每一个具有相同PID的传送流分组而增加,当它达到最大值后又回复到0。如果适应字段控制值为00或10,则不应增加。在传送流中,复制的分组可能被做为两个连续的具有相同PID的传送分组送出。复制的分组和原分组有着相同的连续计数器值,而适应字段控制值应为01或11。除去程序参考时钟字段有效值(如果有的话)将被重新编码外,在复制的分组中,原分组中每一个字节都被拷贝。在一个特定的传送流中那些具有相同PID的分组的连续计数器值是连续的,或者与前一个相同PID的分组差1时,或者在遇到“不增加”条件(适应控制字段值为00或10,或上面所描述的复制分组)时,及在非连续指示器为1时,连续计数器将不连续。空分组的此字段无定义。2.2 硬件构架中各设备介绍在我们这个实验系统中,采用的设备有:计算机,蓝拓扑公司生产的蓝拓扑MPEG-2传输流数据发送卡,基于DVB-C的调制解调器,下面依次介绍各设备。2.2.1 发送卡介绍蓝拓扑MPEG-2传输流数据发送卡是一种基于计算机内部的PCI插卡。该类型的发送卡提供完备的API接口函数,是DVB设备理想的硬件开发平台。该种发送卡可以将计算机中的MPEG-2传输流数据以指定的码率发送给各种数字视频设备。输出接口为ASI异步串行口和SPI同步并行口 ,支持188、204字节包发送,并支持数据包格式之间的转换 ,ASI接口支持突发和连续两种模式,支持外部字节时钟输入/输出,它所提供应用程序接口(API函数),用户可以进行二次开发。2.2.2 调制解调器介绍实验系统中所用到的QAM是一种基于DVB-C的正交幅度调制器。如图2-4为我们我们这个课题所用到的数字调制器。图2-4 课题中所用到的数字调制器下面对QAM知识作一些简要介绍。正交幅度调制(QAM)是一种矢量调制,它将输入比特先映射(一般采用格雷码)到一个复平面(星座)上,形成复数调制符号,然后将符号的I、Q分量(对应复平面的实部和虚部)采用幅度调制,分别对应调制在相互正交(时域正交)的两个载波(cos wt和sin wt)上。这样与幅度调制(AM)相比,其频谱利用率提高1倍。QAM是幅度、相位联合调制的技术,它同时利用了载波的幅度和相位来传递信息比特,因此在最小距离相同的条件下可实现更高的频带利用率,目前QAM最高已达到1024QAM(1024个样点)。样点数目越多,其传输效率越高,例如具有16个样点的16-QAM信号,每个样点表示一种矢量状态,16-QAM有16态,每4位二进制数规定了16态中的一态,16-QAM中规定了16种载波和相位的组合,16-QAM的每个符号和周期传送4比特。QAM调制主要用在有线数字视频广播和宽带接入等通信系统方面。QAM调制方式的多媒体高速宽带数据广播系统采用DVB-C有线数字视频广播标准,代表着数字化发展方向,有16QAM、32QAM、64QAM、128QAM、256QAM之分,数字越大,频带利用率越高,但同时抗干扰能力也随之降低。假设在一个8MHz的模拟频道内,设用64QAM的调制方式,调制效率为6bit/band,余弦滚降系数为0.15,则最大可传送的比特率为:调制效率模拟带宽(1余弦滚降系数) 68MHz1.1541.7Mbps (2-1)这样,采用64QAM调制方式,可在传统的8 MHz模拟频道带宽上传输约40 Mbps数据流,可在一个标准PAL通道上传输48套数字电视节目,它的末端用户可以是计算机,也可以是带数字机顶盒的电视机。QAM在安全授权方面比QPSK调制方式更可靠,完全能满足海量信息传输的需要,其传输速率更高,通道还可优化。第3章 UCL简介3.1 UCL的定义目前普遍采用的方式是将信息空间视为“按地址定位”的空间,确切地说,是按信息“存储源地址”定位的空间。如今在Internet上广泛上应用URL(Uniform Ressource Locator:统一资源定位器)就是如此,而不是真正的“资源定位”。UCL(Uniform Cotent Locator)统一内容定位是网络信息资源描述结构。UCL的目的是解决网络信息资源的发现、查找、识别、控制和管理问题。UCL技术能够在信源制作阶段对资源内容按照预先设定的标准进行自动分类并贴上标签,用语言表达对内容的要求,建立以人为本的网络空间信息模型,通过筛选机制(用户访问某类信息的频度或用户的定制自动向用户提供相关的信息内容),从而改变用户查找网页或者文件的信息获取方式,实现个性化的服务,并极大地节省用户用于查找内容的时间。在信息空间(cyberspace)里,每一份多媒体文件都是一个多维矢量。矢量的模量(长度)是文件字段数,矢量的方向取决于对文件内容进行精细定位的一组代码,即UCL代码。UCL代码对文件内容的类别、主题、出处、时段、作者、关键词、分类代码等作出多维度的标引。设UCL的向量表示为:U=(u1,u2,un) (3-1)上式中u1,u2,un;n是UCL的分量数,一般与被描述对象、应用领域、传输方式、用户终端形式有关。为了区分UCL的描述对象与应用领域,可以定义应用于某些特定领域的UCL.如用于描述Web信息资源的Uw,用于描述远程教育资源(Education)的Ue,用于描述数字视频(Video)的Uv。可以看出,URL只是UCL的一个分量。3.2 UCL研究为了解决现有WWW存在的信息共享模式的困境信道拥塞,中国工程院院士、中国工程物理研究院研究员李幼平院士等专家提出了“统一内容定位(UCL:Uniform Content Locator)”思想,试图通过建立一套完整的数据广播元数据(元数据是“关于数据的数据”,它反映数据广播信息内容的概貌)规范,并据此实现信息内容表示的标准化。结合其提出的“存数据于家中”的新型信息共享结构“广存结构”(广存结构的技术基础是以存储技术为手段,增强数据广播),打造一个全新的公众媒体信息传播媒体“第五传媒”。在“第五传媒”中,用户之间没有共享冲突,原理上不存在带宽拥塞,支持用户数量的自由增长,同时也将极大的改善现有的人网交互界面。从工程技术层面来看,UCL是信息内容的高阶信息的实例化,是关于信息的信息,是沟通编者(编者用它标引信息资源)与读者(用户用它表达阅读意向)之间的工具,是解决接收端数据信息的快速选择、信息过滤、智能代理和信息主动服务的基础 。UCL是“信息爆炸时代”的“绿色卫士”,把浪费人们精力无关的信息拒之门外,节省人的注意力资源。 从“广存结构”的全局动态运作来看,UCL是贯穿全系统的信息管理机制。3.3 UCL元数据规范框架UCL 是“描述内容的内容”,由代码和文字两部分组成,代码部分供计算机识别。UCL标准框架,如表3-1所示。表3-1 UCL标准框架表大类行业标准语言ISO639-2栏目自定义创作者自定义标题自定义出版者自定义关键词1日期W3C-DTF简介自定义类型DCMI Type Vocabulary来源2格式IMTURL扩充自定义PIDMPEG-21:中国主题词分类表,汉语主题词表,中国图书馆分类法(第四版);2: WWW上的统一资源识别(URL)。第4章 缩比实验开发平台及技术规范4.1 Visual C+6.0开发环境Visual C+6.0是一种可视化、面向对象的Windows开发语言,它具有易使用、通用和开发效率高的特点。随着微软公司对它不断的改进及计算机本身在性能上的提高,使得Visual C+6.0越来越适合于一般的应用程序开发。AppWizard(应用程序向导)是VC重要的组成部分,它可以把复杂的任务分解成几个简单的步骤,并且逐步提醒用户应该做什么,帮助用户生成各种风格的应用程序框架,辅助生成应用程序框架源代码的一种特殊的向导。由于AppWizard生成的框架已是一个完整的可以运行的程序,用户需要做的只是在这个基础上进行修改并添加新的功能,从而在很大程度上减轻了编程的工作量。4.2 MFC简介MFC(Microsoft基本类库,Microsoft Foundation Class Library)是微软公司对庞大的标准Win32 API函数的封装,提供了图形环境下应用程序的框架及创建应用程序的组建,通过VC的Wizard功能简化了Windows应用程序的编写工作。MFC库提供了大量的基类供程序员根据不同的应用环境进行扩充,允许在编程过程中自定义和扩展应用程序中的类,可以处理许多标准的Windows编程任务,比如创建窗口、处理消息、添加菜单和对话框等。4.3 线程介绍一般来说,我们把正在计算机中执行的程序叫做进程(Process) ,而不将其称为程序(Program)。所谓线程(Thread),是进程中某个单一顺序的控制流。线程是程序中一个单一的顺序控制流程.在单个程序中同时运行多个线程完成不同的工作,称为多线程.线程和进程的区别在于,子进程和父进程有不同的代码和数据空间,而多个线程则共享数据空间,每个线程有自己的执行堆栈和程序计数器为其执行上下文。多线程主要是为了节约CPU时间,发挥利用,根据具体情况而定。在我们这个实验系统中,平台是VC+ 6.0,采用的是C+语言编程实现,在程序中我们采用的线程技术是靠AfxBeginThread函数来实现的。AfxBeginThread是通过封装了线程相关函数到一个线程类中,然后实现线程操作的,当线程类退出作用域的时候,会自动调用CloseHandle函数关闭线程句柄,也可以在线程函数中调用AfxEndThread,函数结束该线程。AfxBeginThread函数的第一个参数为线程函数的名称,实际上应该是指针。所以一般线程函数不放在其他的类中。AfxBeginThread的如下函数原型:CWinThread* AfxBeginThread( AFX_THREADPROC pfnThreadProc, LPVOID pParam, int nPriority = THREAD_PRIORITY_NORMAL, UINT nStackSize = 0, DWORD dwCreateFlags = 0, LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL ).返回值:指向新创建的线程对象。该函数原型各参数介绍如下:pfnThreadProc:工作线程的函数指针,不可以为空。并且工作线程的函数必须如此声明:UINT MyControllingFunction( LPVOID pParam )。pThreadClass: 从CWinThread类继承来的对象的RUNTIME_CLASS指针。pParam:传递给工作线程函数pfnThreadProc的参数。nPriority:线程的优先级。如果为0,则与创建它的线程优先级相同。可以通过参考Win32 Programmers Reference中的SetThreadPriority得到所有可用的优先级列表和描述。nStackSize: 以字节为单位指定新线程的堆栈大小。如果为0,则与创建它的线程的堆栈大小相同。dwCreateFlags:指定一个额外的标志控制线程的产生。它可以包括下面两个值中的一个:CREATE_SUSPENDED:以挂起模式开始线程,并且指定挂起次数。当调用ResumeThread时,这个线程才会被执行。为0时,创建之后,马上执行线程。lpSecurityAttrs:指向SECURITY_ATTRIBUTES结构的指针,结构中指定了线程的安全属性。如果为NULL,则与创建它的线程的安全属性相同。如果希望得到更多的有关SECURITY_ATTRIBUTES结构的信息,请参考Win32 Programmers Reference。4.4 使用ADO访问数据库4.4.1 ACCESS数据库的基本概念数据库中包含多个表,每个表可以分别表示和存储不同类型的信息。表是整个信息集合中和一个范畴相关的字段集合,是数据库中唯一可以保存数据的结构,一般来说,在一个数据库中包含多个表,当然也可以只包含一个表。每个表都能和其他表链接或组合以供浏览、操作或计算大量信息的具体信息的集合。记录是表中由一个完整的信息条目字段组成的行,每条记录包含多个字段。一个字段是一列的单元,它包含同一类型的数据,组成一条记录的一个具体方面。例如如表4-1是一个课件信息标引表。在表中的每一行就是一条记录,一条记录对应一个课件的课程名称、课程性质、开课学期、作者和编写日期的信息。每条记录都含有相同类型和数量字段:COURS、PROPERTY、GRADE、AUTHOR、DATE。 表4-1 课件信息标引表课程名称课程性质开课学期授课教师编写日期数字信号处理专业必修课大三(下)周金治2005/2/20高频电子技术专业必修课大三(上)傅佑麟2002/1/26宽带网络技术专业选修课大三(下)江虹2005/3/134.4.2 ADO简介ADO(Active Date Object,称Active X 数据对象)是数据库应用程序开发的接口,它是建立在OLE DB之上的高层数据库访问技术。和以往的数据库访问技术(ODBC API、DAO、RDO等)相比,ADO的最大优点是使用简便,速度快、内存消耗少,和占用磁盘空间少。ADO的功能是非常强大的,基本功能可介绍如下:l 连接到数据源。同时,可确定对数据源的所有更改是否已成功或没有发生。l 指定访问的数据源的命令,同时可带变量参数或优化执行。l 执行命令。l 如果这个命令使数据以表中行的形式返回,则将这些性存储在易于检查、操作或更改的缓存中。l 适当情况下,可使用缓存行的更改内容来更新数据源。l 提供常规方法检测错误。上述的功能主要由ADO提供的7个对象来完成,各对象间的关系如图4-1所示。很多情况下,这7个对象并不是都需要的。ConnectionCommandRecordsetErrorsErrorFieldsFieldParametersParameter图4-1 ADO各对象间的关系4.4.3 ADO技术实现下面具体介绍如何在在Visual C+中使用ADO。具体程序代码详见附录1。1) 使用#import指令导入ADO库文件。在使用ADO之钱,首先需要使用#import指令导入ADO库文件,以便编译器能正确编译。2) 初始化COMADO库是一组COM动态连接库,所以应用程序在使用ADO之前,必须初始化OLE/COM库环境。一般就是使用CoInitialize()函数来初始化COM。3) 初始化数据库连接对象和打开数据库连接应用程序中,一般使用Connection 对象来连接数据库对象。4) 使用Connection对象、Command对象或者Recordset对象执行数据库操作。5) 关闭记录集和数据库连接。4.5 文件操作方法简介关于对文件的操作,每种语言都有自己的函数或者方法来对其操作,而编写一个程序总是要接触与文件进行数据交换。在VC+也有很多函数或者类来对文件进行操作。比如:FILE类,CFile 类,或者一般的C语言中对文件的操作。在我们这个课题中,由于对FILE类比较熟悉就采用了该类。下面就介绍下该类的一般用法。1. 打开一个文件。打开一个文件,在该类中用到的是 FILE *fopen(const char *filename,const char *mode)这句话,其中第一个参数是文件路径的参数,第2个参数是对该文件进行什么样的模式操作的参数。Mode取值如表4-2所示。表4-2 mode的取值值作用“r”以文本只读方式打开文件,若文件不存在或没有找到,则该函数调用失败“w”生成一个空我恩件,以文本写方式访问文件,若该文件已存在,则原文件内容将被破坏“a”以文本追加的方式打开文件,在向文件写入新的数据之前不删除EOF标志,若该文件不存在,则首先创建该文件“r+”以文本读/写方式打开文件(文件必须存在)“w+”生成一个空文件,以文本读/写方式访问文件,若该文件已存在,则原文件内容将被破坏“a+”以文本读和追加方式打开一个文件,追加操作中,包括在新的数据被写入到文件之前,EOF标记被删除,写后该标记被恢复,若该文件不存在,则首先要创建该文件“r+b”以二进制读/写方式开打文件“w+b”生成一个空文件,并以二进制读/写方式访问文件“a+b”以二进制读/写方式打开文件2. 读,写文件。对文件进行读,写操作一般用到fread,fwrite函数。函数原型如下:Fread(void *buffer,size_t size,size_t count,FILE *stream)本函数从stream指针所指向的流中读取count 个对象,其中每个对象的长度为size个字节,读取的结果buffer指针所指向的数组中。文件位置指针按读取的字节个数向前移动相应个字节的位置。Fwrite(const void *buffer,size_site,size_t count,FILE*stream)本函数将参数buffer指针所指向的字符数组中的count个对象写入到参数stream流中,其中每个对象的长度为size个字节。文件位置指针向前移动,移动值等于实际写入的字符个数。注意:如果本函数成功地被运行,将返回实际写入的对象个数,即count否则将小于count,表示出错。3. 关闭文件。Fclose()函数就是用来关闭与参数stream流关联的文件,并清洗文件的缓冲区。4.6 发送卡的API函数介绍该实验系统采用的是蓝拓扑公司生产的MPEGII传输流发送卡,此卡适用于开发在windows XP和windows 2000等操作系统下的应用软件,同时它提供相应的API接口库和头文件,开发和编译环境为Microsoft VC+6.0。值得注意的是“发送卡编号”,主板的PCI槽号一般是顺序排列的,多块发送卡/采集卡插上后,最靠近CPU的或最远离CPU的一块卡 (不一定最靠近CPU的或最远离CPU的PCI槽上的)编号为0,然后按顺序依次升高,根据蓝拓扑公司人员的经验介绍是个人台式机卡编号从最靠近CPU的地方开始,工控机则从最远离CPU的地方开始计数。用户也可以根据自己的测试确定。目前支持的最多发送卡数目是4。下面介绍该实验系统中所用到的发送卡的API函数,其在程序中的具体应用参考附录4。(一) int bst_init(int DeviceId)功能:对发送卡进行初始化.在所有的关于卡的操作之前调用一次。参数:DeviceId:发送卡编号,0开始。返回值:0为成功,负数表示失败。(二) int bst_fini(int DeviceId)功能:对发送卡进行关闭和结束工作,在所有的关于卡的操作之后调用一次。参数:DeviceId:发送卡编号,0开始。返回值:0为成功,负数表示失败。(三) int bst_start_transmit(float rate, int frame, int spi_asi,int DeviceId)功能:发送卡准备发送和设置参数.在多次bst_transmit()调用的第一次之前调用一次。参数:rate:发送卡输出信号的速率,bps为单位。Frame:发送卡输出TS流的包长度,188或204。Spiasi:0表示SPI和ASI接口同时输出,1表示只有ASI接口输出,2表示只有SPI接口输出。DeviceId:发送卡编号,0开始。返回值:0表示成功.负数表示失败。(四) int bst_transmit(void* pBuffer,int nLength,int DeviceId)功能:发送卡发送数据。可以反复多次调用,建议nLength取值在20K到200K之间。参数:pBuffer:待发送数据缓冲区的指针。 nLength:要发送的长度,字节单位,建议取值在20480到204800之间。 DeviceId:发送卡编号,0开始。返回值:实际发送的数据长度,字节单位。负数表示操作出错。(五) int bst_stop_transmit(int DeviceId)功能:发送卡结束发送。在多次bst_transmit()的最后一次之后调用一次。参数:DeviceId:发送卡编号,0开始。返回值:0表示成功,负数表示失败。第5章 缩比实验系统实现在上面的讨论中,我们已经实现了该系统的基本要素,比如硬件的搭建,发送卡的API函数的介绍,数据库的建立与访问,VC+的一些基本知识以及界面设计所需要用的MFC的一些函数都作了一些介绍。下面我们将对该实验系统的实现作一些简单介绍。5.1 缩比实验系统软件设计结构介绍在该实验系统中,发送端软件的主要功能有:内容标引、数据封装、并播复用、数据调度控制。将要发送的文件数据封装成一系列固定格式的分组;将这些分组送入发送缓冲区,以异步广播时分复用方式复用并发送;对文件内容作数据调度、带宽分配、差错控制、速率控制、同步控制。用户终端接收并保存内容标引信息,解复用多路节目,按兴趣接收并保存不同节目内容的数据。前端软件设计采用面向对象的程序设计方法,VC+6.0是软件开发工具。软件总体结构示意图如图5-1所示。发送过程标引过程对文件进行UCL标引重组UCL为信息库发送缓冲区发送卡发送出去文件 1n对文件进行数据处理对文件的处理过程图 5-1 软件总体结构示意图对于数据广播的实现,最基本的就是实现DVB的四种数据封装,在缩比实验中适合采用数据管道应用方式,产生MPEG-2传送流分组,并且产生相关的文件信息,为用户提供独立于MPEG-2 TS流的接口,这一层是比较固定的,而且其提供的API是与硬件平台无关的,可应用于各种DVB数字电视广播平台。前端软件设计采用多线程方式,软件主程序流程图如图5-10所示。在标引过程中,采用自定义的框架和元素表,通过手动标引的方法填入标引的信息,并建立ACCESS数据库对信息进行组合。发送过程中,通过调用发送卡的API函数,先把标引后产生的信息(标引过程中产生的数据库文件)送缓冲区,并经过一系列的打包,转换,最后由发送卡把该文件发送出去。在数据处理过程中,把文件的信息按照DVB-C协议、TS流结构进行组织、封装的过程。下面详细介绍实现过程。5.2 缩比实验系统实现过程5.2.1 建立数据库并确立标引信息在Microsoft Office Access 2003中建立一个名为Ucl.mdb的数据库文件。可以直接点击右键建立。打开该文件,选择使用设计器创建表选项,也可以使用其他两个选项来建立表文件,建立一个名为Uclinfo的表文件,如图5-2。图5-2 Uclinfor表文件的字段名对于各字段名称的定义是在参考了UCL元数据规范框架后,与接收端商量而确定。其具体的含义如表5-1。数据库文件内容详见附录2。表5-1 表中各字段的含义字段名称字段含义数据类型说明Fileid文件号数字区分文件类型,规定文件号为0的是发送的带有UCL信息的数据库文件。URLURL文本网页文件的URLTitle标题文本文件的标题Subject分类文本文件属于何种类型Author作者文本该网页文件的创作者是谁Date日期文本文件的日期Keywords关键字文本文件一些突出关键字Free补充说明文本对发送的该文件进行一些补充说明Address文件在发送端上的地址文本发送文件在发送端上存放的位置,便于查找5.2.2 应用程序框架的建立和一些控件代码的介绍通过VC+ 6.0的向导功能轻松的建立一个基于MFC AppWizard.exe的应用程序界面,设计出来的界面框架如图5-4。图5-4 主程序界面对话框里个各控件的作用,以及类型如表5-2所示。表5-2 主程序界面中各控件介绍控件ID控件类型说明IDC_BTLIULAN按钮浏览.IDC_BTLISTADD按钮添加IDC_BTUCLINFO按钮查看UCL信息IDC_BTSEND按钮发送IDC_BTSTOP按钮停止发送IDCANCEL按钮关闭对话框IDC_FILENAME编辑框输入文件名IDC_RATE编辑框输入

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论