




免费预览已结束,剩余25页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
厦门大学本科毕业论文ARM嵌入式网络电台播放器ARM嵌入式网络电台播放器摘要 随着PDA正朝着计算、通讯、娱乐、电子商务等多功能的融合的趋势发展,结合近十多年来,网络电台也随着信息技术的发展迅猛地流行起来。本文立足于PDA的终端应用,以三星公司的基于ARM RISC架构的S3C2410处理器为硬件基础,以嵌入式Linux操作系统为软件基础,提出并研究设计了一款针对PDA终端的网络电台播放器的解决方案。该方案以高性能处理器,mplayer解码器和嵌入式Linux操作系统为核心进行系统设计,可以支持绝大多数的流媒体编码格式,也可以支持当地音频文件。关键词 网络电台 PDA ARM 嵌入式平台 播放器Networking Radio Player on ARM Embedded SystemAbstract Along with PDA develops into the trend of performing the computation, communication, entertainment, electronic commerce etc. multiple-functions integrated. And, in the past decade, the information technology developed very fast, the network radios, with its progress, spread its popularity widely in the net world. This paper, based on applications on the PDA terminal, with Samsung S3C2410 processor of the ARM RISC structure for the hardware foundation, takes embedded Linux operating system as the software foundation. It puts forward and studies to design a solution of the network radios player that aims at the PDA terminal. This project takes the high performance processor, the mplayer decoder and embedded Linux Operating system as the core to carry on the system design. It can support the streaming media formats of great majority, and also local audio media files. Key Words Networking Radio PDA ARM Embedded System Player Box目录第一章 绪论11.1.课题背景11.2.论文的研究内容及所作的工作21.3.文章结构及说明2第二章 网络电台播放器的总体设计方案32.1.软件系统的硬件平台选择32.1.1.硬件平台总体架构42.2.软件系统的开发环境62.2.1.嵌入式系统的应用72.2.2.GCC简介72.2.3.GNU Make工具介绍82.2.4.Qt/Embedded 开发环境简介82.2.5.Microsoft Visual C+ 6.0简介112.2.6.Mplayer简介11第三章 系统软件设计133.1.系统总体设计133.2.详细设计143.2.1.电台搜索引擎模块143.2.2.数据库更新模块153.2.3.数据库设计163.2.4.网络电台播放模块173.3.电台搜索引擎试验结果203.4.ARM嵌入式网络播放器试验结果21第四章 总结22致谢语23参考文献24附录25ContentsChapter 1 Preview11.1.The Background Study11.2.Research Object and Related Work21.3.Organization of this Article and Related Descriptions2Chapter 2 The Overall Design on Net Radio Player Project32.1.The Hardware Platform for the Software System32.1.1.Overview of the Hardware Platform42.2.The Software System Developing Environment62.2.1.Application on Embedded System72.2.2.Introduction to GCC72.2.3.Preface of GNU Make Tool82.2.4.Breif Intoduction to Qt/Embedded Developing Enivronment82.2.5.Overview of Microsoft Visual C+ 6.0112.2.6.Summary of Mplayer11Chapter 3 The Software System Design133.1.The Overall Design of System133.2.The Specific Design for System143.2.1.The Radio Search Engine143.2.2.The Database Updating Mould153.2.3.The Database Schema163.2.4.The Networking Radio Player173.3.Experiment Results for The Radio Search Engine203.4.Experiment Results for The Networking Radio Player21Chapter 4 Summary22Acknowlegement23References24Supplement2526第一章 绪论1.1. 课题背景网络广播的兴起与互联网的兴起密不可分。互联网的兴起给广播带来了巨大的冲击,又与传统广播进行着多方位的融合,在一定程度上弥补了广播传播稍纵即逝、仅有声音而无图文、不能自由选听节目的缺憾。网络使广播吸引更多受众的参与,为广播以另一种形态发展提供了条件,这些网络站点不仅仅是那些传统广播站在网络的延伸,由于流媒体技术的成熟,许多个人(播客)或商业门户网站也纷纷推出有针对性的,面对网络的电台,他们是网络广播的主要参与者和中坚力量。网络广播在互联网取得成功的同时,也存在着一些自身发展不足的地方。当前网络广播并没有传统电台广播一样的听众范围,是因为传统广播的接受设备是一只小收音机,不仅价格低廉而且容易携带,操作简使。网络电台的收听设备主要是有固定网络接入的个人电脑,和传统收音机相比,计算机体积较大,并且不易操作,大大地限制了网络电台的发展,而PDA的便携性,网络接口和无线网络接口,刚好可以弥补这个缺陷。随着信息技术的发展和数字化产品的普及,Internet得到广泛的应用,从消费电器到工业设备,从民用产品到军用器材,嵌入式系统被应用到网络、手持通信设各、国防军事、消费电子和自动化控制等各个领域。在此诸多应用当中,智能掌上设备具有广阔的应用前景。其代表性产品PDA(Personal Digital Assistant,个人数字助理)以其携带方便、实用性强等优势成为备受瞩目的明星产品之一。作为一种新型的便携式数字信息产品,PDA在国内己经形成了一个较大的市场。国内主要的PDA厂商包括:方正、海信、金长城、联想、名人、恒基伟业、文曲星、好易通、快译通、蓝德、胜利、海尔、LEO等。然而从2002年开始至今,PDA市场的销售情况出现了持续的下降趋势。据统计除去整个市场大环境欠佳之外,目前PDA产品所存在的问题也是不容忽视的。分析后认为,当前的PDA产品绝大多数都是针对个人的日常事务处理和休闲娱乐而设计的,功能局限在一定的范围之内,相对比较单一。众多的生产厂家竞争的焦点往往集中在了产品的外形、价格、性能上,设计思想并没有多大的发展。虽然近年来,PDA既可以通过上网或调频收听电台,但提供一款及可以通过上网和调频收听电台广播的软件比较少见。目前在应用于PDA的嵌入式操作系统中,Palm OS和微软的WinCE /Pocket PC占据了大多数的市场份额,成为PDA主流操作系统。然而随着嵌入式Linux技术的不断成熟,选用Linux作为操作系统的厂家也日益增多。各个PDA生产商也纷纷推出Linux PDA的计划。而随着Linux在PDA应用上的不断成熟,未来还会有更多的厂商选择Linux。Linux的跨平台特性为PDA功能的扩展提供了方便。基于以上对网络电台和PDA现状的研究和分析,结合当前可以利用的成熟技术,提出了以PDA为基础,实现网络电台播放功能扩展研究。1.2. 论文的研究内容及所作的工作论文设计和实现了一套基于ARM Embedded System的网络电台播放软件,在Redhat 9.0上开发,交叉编译后在傅立叶S3C2410嵌入式高级教学实验箱上调用mplayer实现播放,播放的数据来自电台搜索引擎得到的电台,电台信息存在数据库中,这部分在Windows上用Microsoft Visual C+ 6.0调用MFC库实现。1.3. 文章结构及说明本文分为两部分。第一部分是设计实现电台搜索引擎,收集电台信息,建立电台数据库。逐个检查数据库中的电台播放地址,对其中以*.pls,*.m3u,*.asx结尾的播放地址进行解析,得到是mms,rtsp或其他流媒体协议的播放地址或其他可以直接播放的电台地址,并存在与当前电台相对应的字段中。第二部分是ARM嵌入式平台上电台播放器的开发。在FFT-S3C2410上实现了通过网络播放电台,并且播放器可以播放本地音频文件。论文中首先阐述了当前网络电台的现状及不足,结合PDA的发展状况,点出两者结合的可能性,达到“双赢”的效果。第一章介绍了网络电台的发展历程和现实问题以及PDA技术及其市场现状。第二章介绍了ARM嵌入式系统以及嵌入式Linux技术细节。第三章给出电台搜索引擎的实现及数据库细节。第四章给出电台播放器的实现细节。第五章进一步工作及展望。第二章 网络电台播放器的总体设计方案基于流媒体技术的PDA网络电台播放如图1 所示, 用户通过ADSL 或LAN 或无线网络连接上网络后, 使用网络浏览器登陆网站, 选择某个播放列表进行点播, 这时流媒体服务器和播放终端通过流媒体协议进行数据传输前的协调。协调完毕, 流媒体服务器开始向PDA传送媒体数据流。PDA终端使用播放软件对这些音视频流解码, 并把信息传送到显示屏上播放出来。图表 1网络电台播发器总体设计结构图2.1. 软件系统的硬件平台选择由于项目定位于PDA多功能终端的应用, 需要支持无线上网, 流媒体播放,语音处理等队处理能力要求较高的应用。因此我们选择的开发平台的核心处理器有强大的处理能力, 丰富的接口, 支持DMA 方式, 音频接口以及较低的功耗。同时为了方便软件开发, 需要处理器能够对嵌入式操作系统有较好的支持,图2为开发平台的简单硬件示意图。基于以上考虑, 我们选择了西安傅立叶电子科技有限公司生产的FFT-S3C2410。以下详细介绍平台上的各主要部件。图表 2 开发平台的简单硬件示意图2.1.1. 硬件平台总体架构系统采用西安傅立叶电子科技有限公司生产的FFT-S3C2410为嵌入式开发平台。该平台使用带有ARM920T内核支持的SOC芯片的S3C2410处理器,主频为203MHz,核心板上带有64M NandFlash和64M SDRAM,可升级128M,支持WINCE/Linux/Ucos-II和Qt/Embedded的运行。主板上为处理器提供了一系列的系统外围设备:8寸LCD,触摸屏,10M/100M以太网,IIS音频输入/输出接口。图3为实验箱的实物图。图表 3 FFT-S3C2410实物图1. S3C2410处理器介绍S3C2410 微处理器为手持设备和一般类型应用提供了低价格、低功耗、高性能小型微控制器的解决方案。S3C2410A 的显著特性是它的CPU 核心, 是一个由Advanced RISC Machines 有限公司设计的16/32 位ARM920T RISC处理器。ARM920T 实现了MMU, AMBA BUS 和Harvard 高速缓冲体系结构。这一结构具有独立的16KB 指令Cache 和16KB数据Cache, 每个都是由8 字长的行构成。通过提供一系列完整的系统外围设备, S3C2410A 大大减少了整个系统的成本, 消除了为系统配置额外器件的需要。工作频率最高达到203MHz, 同时具有内存管理单元(MMU), 使得处理器轻松运行于Windows CE, Linux 等操作系统以及进行较为复杂的信息处理。(1) S3C2410芯片集成了大量的功能单元l 内部1.8V,存储器3.3V,外部I/O3.3V,16KB数据Cache,16KB指令Cache,MMU。l 内置外部存储器控制器(SDRAM控制和芯片选择逻辑)。l LCD控制器,一个LCD专业DMA。l 4个带外部请求线的DMA。l 3个通用异步串行端口(IrDA1.0,16-Byte Tx FIFO and 16-Byte Rx FIFO),2通道SPIl 一个多主I2C总线,一个I2S总线控制器。l SD主接口版本1.0和多媒体卡协议版本2.11兼容。l 两个USB HOST,一个USB DEVICE(VER1.1)。l 4个PWM定时器和一个内部定时器。l 看门狗定时器。l 117个通用I/O。l 56个中断源。l 24个外部中断。l 电源控制模式:标准、慢速、休眠、掉电。l 8通道10位ADC和触摸屏接口。l 带日历功能的实时时钟。l 芯片内置PLL。l 设计用于手持设备和通用嵌入式系统。l 16/32位RISC体系结构,使用ARM920T CPU核的强大指令集。l 带MMU的先进的体系结构支持WinCE、EPOC32、Linux。l 指令缓存(Cache)、数据缓存、写缓存和物理地址TAG RAM,减小了对主存储器带宽和性能的影响。l ARM920T CPU核支持ARM调试的体系结构。l 内部先进的位控制器总线(AMBA)(AMBA2.0,AHB/APB)。(2) 系统管理l 小端/大端支持l 地址空间:每个BANK128MB(全部为1GB)。l 每个BANK可编程为8/16/32位数据总线。l BANK0到BANK6为固定起始地址。l BANK7可编程BANK起始地址和大小。l 一共8个存储器BANK。l 前6个存储器BANK用于ROM、SRAM和其它。l 两个存储器BANK用于ROM、SRAM、和SDRAM(同步随机存储器)。l 支持等待信号用以扩展总线周期。l 支持SDRAM掉电模式下的自刷新。l 支持不同类型的ROM用于启动(NOR/NAND Flash、EEPROM和其它)。(3) 芯片封装l 272-FBGA封装2.2. 软件系统的开发环境根据系统目标,我们建立系统的开发环境,一个是在开发板上模拟系统运行进行系统调试的环境,一个是程序的开发平台。电台搜索引擎这部分,为方便开发,我们在Windows上,利用VC+ 6.0 Studio开发工具对其实现,搜索到的数据可以用Microsoft Access 数据库存放。因为开发板上安装的操作系统是Linux,图形界面用QT实现,所以对播放器开发过程,选择在RedHat 9.0上,利用自带的各种编译连接工具和QT库实现,代码编辑可以用QT Designer或简单编辑器编写。系统最终是在开发板上模拟运行,必须对PC上的程序进行交叉编译和移植,需要下载Qt/Embeded库。系统模拟环境是在嵌入式Linux操作系统下进行,运行环境需要Qte库QPE的支持,播放时调用MPlayer解码器。下面详细介绍各部分。2.2.1. 嵌入式系统的应用嵌入式Linux 操作系统越来越多地成为嵌入式系统设计的主流。其具有任务调度、存储管理、消息队列、中断处理等现代操作系统特征; 并且针对嵌入式系统进行了优化, 具有体积小、固化容易、现场实时反应能力强、可靠性好等特点; 而且操作系统本身包含TCP/ IP 协议栈, 以及大量跟硬件相关的驱动程序。另外Linux 操作系统上的开发资源十分丰富, 为嵌入式软件开发人员提供了良好的开发平台。选择Linux为嵌入式操作系统的原因:l 可应用于多种硬件平台。Linux已经被移植到多种硬件平台,这对受开销、时间限制的研究与开发项目是很有吸引力的。原型可以在标准平台上开发然后移植到具体的硬件上,加快了软件与硬件的开发过程。l Linux可以随意地配置不需要任何的许可证或商家的合作关系。l 它是免费的,源代码可以得到。这是最吸引人的。毫无疑问,这会节省大量的开发费用。l 它本身内置网络支持。l Linux的高度模块化使添加部件非常容易。l Linux在台式机上的成功,使大家看到了Linux在嵌入式系统中的辉煌前景。2.2.2. GCC简介Linux系统下的GCC(GNU C Compiler)是GNU推出的功能强大、性能优越的多平台编译器,是GNU的代表作品之一。GCC是可以在多种硬体平台上编译出可执行程序的超级编译器,其执行效率与一般的编译器相比平均效率要高20%30%。GCC编译器是GUN项目中符合ANSI C标准的编译系统,不仅能够编译C、C+和Object C等语言编写的程序,更值得称道的是它还可以通过不同的前端模块来支持各种语言,如Java、Fortran、Pascal、Modula-3和Ada等等。最值得称道的是我们可以通过GCC交叉编译器,在I386-RedHat9.0主机平台上编译生成目标板上可以运行的程序。虽然我们称GCC是C语言的编译器,但使用GCC由C语言源代码文件生成可执行文件的过程不仅仅是编译的过程,而是要经历四个相互关联的步骤预处理(也称预编译,Preprocessing)、编译(Compilation)、汇编(Assembly)和连接(Linking)。 命令GCC首先调用GCC进行预处理,在预处理过程中,对源代码文件中的文件包含(include)、预编译语句(如宏定义define等)进行分析。接着调用cc1进行编译,这个阶段根据输入文件生成以.o为后缀的目标文件。汇编过程是针对汇编语言的步骤,调用as进行工作,一般来讲,.s为后缀的汇编语言源代码文件和汇编,.s为后缀的汇编语言文件经过预编译和汇编之后都生成以.o为后缀的目标文件。当所有的目标文件都生成之后,GCC就调用ld来完成最后的关键性工作,这个阶段就是连接。在连接阶段,所有的目标文件被安排在可执行程序中的恰当的位置,同时,该程序所调用到的库函数也从各自所在的档案库中连到合适的地方。GCC的基本命令格式:gcc optionfilename,其中option为编译选项。2.2.3. GNU Make工具介绍在Linux编程中,我们也经常开发比较大的工程,工程会包含较多的源文件,如果每次用手动键入gcc命令和文件名时,效率会很低,如果使用GNU的make工具能够比较容易的构建一个工程,整个工程的编译只需要一个命令就可以完成编译、连接以至于最后的执行。make命令执行时,需要一个Makefile文件,以告诉make命令需要怎么样的去编译和链接程序。Make的规则是:(1) 如果这个工程没有编译过,那么我们的所有C文件都要编译并被链接。(2) 如果这个工程的某几个C文件被修改,那么我们只编译被修改的C文件,并链接目标程序。(3) 如果这个工程的头文件被改变了,那么我们需要编译引用了这几个头文件的C文件,并链接目标程序。只要我们的Makefile写得够好,所有的这一切,我们只用一个make命令就可以完成,make命令会自动智能地根据当前的文件修改的情况来确定哪些文件需要重编译,从而自己编译所需要的文件和链接目标程序。2.2.4. Qt/Embedded 开发环境简介1. Qt/Embedded简介Qt/Embedded是基于Qt的嵌入式GUI和应用程序开发的工具包,它可运行多种嵌入式设备上,主要运行在嵌入式Linux系统上,并且需要C编译器的支持,并为嵌入式应用程序提供Qt的标准API。 Qt/Embedded 的API是基于面向对象技术的。在应用程序开发上使用与Qt相同的工具包,只需在目标嵌入式平台上重新编译即可。使用所熟悉的桌面开发工具,来编写和保存一个嵌入式应用程序的源代码树,在移植到多种嵌入式平台时,只需要重新编译代码。 Qt/Embedded提供自身的轻量级窗口系统,比使用Xlib和X Window更加紧凑;Qt/Embedded 的设计原则是不依赖于X server或者Xlib,而是直接访问帧缓存(framebuffer),同其他解决方案如Qt/X11相比这样做最显著的效果是减少了内存消耗。只需要一个Qt/Embedded动态链接库就足以替代X server、Xlib库和其他嵌入式解决方案的图形工具包。 Qt/Embedded还可以在编译时去掉运行时所不需的特性,以减少内存的占用。Qt/Embedded 也提供了一种类型安全的被称之为信号与插槽的真正的组件化编程机制,这种机制和以前的回调函数有所不同。Qt/Embedded的底层图形引擎基于framebuffer。Framebuffer是在Linux内核架构版本2.2以后推出的标准显示设备驱动接口。采用mmap系统调用,可以将framebuffer的显示缓存映射为可连续访问的一段内存储针。Framebuffer驱动程序的实现分为两个方面:一方面是对LCD及其相关部分的初始化,包括画在缓冲区的创建和对DMA通道的设置;另外一方面是对画面缓冲区的读写,具体到代码为read、write、lseek等系统调用接口。现在许多第三方软件公司开始采用Qt/Embedded开发嵌入式Linux下的应用软件。其中非常著名的Qt Palmtop Environment(Qtopia)早期是一个第三方的开源项目,并已经成功应用于多款高档PDA。Trolltech公司针对Smart-Phone中的应用需求,于2004年5月底发布了Qtopia的Phone版本。Qtopia是基于qt/embedded程序库编写的应用程序环境, 是针对运行嵌入式Linux的移动计算设备和手持设备所开发的开放源码的一套应用程序包和开发库,界面优美。主要应用于高端手机,PDA等嵌入式系统,具有广阔的发展前景。以下就进一步介绍如何交叉编译Qte以及移植*.so库至实验板。2. Qt/Embedded的交叉编译及移植l 配置Qt/Embedded-Free-3.2.0的安装因为程序功能的需要,我们需要QTE3.0以上版本的库文件,所以接下来着重介绍Qt/Embedded-Free-3.2.0的交叉编译和移植过程。与QTE相对应的Qtopia版本需要2.0以上,在FFT-S3C2410开发板上,在默认的目录里已经存在Qtopia 2.0的库文件,所以不需要重新交叉编译,移植。编译QTE3.0以上版本的库文件需要qmake工具,在下载下来的QTE包中,已经包含一个qmake目录了。以下是交叉编译步骤:tar qt-embedded-free-3.2.0.tar.gzcd qt-embedded-free-3.2.0export QTDIR=$PWDexport QTEDIR=$QTDIRexport PATH=$QTDIR/bin:$PATHexport LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATHmake clean./configure xplatform /qws/linux-arm-g+ -shared release no-cups no-qvfb depths 4,8,16,32make sub-src这一步是编译生成库文件,但不编译其他的(如tools、examples目录下的东西)。编译完成会在lib目录下生成库.在lib目录下面可以看到libqte.so、libqte.so.3、libqte.so.3.2,libqte.so.3.2.0这四个库。这四个库的关系如下:libqte.so - libqte.so.3.2.0libqte.so.3 - libqte.so.3.2.0libqte.so.3.2 - libqte.so.3.2.0libqte.so.3.2.0我们可以使用file命令来查看libqte.so.3.2.0是否是我们需要的在开发板上跑的库。File libqte.so.3.2.0libqte.so.3.2.0: ELF 32-bit LSB shared object,ARM,version 1(ARM),not stripped如果得到的是上面这些信息,说明交叉编译qte库成功。下面我们就可以把这四个库移植到开发板的/qt/lib/目录下了。l 移植首先要建立宿主机和开发板的通讯,设本机的ip地址为00并且设/root/share为共享文件夹。打开minicom控制台,初始化完成之后,在控制台中输入:mount t nfs o nolock 00:/root/share /host将文件复制到开发板上cp arf /$QTEDIR/lib libqte.so* /root/sharecp arf /mnt/nfs/libqte.so* /qt /qt/lib至此,qte交叉编译和移植完成。2.2.5. Microsoft Visual C+ 6.0简介Microsoft Visual C+ 6.0(MSVC)是美国微软公司的C+开发工具,是具有集成开发环境的产品,可提供编辑 C,C+以及C+/CLI programming language等电脑语言。VC+ 整合了便利的除错工具,特别是整合了微软视窗程序设计(Windows API)、3D动画DirectX API, Microsoft .NET Framework。Visual C+以拥有“语法高亮”, IntelliSense (acoding autocompletion feature)以及高级除错功能而著称。比如,他允许用户进行远程调试,单步执行等。还有允许用户在调试期间重新编译被修改的代码,而不必重新启动正在调试的程序。Microsoft Visual C+ 6.0为程序员提供MFC编程,提高编程效率。在VC6.0开发平台上,支持MFC的开放式数据库链接(ODBC)。MFC,是一个微软公司提供的类别库(class libraries),以C+类的形式封装了Windows的API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含的类包含大量句柄封装类和很多Windows的内建控件和组件。MFC的主要优点是可以用面向对象的方法来调用Windows API,以及应用程序开发的便捷。MFC将很多应用程序开发中常用的功能自动化,并且提供了文档框架视图结构和活动文档这样的便于自定义的应用程序框架。同时,在Visual C+内部也内建了很多对MFC的例如类向导这样的支持以减少软件开发的时间,使用类向导可以生成从hello world这样的简单程序到活动文档服务器这样的复杂程序。MFC的消息映射机制也避免了使用性能较低的庞大虚函数表。2.2.6. Mplayer简介Mplayer是一个面向Linux操作系统(也包括Unix操作系统)的媒体播放软件。它能通过使用一些本地的编码器如XAnim,RealPlayer,和Win32 DLL,来播放大多数MPEG,VOB,AVI,OGG,VIVO,ASF/WMV,QT/MOV,FLI,RM,NuppelVideo,yuv4mpeg,FILM,RoQ文件。另外,你还能通过Mplayer观看VideoCD,SVCD,DVD,3ivx,RealMedia,和DivX格式的电影(不需要avifile库)。Mplayer的另外一个特点是支持各种各样的输出驱动程序。它可以在X11,Xv,DGA, OpenGL,SVGAlib,fbdev,AAlib,DirectFB下工作,而且你也能使用GGI和SDL(由此可以使用他们支持的各种驱动模式) 和一些低级的硬件相关的驱动模式(比如Matrox,3Dfx和Radeon,Mach64,Permedia3)!他们大多数支持软件或者硬件缩放,因此你能在全屏下观赏电影。MPlayer还支持通过硬件MPEG解码卡显示,诸如DVB 和DXR3与Hollywood+。可以使用European/ISO 8859-1,2(匈牙利语,英语,捷克语等等),西里尔语,韩语的字体的清晰放大并且反锯齿的字幕(支持10种格式),和on screen display(OSD)。第三章 系统软件设计3.1. 系统总体设计整个系统被设计为六大功能模块:电台搜索引擎模块,数据库更新模块,服务器模块,电台网页显示模块,电台地址解析模块,网络电台播放模块。系统的总体架构图,如图4所示。图表 4系统功能模块图在图4中,电台搜索引擎模块,主要功能是搜集 网站的网络电台信息,把搜索到的电台信息存放在数据库;服务器端模块,主要功能是用于存放和管理电台数据库用的;数据库更新模块,主要功能是把网站中新添加的电台纪录进行更新到数据库中;电台地址解析模块,主要功能是对搜索到的电台地址进行清洗和解析,得到是流媒体协议的电台地址或可以直接播放的电台地址;电台网页显示模块,主要功能是读取服务器端中的数据库的电台数据,用网页的形式显示给用户;网络电台播放模块,主要功能是提供播放器播放网络电台和浏览电台相关信息。下面我主要解释电台搜索引擎模块、数据库更新模块、数据库模块,网络电台播放模块的详细设计和实现。3.2. 详细设计3.2.1. 电台搜索引擎模块图表 5电台搜索引擎运作流程图图5 是该模块的运作流程图,电台搜索引擎是针对特定网站搜索的,我们选择网络电台网站,这是一个免费电台播放站点。网站电台按类型和地域两大标签来组织。电台搜索引擎的功能就是从这两个分支开始的。首先,程序须从首页开始,提取出任何可能包含电台记录的各个网页地址(首页分析,类GetFinalLocWeb)。下一步,就对这每一个网页进行分析(类HtmlCodeParsing),取得每一个电台的播放地址及相关信息。在第一步收集网页地址的过程中,因为按类型和地域分类的电台的组织层次不一样,处理过程也不一样。在网站的首页中,点击按类型组织的表中的各种不同类型的链接,直接可以进入该类型的网页。网页包含了属于这个类型的每个电台,从首页进入该页面,只有一个链接,这样我们就得到我们需要的网页链接,把这个类型的网页地址保存到类型数据表(表格3)中,为下面的具体电台搜索提供链接;而点击按地域组织的表中的各个不同的地区链接,会得到两种不同的电台网页组织结构,一种是在网页里直接列出属于这个地区的各个国家的名称和属于该国家的电台,遇到这种情况需要保存这个地区的网页地址到地域数据表中,而另外一种情况是在网页里列出属于该地区的各个国家的链接,结果你无需保存这个地区的链接地址,但必须保存这个网页里的各个国家链接地址到类型数据表(表格1)中。这个步骤完成之后,进行下一步网页分析过程。在网页分析(类HtmlCodeParsing)过程中,我们需要下载网页(GeneralProcedure中的OpenWebsite函数),这些网页的链接存在表格1和表格3中。因为各个网页的电台记录的组织表格不一样,有3个字段的,4个字段的,5个字段的三种形式。但无论是那种形式的表格,每个表格的前三个字段都包含有Radio Station, Location, Listen Live。所以在下载网页后,提取电台记录之前,先判断网页中的表格字段数值(类GeneralProcedure中的GetNumofColumn函数)。有了这个值之后,每个网页的电台纪录提取和存储过程都一样,只是多了判断是否还有电台信息可以继续提取,提取的电台信息包括电台名称(getStationName函数)、电台首页(getStationWeb函数)、电台地域(getStationLoc函数)、流媒体格式(getMediaType函数),比特率(getMediaBitRate函数)和比特率相对应的播放地址(getHrefBitRate函数)。在存储(SetRadioInfo函数)的时候需要一个判断,判断该电台纪录是按什么方法被分类(类型或地域)的,这对存储正确,完整的电台信息非常重要。当搜索完成时,系统会弹出窗口提醒用户。3.2.2. 数据库更新模块这一模块的流程图在图3已标出。在这个网站中,有一个更新网页,网页列出最近时间更新的电台。该模块就是针对这个网页设计的,当运行系统时,这个模块可以提醒用户最近更新的时间,帮助用户及时更新数据库。因为更新网页的链接固定,所以更新时,系统无需访问数据库,直接连接默认地址。更新网页的结构与其他包含电台纪录的网页的结构一样,也是按表格的形式组织的,只不过它的第一个字段是最近更新时间字段(Date),后面4个字段与其他的包含4个字段的网页一样,所以提取更新网页的电台记录(GetNewAdditionals函数)与搜索引擎模块提取电台的纪录过程(GetRadioInfo函数)不一样,但存储记录过程用的是同一个函数(SetRadioInfo函数)。3.2.3. 数据库设计系统选择Microsoft Access(.mdb)存储电台数据。数据库包含Country、stationFormat、StationInformation三个表。下面详细介绍这三个表。表格 1 country表字段名称数据类型备注countryID长整型主键countryName文本国家名称stationWebByLoc文本国家链接地址 表格 2 stationInfomation表字段名称数据类型备注stationID长整型电台序列号originalDownloadURL备注电台原下载地址stationURL文本可直接播放地址(主键)stationName文本电台名称stationFormat文本电台类型stationHomePage文本电台网站streamingBandWidth文本比特率country文本国家名称StationLocation文本电台地理位置language文本电台广播语言mimeType文本电台多媒体类型description文本电台说明broadcastBand文本播放频段Frequency文本广播频率表格 3 stationFormat表字段名称数据类型备注formatID长整型主键mediaFormat文本电台类型名称formatPage文本各类型网页链接3.2.4. 网络电台播放模块该模块在ARM 嵌入式开发板上实现一个网络电台播放器,通过开发板上的网络接口与互联网相连,下载播放列表播放电台。图6为该模块的具体框架图。图表 6 网络电台播放器具体框架图播放列表界面,电台信息显示界面被主界面调用,显示在主界面当中,主界面还包含播放电台的各个控制按钮和显示播放文件的基本信息编辑框。主界面的各种操作和显示通过控制模块与播放进程进行交互,操作对象是播放列表中的当前对象。1. 播放列表界面在这个界面(PlayList类)中,播放器可以随意添加一个播放列表或当地音频文件,也可以减少当前播放列表中的文件,还有上移文件,下移文件的功能。这个类继承于QWidget类,在这个窗口中生成一个table,用于列出添加的电台的基本信息和添加的当地文件的信息,这个窗口还包含了添加、删除,上移和下移按钮,如表格 4列出具体细节,每个按钮是imagebutton类,继承于QButton。表格 4添加文件按钮,快捷键是A.减少文件按钮上移文件按钮下移文件按钮2. 电台信息显示界面这个类(InfoList类)继承于QWidget类,界面中生成一个table,用于列出播放列表中当前电台的相关信息,但对当地文件无效。当当前的电台改变时,它就读取播放列表文件,显示相关信息,表格 5为具体细节。表格 5Country电台所属国家City电台所在地Band点台播放波段Bit Rate比特率Format电台类型Frequency播放频率Language播放语言Abstract电台摘要3. 主界面模块主界面类(mainForm类)也继承于QWidget类,除了包含电台信息显示界面和播放列表之外,在界面的底层还有一播放控制区域。这个区域不但包含那些控制按键,而且还包含4个QEditLine编辑框,用于显示当地媒体文件的名称、作者、专辑和已播放时间长度/总播放时间长度信息。这个类除了初始化界面,还测试机器音频的各种参数。表格 6详细介绍控制功能,每个按钮是imagebutton类,继承于QButton:表格 6播放当前文件的上一个文件。快退按钮。如果当前文件是电台,则重新连接。播放按钮,快捷键是P。暂停按钮。停止按钮。快进按钮。如果当前文件是电台,则重新连接播放当前文件的下一个文件。推出界面按钮全屏幕按钮静音按钮这些按钮发出的信号被播放器控制模块的相应槽接受处理,下面详细介绍播放器控制模块。4. 播放器控制模块这个类(Controller类)是整个播放器的枢纽,它接受从主界面发出的信号,找到与之匹配的处理函数(槽)完成相应的功能。信号分为两种情况,一种是对界面的状态进行修改的信息,另外一种情况是对当前播放的文件进行控制操作。对于第一种情况,相应的操作(比如actionExit,actionSeekTimeValueChanged等)在本模块内完成,无需交给其他类处理;对于第二种情况,相应的槽(比如actionFastforward,actionReadAlbum等)会对接收到的信息进行判断,设定播放器的控制参数,防止播放器做出不匹配的动作,或造成播放不正常,接着函数会发出新的信号给播放进程,让播放进程去处理相应的动作。5. 播放进程这个类(PlayFile类)生成唯一一个进程,用该进程调用mplayer,并附给mplayer相应的播放参数和文件名称(startMPlayer函数),保证每一次只能播放(Play函数)一个文件。这个类制定了各种控制函数(比如Play,Skipforward等)用于设定线程参数,提供了外部对象可以对播放过程进行监视和控制的接口。在播放当地文件时,在这个类里也编写了函数(readFromStdout函数),用于读取线程的输出,从这些输出数据可以提取文件的各种播放信息,返回(Filename,Title等操作)给界面显示。3.3. 电台搜索引擎试验结果开始运行时,会跳出对话框,让你选择数据源,接着弹出窗口,输入/index.html,点击Go开始。当运行完获取国家或地区的链接地址后,会弹出窗口提示总共存储了多少个记录,之后自动开始分析网页。过3,4分钟后弹出分析类型网页完毕的提示窗口,再过4,5分钟弹出分析按地理类型分类的网页完毕的提示窗口,最后谈出done窗口,全部运行结束,打开数据库,全部电台纪录已下载,总共10557条。对数据库进行更新,第一次更新时,无最近更新时间提醒,点击Update按钮开始运行,运行结束,会弹出窗口提示更新的电台数量,并在窗口提示最近更新时间。如果不是第一次更新,则运行程序时,会在编辑框上提示上一次更新时间,提醒用户对数据库更新,点击Update按钮后,接下来的情况与上一种情况一样,如果没有更新电台,会提示用户总共更新0个电台。图7为运行界面图表 7 电台搜索引擎运行界面3.4. ARM嵌入式网络播放器试验结果在PC机上实现功能以后,启动一个终端,把当前目录转到工程目录下,检查q
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 教育信息化特殊教育辅助计划
- 桥梁监测与检测方案
- 2025年互联网金融科技服务平台金融科技风险控制与合规经营
- 教育行业2025年人才流失问题分析及吸引人才策略研究报告
- 2025年装配式建筑部品部件标准化设计在装配式建筑装配式建筑技术创新中的应用报告
- 2025年分布式光伏BIPV市场技术创新与推广策略研究报告
- 城市自来水厂升级改造工程2025年初步设计及公众参与评估报告
- 茶文化项目策划书
- 煤炭清洁高效燃烧技术在我国农村能源消费领域的应用研究报告
- 2025年康复医疗服务体系与康复康复服务政策研究的运营模式分析报告
- 药品停产管理办法
- 2025年《临床输血技术规范》
- 2025年江苏无锡离婚协议书
- 人员管理办法格式范本
- 北京员工待岗管理办法
- 2025年国家电投校园招聘笔试考点考试题库及答案
- 语文老师职业试讲课件
- 肾损伤诊疗与护理常规
- 车棚建设与光伏发电项目合作协议
- 消防维保质量管理及保证措施
- 转岗安全培训课件
评论
0/150
提交评论