《RDS数据处理系统设计毕业论文(31页).doc》由会员分享,可在线阅读,更多相关《RDS数据处理系统设计毕业论文(31页).doc(32页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-RDS数据处理系统设计毕业论文-第 27 页摘要与传统调频广播系统相比,RDS广播系统具有如交通公告、广播寻呼等额外功能,适合传输对数据率要求不高的实时文字信息,提高了广播通信的频率利用率,该系统可广泛应用于车载移动多媒体中。本课题旨在依据广播数据系统技术规范使用C+编程语言对RDS数据进行类封装,然后定义类对象,通过调用类方法将数据解析成对应的文本信息,使用虚拟串口及MFC中封装好的CFile类实现对RDS数据的接收以及将解析后的文字保存和发送,并利用微软提供的SAPI完成语音化模块,将解析得到的文字信息转换成语音信息进行播放。这样就形成了一套面向RDS数据处理的软件平台,实现对数据进行接
2、收、解析、显示、存储、语音化等一系列功能。关键词: RDS ,串口通信,数据封装 ,语音化 AbstractCompared with the conventional FM radio system,RDS possesses the additional function such as traffic announcement, radio paging and so on.The system is suitable to transmit the real-time text messages whose data rate requirement is not high.which
3、 improves the frequency efficiency of the broadcast communication.The system is widely applied in vehicle mobile multimedia.This design aims at packaging the RDS data according to the The Standard for RDS technique by means of C+ programming language,then define an object for the class,translate the
4、 data into corresponding text information by calling the methods for the class.Make use of the virtual serial port and CFile class in MFC to receive RDS data or store and send the text,and finish the phonic realization part through the SAPI supported by the Microsoft,convert the translated text into
5、 voice and broadcast them.In this way a software platform for RDS data processing system developed,which realizes those functions as data receiving,analyzing,showing,storing and phonic realizing.Keywords: RDS;serial communication;data packaging;phonic realization目录摘要iAbstractii第1章 绪论11.1 研究背景及意义11.2
6、 国内外研究现状21.3 发展趋势及展望21.4 本文主要内容及章节安排2第2章 RDS数据42.1 RDS数据内容及帧结构42.2 RDS数据信息7第3章 软件介绍93.1 Microsoft Visual Studio 201093.2 串口调试助手93.3 VSPM虚拟串口10第4章 系统程序设计114.1 系统概述114.2 RDS数据类定义124.2.1 定义基类124.2.2 定义各组数据类124.3 模块设计134.3.1 接收模块134.3.2 解析模块154.3.3 显示模块204.3.4 存储模块264.3.5 语音模块274.4 程序调试及运行结果294.4.1 设置虚拟
7、串口294.4.2 运行程序31参 考 文 献35致 谢36第1章 绪论当代社会信息技术高速发展,广播作为一种传输信息的手段为人们广泛接受和使用。然而提到“广播”二字,人们想到的都是音频信息,实际上并非如此,在传输声音的同时还可以利用很小的一段频率资源来传送文字等信息,这样就提高了频率利用率,也丰富了通信内容,这种技术的发展造就了RDS广播数据系统。1.1 研究背景及意义广播数据系统(Radio Data System ,RDS)是在现有调频广播系统的基础上进行了一定的改造, 在频率范围为87.5MHz至108MHz的单声道广播信号或调频立体声基带频谱的上边界( 57kHz2.4kHz)外增添
8、一个副载波信道,传输速率为1187.5bps,因此十分适合传输对数据率要求不高的实时文字信息【1-4】。也就是说,在使用了RDS技术的调频广播中,除了传送一套立体声节目外,也可以同时传送听不见的广播数据,包括符号、数字和文字等内容,为广大静止的和移动的听众提供多种服务。因此,与传统的调频广播系统相比,RDS广播系统拥有如:台名显示,标准时间、交通公告、天气预告、节目类型、交通信息广播等附加功能【3】。目前,社会不断进步,信息技术更是时刻都在迅猛发展,人们对传播媒体的要求也越来越高,对通信业务的需求量也越来越大,人们希望在听到声音的同时还能看到相应的信息,这样看来,传统的调频广播已经无法满足这些
9、需求,无线广播频谱资源也就显得弥足珍贵。因此,研究如何高效地利用有限的频谱资源为用户提供更多的服务具有非常重要的现实意义。RDS技术的使用正是体现了高效利用频谱资源这一大特点。通过对RDS数据信息进行相应处理,可以将数据信息反映在显示屏上,使得用户对一些重要信息一目了然,这样就弥补了传统调频广播只有音频信号这一缺陷,并且这种技术不需建造众多的转发站,是一种高效的信息传送手段,具有节省频率资源、时效性高、投资省、覆盖范围大等突出优点,并且具有明显的社会经济效益。 1.2 国内外研究现状20世纪70年代初期,联邦德国开发了一种为汽车驾驶人员服务的广播信息服务(ARI),ARI附加在调频广播中,能够
10、帮助识别各米波调频广播,解决了在驾车行程中由于调频发射机服务区比较小而经常需要重调收音机的问题。由于功能有限,远不能满足需要。不久,欧洲广播联盟组织成立,开发了广播数据系统(RDS),并于1984年公布了首份RDS系统的技术规范。经过20多年的发展,RDS技术已经逐渐成熟, 其在美国和欧洲被人们广泛地运用于手机终端、家庭影院和车载收音机等设备中,然而我国的信息化建设尚未达到十分健全,RDS还没有得到在应用上的推广【6,7】。RDS具有很大的技术优势和商业价值,我国的相关技术人员也针对无线广播的现状进行了一定研究,随着各专家学者研究工作的不断深入,无线广播的各种价值和潜能也不断得到了开发和应用。
11、我国信息化建设正在不断发展,信息化网络也正在不断完善,今后,融入多媒体信息技术,发挥娱乐性、方便性、商业性、经济性等优势,是无线数据广播的趋势和目标。 目前,在我国高速公路广播中,希望利用RDS功能来增加终端用户需要的实用信息和功能,帮助用户收听各类节目以及对正在收听的节目提供补充信息,此外还能提供一些针对突发事件的临时播报功能。1.3 发展趋势及展望RDS技术可以广泛应用于车载移动多媒体中,近年来,车载移动多媒体系统逐渐成为全球范围内一种新型的高技术产业,车载信息系统包括汽车电脑、智能导航仪、行车记录仪、车载多媒体等。RDS主要用于信息公告、交通管制、自动调频和导航等功能。通过软件编程设计一
12、套RDS数据处理系统,实现对RDS数据的接收、翻译、显示、音频转化等功能模块,并且各个功能模块可以独立封装,这样便于系统移植,对于将来想要在任何地方使用RDS的设备来说将是十分方便儿经济的【8】。1.4 本文主要内容及章节安排本设计旨在开发一套面向RDS数据处理的软件平台,在充分理解并且掌握RDS数据的基础上实现对RDS数据的接收、解析、存储、封装、语音化等功能,最终尝试配合相关硬件实现RDS数据完整的处理链, RDS数据处理系统功能如图1.1所示,设计所使用的软件开发平台为Microsoft Visual Studio 2010,设计的核心内容即充分利用C+语言编程的最大特点面向对象设计方法
13、,也就是定义一些数据类,将其封装,并利用MFC中封装好的一些类及其方法对数据进行处理。从虚拟串口或硬件接收机接收RDS数据将二进制数据解析成相应文字或控制信息显示文字信息控制相应功能播放文本信息存储查看图1.1 RDS数据处理系统功能图论文章节安排如下:第一章 :介绍RDS广播数据系统的发展历史及研究现状。第二章 :介绍RDS数据,包括每种组数据的帧结构、各个信息位的定义以及对应文字信息代表的内容。第三章 :对系统设计所使用的软件开发环境Microsoft Visual Studio 2010及辅助测试软件(VSPM、串口调试助手)介绍。第四章 :详细论述了程序设计的各个部分,首先对RDS数据
14、进行类定义,包括变量及方法,然后对数据处理的各个功能模块进行设计并完成界面设计,最后进行系统功能测试并对结果进行分析。第2章 RDS数据RDS数据系统的设计即围绕RDS数据展开,1984年,欧洲广播联盟公布了首份RDS技术规范,其中定义了RDS数据。我国的RDS相应规范为GB/T15770-1995广播数据系统(RDS)技术规范。 2.1 RDS数据内容及帧结构要完成RDS数据处理系统的设计首先需要将RDS数据定义为一种类,用C+语言定义这种数据类就要充分理解和掌握RDS数据的帧结构和数据内容。RDS数据发送的基本单元称为组,RDS数据共有16种类型:group 0A,group 0B,gro
15、up 1A,group 1B group 15A,group 15B,共32种组。每一个组(group)由4个块(block)组成:A块、B块、C块和D块 ,每块有26位,其中前16位为有效位,后10位为校验位和偏移位,为消息提供误码校验和块、组同步【9,10】,因而一帧RDS数据共有106位,数据帧结构如图2.1所示:图2.1 RDS数据帧结构 1 group =104 bit ABlock (26bit)BBlock(26bit)CBlock(26bit)DBlock(26bit)组类型其它(5bit) 组行码(4Bit)节目类型 PTY(5bit)交通节目码0-150=A1=B0-31A
16、3 A2 A1 A0 B0 TP PT4 PT3 PT2 PT1 PT0 校验码偏置字校验码偏置字校验码偏置字校验码偏置字PI码RDS数据内容包括电台类型、节目类型、交通公告、标准时间、天气预报等,同时提供了开放式数据接口,为特殊要求用户提供数据文本通道。RDS数据各组块内容说明如下:1. A块:PI节目码(16位)以及位校验码和偏移字(10位),是快速寻找RDS数据头的依据,PI码是根据特定地区,由EBU组织进行划分的,包括国家识别码、区域识别码和节目基准号;2. B块:Group type code(4bit),0-15共16种;B0 (1bit)表示类型版本:0表示A版,1表示B版,版本
17、A仅A数据是PI码,版本B中A块和C块数据均为PI码;TP(1bit),标志是否收到交通信息通告;PTY (5bit)表示节目类型;剩余5bit,不同组型内容不尽相同;3. C块和D块的具体内容也随group类型不同具有不同的安排,各组数据内容说明如下:1) 0A组:交通公告识别码TA(1bit),音乐/语言切换M/S(1bit),解码器识别码DI(1bit),DI段地址(2bit),可选频率表AF(16bit),节目业务名称PS(16bit)。2) 0B组:交通公告识别码TA(1bit),音乐/语言切换M/S(1bit),解码器识别码DI(1bit),DI段地址(2bit),节目业务名称PS
18、(16bit)。3) 1A组:广播寻呼吗(5bit),慢标志码(16bit),节目栏信号PIN(16bit),包括日(5bit),小时(5bit),分钟(6bit)。4) 1B组:空闲位(5bit),节目栏信号PIN(16bit),包括日(5bit),小时(5bit),分钟(6bit)。5) 2A组:文本A/B标志(1bit),文本段地址(4bit),两块广播文本RT(16bit)。6) 2B组:文本A/B标志(1bit),文本段地址(4bit),一块广播文本RT(16bit)。7) 4A组:空闲位(3bit),约简儒略日码(17bit),小时码(5bit),分钟码(6bit),本地时间差(6
19、bit),用于发送本地时间。8) 5A组:地址识别码(5bit),两块透明数据信道TDC(16bit)。9) 5B组:地址识别码(5bit),一块透明数据信道TDC(16bit)。10) 6A组和6B组:内部数据应用。11) 7A组:寻呼类型A/B(1bit),寻呼段地址码(4bit),两块广播寻呼RP(16bit)。12) 8A组:TMC应用。13) 9A组:紧急报警系统EWS(37bit)。14) 10A组:Program Type Name。15) 13A组:网络相关信息和paging traffic。16) 14A和14B:增强的其他相邻网络信息EON。17) 15A组和15B组:包含
20、交通公告的文本信息和交通报警,用于快速调谐和基本开关信息。18) 3A 3B 4B 7B 8B 9B 10B 11B 12A 12B和13B用于开放数据应用,目前在RDS技术规范中没有明确定义。2.2 RDS数据信息接收到的RDS数据均为二进制的形式,依据RDS数据帧结构可以定义出RDS数据类,而要把不同组块中丰富的信息解析成文字及相应的控制信息需要掌握RDS数据信息,RDS数据信息表如表2.1:表2.1 RDS数据信息表RDS数据信息介绍节目识别码PI用于区别不同国家或地区发射同一节目的代码。当接收机调谐到的节目接收状况欠佳时,可利用此消息使接收机自动搜索另一替代频率节目业务名称PS1个双字
21、节或2个单字节字符,用于显示正在收听的广播节目的业务名称节目类型PTY节目类型识别码,指明正在播出的节目类型,接收机按此识别码接收以及录制这一类型的节目交通节目识别码TP一个开关信号,通过接收机上的相应指示灯指明正在收听的节目业务是否是播放交通公告的节目交通公告识别码TA一个切换信号,指明是否正在广播交通公告。收到TA信息时,可利用这个信号从其他工作模式转到广播模式或实现增大音量等相似工作切换频率AFAF表给出同一个或相邻接收区内广播同一节目的各发射机的频率信息,接收机存储此表以减少搜索替换频率的时间解码器识别码DI一个切换信号,指明广播节目处于16种工作模式中的哪一种或是哪几种的合成音乐/语
22、言切换M/S一个双状态信号,指明正在广播的是音乐类还是语言类节目,听众可根据此信号调整收音机音量以达到最佳效果节目栏目号PIN广播电台公布的节目开始时间,接收机利用该信号选定将要收听的节目。节目即使推迟,PIN也保持不变,接收机可以使用这个信号自动接通电源或开始录音广播文本RT根据一定编码规则的字符串,可在装有显示屏的接收机上显示增强的其他网络信息EON此信息用于更新调谐节目业务之外的其他节目业务的PI、PIN、PTY、TA和AF等信息。有EON功能的接收机既可收听调谐节目,也可收听相互参照的其他节目的交通公告透明数据信道TDC有32个子信道的数据信道,用来传送单字节图形字符或者双字节图形字符
23、或者计算机程序以及类似的不需要显示的数据内部应用IH只有在广播组织内的编码数据信息的内部应用,通过各种广播公司决定其使用时间和日期CT广播时间和日期码。听众并不直接使用这个信息,接收端将其转换成本地时间。在有GPS 的汽车影音系统中,可以用广播时间和日期码以及GPS系统时间校正汽车影音系统时间广播寻呼RP使用现有广播系统作为传输系统进行广播寻呼紧急报警系统EWS提供在紧急情况下使用的信息,接收端可自动调谐并且辨别该信息交通信息道TMC传送交通信息的编码定位和导航LN此特性给出有关发射台的位置信息,为导航和定位提供相应数据数据解析后需要显示的信息有PS、PI、PTY、CT,这些信息将直接显示在接
24、收机的显示器上;数据控制信息有AF、TA、TP,这些信息在接收机上有控制按键需要用户操作,操作后也会有相应的图标显示在接收机显示器上,目前在基于软件的处理上要完成提取出各种信息并解析显示出来。第3章 软件介绍系统设计主要使用的软件平台为Microsoft Visual Studio 2010,在系统功能测试时需要用到的辅助软件有VSPM以及软件调试助手。3.1 Microsoft Visual Studio 2010Visual Studio是微软公司研发的开发环境,是目前最流行的Windows平台的应用程序开发环境,本系统设计主要采用C+语言编写,并利用MFC完成,需要自定义数据类以及调用M
25、FC中的类,完成界面设计,从而完成整个系统的设计。C+计算机编程语言已经被人们广泛的使用,它支持数据抽象、面向对象程序设计等多种程序设计风格。面向对象的设计思想是在原来结构化程序设计方法基础上的一个质的飞跃,C+完美地体现了面向对象的各种特性:包括封装性、继承性以及多态性【1117】。MFC(Microsoft Foundation Classes微软基础类),是微软公司提供的一个类库,以C+类的形式封装了Windows的API,并且包含一个应用程序框架,随微软Visual C+开发工具发布,其中的类包含了大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。该类库提供一组
26、通用的可重用的类库以供开发人员使用。MFC应用程序的总体结构通常由开发人员从MFC类派生的几个类和一个CWinApp类对象(应用程序对象)组成,并且提供了MFC AppWizard 自动生成框架。本系统建立的工程是基于MFC对话框设计而成,主要需要自定义RDS数据类,此外还要用到MFC中的CFile类,它直接提供非缓冲的二进制磁盘输入/输出设备,并直接地通过派生类支持文本文件和内存文件。设计中主要用到Open、Store、Seek等方法。在做界面设计的时候可直接使用MFC中提供的控件,例如按钮控件、静态文本框控件以及串口通讯控件等。3.2 串口调试助手串口调试助手是一种用来进行串口调试的工具,
27、该软件可以自动识别串口,设置数据位、校验位和停止位,并可以ASCII码或十六进制的形式接收或发送数据或字符,还能将接收数据保存成文本文件,也能发送任意大小的文本文件,在测试系统接收数据功能时需利用此软件为解析程序发送RDS数据。3.3 VSPM虚拟串口VSPM虚拟串口软件可以将TCP/IP连接,并映射成本机的虚拟COM口,应用程序通过访问虚拟串口,就可以完成远程控制、数据传输等功能。VSPM可以运行在Client模式、Server模式和UDP广播模式,Client模式下,VSPM软件将主动向远程设备发起连接,Server模式下,VSPM软件监听串口服务器发起的连接,UDP广播模式下,VSPM将
28、使用UDP广播数据包发送数据到网络。设计中需要打开两个虚拟串口,分别设置为Client模式和Server模式,在利用虚拟串口发送接收数据的时候,Client模式的虚拟COM口与串口调试助手相连接,Server模式的虚拟COM口与解析程序相连接;在将解析后的文本信息语音化的时候,Client模式的虚拟COM口与解析程序相连接,Server模式的虚拟COM口与语音化程序相连接。第4章 系统程序设计整个RDS数据数据处理系统是完全基于软件进行设计的,使用C+编程语言,实现面向对象的程序设计。 4.1 系统概述本系统主要针对RDS(广播数据系统)数据结构开发出一个能对RDS数据进行处理的系统软件,根据
29、RDS各个数据位解析出希望得到的信息,本系统由RDS 数据接收、RDS 数据解析、RDS 数据音频转化、RDS 数据存储等功能模块组成,通过串口接收RDS数据,然后对接收到的RDS数据进行存储并解析,并利用MFC编程设计出界面对解析后得到的信息进行显示,对必要的文本信息进行音频转化并播放出来,这样不仅可以满足人们的可视化需求,而且能够方便的播放出有用的文本信息,使用户获得丰富的视觉和听觉体验。系统框图如图4.1开始结束打开串口,接收RDS数据将RDS数据存储到缓冲区,并调整各信息位MFC编程界面显示信息控制信息提出文本段信息串口发送到文本转语音程序播放语音解析RDS数据图4.1 RDS数据处理
30、系统4.2 RDS数据类定义C+语言的精髓即面向对象程序设计,因而系统设计中首先要将处理的数据封装为一个个类,类中包括变量和函数两部分。4.2.1 定义基类 1.定义变量首先要为RDS数据类设计一个基类,即CRDSBase,类中声明包括9个成员变量以及三个函数。9个成员变量为:A_Block 、check_codeA、B_Block 、check_codeB、C_Block 、check_codeC、D_Block 、check_codeD以及k,前八个变量属于unsigned类型,分别代表四块数据的信息位和校验位,k属于整型变量,用于表示RDS数据具体的组型。由于每组数据的都符合这个基本结构
31、,所以要定义这个基类,考虑到代码优化问题,再定义其余32种具体的数组类时可从基类派生得到,这样可以提高效率,节省代码空间。 2.定义函数基类的函数包括:1) .构造函数:CRDSBase(void);采用默认;2) .析构函数:CRDSBase(void);采用默认;3) .调整信息位函数:void adjust_Base(unsigned char *buffer);需自定义,内存缓冲区是以字节为单位来存储接收到的unsigned型的数据的,通过左移、右移的基本操作调整信息位,这样就可明确各信息位在缓冲区的位置,方便提取操作;4) .判断数组类型函数:int DecideVersion(un
32、signed char *buffer);,需自定义,(buffer32)&0x0f对应的即为组型码,4位,范围是0-15,提取出来进行判断进入分支语句,每个分支于句再利用(buffer31)&0x01判断版本类型,函数返回k。类定义语句存储到RDSBase.h中,函数定义语句存储到RDSBase.cpp中。 4.2.2 定义各组数据类1 定义变量 RDS数据一共有32种组型,每种组型的数据内容都差别,因而要为每种组型的RDS数据定义类,包括RDS_0A、RDS_0B、RDS_1A、RDS_1B、RDS_15A、RDS_15B共32种,但目前在RDS数据规范中有明确定义的数据并不足32种。各数
33、据类中的变量包括CString类型、unsigned char等类型,依据需要存储的信息不同而定,CString用于存储解析后的字符串信息,unsigned char用于存储双字节字符。具体内容根据RDS数据规范定义。 2 定义函数1).构造函数:CRDSBase(void); 采用默认;2).析构函数:CRDSBase(void);采用默认;3).调整信息位函数:例如:void adjust_RDS_0A(unsigned char *buffer);,需自定义,无返回值,针对具体数据组型调整方式不同,这里调整信息位属于二次调整,各位的信息进一步具体明确,便于对不同信息进行提取、判断或解析;
34、4).解析函数:例如:void CRDS_0A:translate_0A(unsigned char *buffer),需自定义,针对不同组型其解析函数不同,参数为从缓冲区中读取的二进制数据,无返回值,解析后的文字信息分别存储在各自类的字符串变量里,简单的解析函数采用switch-case语句或if-else语句结构即可,其余解析方法在后面解析模块中进行具体说明。类定义语句存储到各自的头文件中,函数定义语句存储到各自的源文件中。4.3 模块设计对RDS数据的处理包括接收、解析、显示、存储以及语音化,下面就按这五个功能对各个模块的设计进行说明。4.3.1 接收模块接收模块用以完成RDS数据的接收
35、,包括通过已经存储好RDS数据文件的接收以及通过串口调试助手和虚拟串口的接收。1. 从文件中接收数据主要通过软件设计,使用文件读取语句以及改变指针等操作完成,此时需要设置变量记录点击接收按钮的次数,由于一帧RDS数据占用13个字节,因此每点击一次读取数据的按钮,从文件中读取的数据指针就应向后移动13个字节,这样每次读取的数据才不同 。2. 通过串口接收数据时需要用到MFC中最常用的串口通讯方法即使用MSComm控件,该控件提供了一系列标准通信命令的接口,它允许建立串口连接,还可以发送命令、进行数据交换以及监视和响应在通信过程中可能发生的各种错误和事件,从而可以用它创建全双工 、事件驱动的、高效
36、实用的通信程序。使用该控件可以检测缓冲区中是否有数据,有数据的情况下然后触发OnComm消息,然后对数据进行处理。接收RDS数据后将其显示在界面上并存储到文档data.txt中。接收模块流程图如图4.2所示:读缓存消息变量转换将数据存入BYTE型数组将数组中数据写入data.txt文档中YY缓冲区中数据多于一个字符?NN接收RDS数据到缓冲区串口打开?设置串口号及其工作状态引发接收数据的OnComm事件转化成CString型变量同时显示在编辑框中图4.2 接收模块 4.3.2 解析模块接收到的RDS数据为二进制形式的数据流,要解析这些数据应每次从文件中读取一帧数据到缓冲区中或从串口接收一帧数据
37、存储到缓冲区,然后调整各信息位,提取组型码判断数组类型,依据不同组型再将数据读到定义的具体32类数组中的一类,再次调整信息位,然后调用该类的解析方法进行解析,解析方法以及解析得到文字内容需要根据RDS数据规范来定义,解析模块流程图如图4.3所示:解析,调用Translate_0A(unsigned char *buffer)解析,调用Translate_15B(unsigned char *buffer)调整各信息位,调用adjust_0A(unsigned char *buffer)调整各信息位,调用adjust_0A(unsigned char *buffer)提取组型码判断组型,调用De
38、cideVersion()0A组15B组0B组15A组建立一个char型数组从文件data.txt中读取一帧数据到缓冲区调整各信息位,调用adjust_Base(unsigned char *buffer)图4.3 解析模块由于每组数据内容都有差别,相应的解析方法也就有一定差别,下面举出几组常用的数据,针对其解析方法进行说明:l 0组:基本调谐和开关信息。0A组和0B组帧结构如图4.4所示。PI码包含国家识别码、区域识别码和节目基准号,TA、PTY、M/S这些信息通过查找广播数据系统技术规范,使用switch-case语句或if语句即可解析;DI码共4位,每个0A组只发送一位,由C1、C0确定
39、确定这些位在DI码中的位置,且高位d3先发;AF可通过查表得到;显示PS用的四个双字节字符按照规范中附录B规定的字符代码来发送,两个字节确定一个字符,这些字符在显示业务名中的位置亦由C1、C0确定,显示时字符的位置从左到右递增,解析时设置一个包含三个数据的unsigned char型数组ps2,前两个数据分别存储两个字节的PS信息,最后的数据存储0。0B组C块数据与A块相同,不用解析,也没有AF信息,其余部分与0A组相同。图4.4 0A组和0B组l 1A组:节目栏目号和慢标志码。帧结构如图4.5所示。B块的最后5位:B4B2:发射机网络组标号,把发射机网络指定成被寻呼者组码中的一个组码,不属于
40、指定组码的寻呼不应被锁定于该发射网络,组标号的约定由表4.1所示;使用发射机网络组标号能同时使用14个网络来发送寻呼信息,这样可以在白天高峰期使用几个网络,在晚间只使用一个网络;B1B0:节点期间的同步和识别;慢标志码:B15为联网启动码LA,B14B12 为用途码,决定后12位信息代表的具体含义,这12位信息分别解析;PIN码代表广播电台公布的节目开始日期和时间,包括日(031)、时(023)、分(059),解析时使用.Format(“%d”,day)直接将unsigned类型的数据传递进去即可得到十进制的显示。表4.2 发射网络组码B4B3B2组码组码的数目000信道上无寻呼信息00100
41、99100010003940011409960100406930101709930110001920111203920图4.5 1A组l 2组:广播文本,数据结构如图4.6。B块最后四位的地址码用于定位C块或D块中的消息文本,共16种地址,一个RT段包含4个单字节字符或2个双字节字符,所以2A组可以传送64个单字节字符或32个双字节字符的文本消息,而2B组包含2个单字节字符或一个双字节字符,所以可以传送32个单字节字符或16个双字节字符的文本消息,解析时用Unsigned char型数组来存储两块数据,每个数据8位,共32位,即一帧2A数据对应两个双字节字符的RT信息,这是计算机识别出来的即为
42、对应的字符,接收一帧2组数据后则应检测下一帧是否为同组型数据,若相同,则解析后依据地址码组合文本信息;A/B文本标志:对于某段,若标志位变化,则清除所有文本显示,将新接收的文本信息显示到对应的未显示的空闲位,表示未接收到更新消息的段或者字符,若未检测到变化,则将新接收的文本信息显示在现有的显示位置,那些未接收更新消息的段或字符保持不变。图4.6 2A和2B组l 4A组:如图4.7,用于传送日期和时间,这里是约简儒略日(MJD)的形式,即指公元前4713年1月1日,协调世界时(UTC)中午12时开始所经历的天数,是一种不用年月的长期记日法,解析时需要将其转换为公历日期,转换公式如下: (4-1)
43、 (4-2) (4-3) (4-4) (4-5) (4-6) (4-7) D日;M月;Y年;WD星期。图4.7 4A组4.3.3 显示模块将RDS数据解析成文字信息后需要将其在所设计的MFC界面中显示出来,此部分包含利用MFC建立对话框进行界面设计,需要熟练使用基本控件,另外可以下载皮肤工具包进行界面美化。显示过程相对简单,将解析后的字符串信息变量关联到编辑框变量上,然后更新数据即可得到显示。1. 显示模块流程图如图4.8所示:解析各组数据得到对应组块中不同信息,返回值为CString型变量为显示不同信息的编辑框添加变量,类型为CString将函数返回值赋给编辑框变量调用UpdateData(
44、FALSE)更新编辑框中显示的信息 图 4.8 显示模块流程图2. 界面设计绘制MFC界面相对简单,对于静态编辑框、控制编辑框和按钮等简单控件只需将其从工具栏中拖拽到界面即可,另外还要用到用于串口通信的控件MSComm,需通过“右键插入ActiveX控件Microsoft Communication Control,version 6.0”完成。完成的界面绘制效果如图4.9所示:3. 编辑控件首先编辑20个静态编辑框内容,分别为属于本网络的“数据”、“国家”、“地区”、“交通公告”、“节目类型”、“节目基准号”、“载波频率”、”组码”、“节目业务名称”、“语言/音乐”“播出方式”、“日期 时间
45、”、“文本消息”、“儒略日”、“广播寻呼”、“透明数据信道”信息以及属于其他网络的“国家”、“地区”、“节目基准号”、“交通公告”信息,用以标示其后控制编辑框内容所属。其次要为相应的20个控制编辑框分别添加变量,通过将RDS数据解析后的字符串赋给相应的编辑框变量来传递要显示在编辑框中的消息内容,变量类型均为CString,即RDS数据解析后的文字内容。图4.9 绘制的MFC界面最后要为MSComm控件以及七个按钮添加相应的消息响应函数,每个按钮的消息响应均为ON_BN_CLICKED,函数即为对应功能模块的设计。l MSComm控件:消息响应函数为OnCommMscomm1(),利用m_mscomm.get_Input()语句读取缓冲区消息,存储在VARIENT类型的数组中,然后再存储到COleSafeArray类中,COleSafeArray类适用于处理任意类型或维数的类,然后利用for循环将类中的数据存储到BYTE型数组中,进而保存到文档data.txt中,另外将数组转换成CString型变量显示在编辑框中。l “打开串口”和“关闭串口”按钮:实现工程和外界接口的打开和关闭,在接收RDS二进制数据的时候以及将解析后的文本信息发送到语音化程序的时候均需要打
限制150内