王雅飞
[摘要]本文利用UML及其工具RationalR.ose对仿真系统进行总体设计,可视化描述了系统的功能需求、功能流程、类的结构与关系等;利用IP组播技术和双缓冲区交替录音(放音)解决了通信子网内语音传递的实时性问题。
[关键词]通信仿真系统;UML;1Kadonal Rose;IP组播技术
1.通信仿真系统总体设计
依据现代网络技术的发展和各终端担负的功能,设计了基于C/S模式的通信仿真系统,系统分为训练子系统和监控台子系统。
训练子系统由仿真终端和通控机,作为前端训练平台。仿真通信终端是在计算机端通过软件模拟实际通信终端的外形和功能来实现。在同一通信子网内,通信终端通过TP组播技术相互通信。
监控子系统包括监控台和监控屏幕,以监控台为服务器,各仿真通信终端和操作工作台作为客户端。监控台可根据通信终端参数的变化动态维护通信子网,查询通信终端工作状态。
2.通信仿真系统的UML建模
2.1建立系统类图
系统类图包括通信终端类图和监控台类图两部分。在通信终端类图中,通信终端的主要功能依赖语音类、操作工作台类、客户端通信类实现。语音类通过对等网通信类接收或发送语音,而操作工作台类与操作工作台通过USB接口类传递参数信息,更新显示界面。通控机与数传通信终端的类图相似。在监控台类图中,监控台将功能分布在与其相关联的各个类上,通过与这些关联类的交互实现其功能。通信子网链表类负责管理通信子网的建立与销毁,而通信子网由工作参数相同的通信终端组成,通控机链表类负责管理通控机,考核类同数据库相结合进行考题的发送、更新及成绩的处理。监控台与各通信终端的通信依赖于服务器端通信类。
2.2系统动态模型
(1)通信终端状态图模型。在通信仿真系统中,以通信终端的状态变化最为繁杂。通信终端开机经过自检以后进入到待机状态,待机状态属于组合状态,通过模式开关的拨转进行状态转换,待机状态还有一个历史状态标记,用来记录上次离开组合状态时的最后一个活动子状态,每当通信终端进入到组合状態时,便恢复到上次离开该组合状态时的最后一个活动子状态。在待机状态下,通过按压通信终端界面上频率、选项、抗干扰、PPT、数传和w单按d,可以进入频率设置状态、工作方式设置状态、密口或频参数设置状态、话传状态、数传接口设置状态和w单操作状态。
(2)数传通信终端操作过程活动图模型。首先执行选择所属单位的操作,通信终端自检结束后进入接收状态。通信终端参数设置有手动方式和通控机遥控两种方式。在手动方式下,通信终端需要同步更新液b屏幕显示,以图形或符号的形式反应通信终端的工作状态或者提供操作提示,并且将变化的参数信息传递给通控机;在通控机方式下,通信终端则根据来自通控机的参数信息更新屏幕显示以及操作工作台的开关状态。
(3)通信组网过程序列图模型
监控台的主要任务组织各通信操作人员进行通信组网训练。其工作具体为根据各个通信终端的工作参数和所承担的通信任务对通信终端进行分组,并为每组通信终端分配一个组播号,作为一个通信子网,子网内的通信终端可以进行组播通话。
2.3组件图与配置图
组件图和配置图是面向对象系统在物理方面进行建模时要用到的两种图,组件表示物理抽象,使用组件图能够可视化物理组件以及他们之间的关系,并描述其细节。配置图描述了运行软件的系统中硬件和软件的物理结构,即系统执行处理过程中系统资源元素的配置情况以及软件到这些资源元素的映射。
3.通信仿真系统关键技术实现
3.1组播技术的实现
通信终端在工作时需要向同一通信子网内的其它多部通信终端发送语音和数据,采用TP组播方式非常适合于分布式仿真系统中同时向多个接受者发送数据的情形。
TP组播网络的实现依赖于IP组播地址,每一个地址代表一组主机,当进程向某个TP组播地址发送数据时,就是向该组中的每一个主机发送同样的数据。
系统实现时采用基于Winsock2.0的API f数进行组播编程,通过f数WSASocket0设置组播为“无根”类型,在这种类型下,通信终端相当于叶节点,它可以加入任意一个组播组,而从叶节点发送的数据会组播到每一个叶节点。
3.2语音录放功能的实现
在交互式系统中,需要采集实时音频数据,并对声音进行实时处理,这时必须借助于底层音频服务f数,这些f数允许应用程序直接与底层音频驱动程序通信,对播放和录制提供更强、更灵活的控制。在具体实现时,系统采用底层的Windows音频采样API f数,为此需要一加Winmm.1ib库。由于录音和放音的过程具有实时性的特点,因此为录音和放音分别开辟了一个工作线程,在录音线程中,为录音设备定义了两块音频缓冲区交替录音,即一块缓冲区录音满后立即将音频数据M贝到预先定义的数据缓冲区待处理,同时将另一块音频缓冲区装入录音设备,两块缓冲区如此循环使用,提高了工作效率。在播放线程中,接收和播放的工作原理也类似。
3.3监控台的程序实现
监控台软件系统采用基于CFormView的单文档程序架构来开发,应用多线程编程技术,主线程负责管理=口界面的更新和切换,以及处理用户输入请求;通信线程监听终端的连接请求并负责发送和接收信息;数据处理线程将接收到的信息进行格式化,并更新数据库。endprint