作者:杨潇,龚晓峰,宋丽娟,杨辉(四川大学电气信息学院 四川成都 610065)
1 引言
无线电定位技术起源于军事科学研究,在军事应用上,是一种捕获和分析敌方无线电通讯、以此了解敌方指挥中心位置、部队配置和调动等情况的重要电子侦察和对抗手段。
近年来,随着无线电通信技术的飞速发展和频段覆盖密度的增加,作为无线电频率指配程序的重要部分,为无线电管理部门提供频率规划、指配和协调的技术支持的无线电测向和定位技术,得到了更深层次的应用。尤其在查处未知干扰信号源方面,无线电测向和定位技术已成为我国进行无线电科学管理的技术基础、维护空中电波秩序的重要手段。
全国短波监测网络系统由国家无线电监测管理中心和分布在各地的多个固定监测站及多个移动监测站组成。各地的移动监测站通过本地的固定监测站联接到全国短波监测网络系统中,从而实现各地短波监测站的全国网络化管理及资源的极大共享。该系统是一个无中心的网络,经控制中心授权后,网内任一监测单元均可成为指挥操作控制中心。全网具有无人值守工作模式下的不间断工作能力,完成监测控制中心下达的各类监测任务,如信号的记录、信号参数的测量及信号源地址的定位等。为了确定信号源的地理位置,常用两个或多个固定测向站联网进行测向定位。本文主要涉及信号源定位功能的设计与实现。2技术背景
2.1Delphi7.0和MapX的集成开发
MapX是MapInfo公司向用户提供的具有强大地图分析功能的ActiveX控件产品,是一个当今普遍使用的ComGIS(组件式地理信息系统)组件。他是一种基于Windows操作系统的标准控件,因而能支持绝大多数标准的可视化开发环境,如:VisualC++,VisualBasic,Delphi,PowerBuilder等。编程人员可以选择熟悉的开发环境,脱离Maplnfo的软件平台运行。MapX采用基于MaplnfoProfessional相同的地图化技术,可以实现Maplnfo Professional所具有的绝大部分地图编辑和空间分析功能。MapX为开发人员提供了一个快速、易用、功能强大的地图化组件。在Delphi 7.O开发环境中,设计阶段只需将MapX控件嵌入于窗体,并进行编程、设置属性、调用方法和事件,就可以轻松实现地理空间数据的可视化,完成空间查询、地理编码、专题分析等丰富的地图信息系统功能。
本系统是基于Delphi7.0对MapX进行的集成二次开发系统。系统采用OLEAutomation(对象连接嵌入自动化)技术,用Delphi7.O开发前台可执行应用程序,以OLE自动方式启动GIS工具软件MapInfo在后台运行。
2.2Oracle关系数据库
Oracle关系数据库系统是目前世界上伸缩性最好,功能最齐全的关系数据库管理系统。系统具备更灵活的事务处理能力,更加强健完善的数据仓库技术以及智能化的内容管理和自我管理及严密的安全性机制,其分布式数据库管理提供了新的分布式数据库能力。物理上存放于网络的多个Oracle数据库,逻辑上可以看成一个单个的大数据库,服务器之间的协同处理对于工作站用户及应用程序而言是完全透明的。开发人员无需关心网络的连接细节、无需关心数据在网络节点中的具体分布情况、也无需关心服务器之间的协调工作过程,用户可通过网络较方便地读写远端数据库里的数据,似乎远端的数据就在本地。
基于Oracle的以上多种优点,为了保存系统实时的测向数据、频谱数据、语音数据和实现站内、站间各计算机的数据共享及查询,本系统采用了大型关系型数据库Oracle作为系统数据保存模块的后台支持。
3 整体构架
系统采用Boland公司的Delphi7.0作为前台开发环境,后台则采用Oracle8.O大型关系数据库系统,以Maplnfo公司的地理信息系统控件(ActiveX)MapX作为地图控件。图1是交会定位功能的构成模块。

4 模块功能
4.1发送命令、数据接收模块
发送命令是中心控制站向监测站(可无人值守)发送包含目标发射源的频率、带宽等参数的测向命令的过程。整个系统的命令的发送和数据的接收显示是通过基于Delphi消息系统的消息模块来实现的。在实现交会定位任务时,由消息模块把由界面窗口发出的命令以消息转发到相应的服务模块,同时,在数据返回时,消息模块把底层服务模块处理的结果以消息返回到请求方,进而实现消息和数据的交换,也即是完成用户的请求。为了方便系统消息的管理和设计,在用户请求服务时创建消息,而在用户要求停止服务时释放消息,为了将请求服务的消息和停止服务的消息关联起来,需要设置相应的数据结构来保存消息、设备编号、操作等信息,以便在停止服务时查找到相应的启动服务。4.1.1创建消息函数
成功后返回一个TMessage对象,否则为nil。同时,界面窗口需要保存消息的标志(每个新建的消息都有一个惟一的ID标志,用以区分不同的消息)。

4.1.2发送消息函数
成功后返回1,其他返回表示失败。该函数根据msg中的dest判断是本地设备还是远程设备,若是本地设备则发送到底层驱动,若是远程设备,则向网络发送。
functionBSSendMessage(msg:TBSMessage):TBSType;
4.1.3界面窗口接收消息
消息模块收到底层服务模块发送回的数据后,将数据转化为消息转发给相应的界面窗口。界面窗口只处理自己发送出的消息,也就是该消息ID与在本窗体中产生的消息的ID一致,该检查机制是通过TBSWindowSessionIDInfo类的CheckSessionId方法完成的。消息传递的是数据的地址和长度信息,所以界面窗口收到响应的消息后,需要对消息进行解析来获取数据信息,以进行处理与显示。
4.2测向、频谱数据显示模块和语音模块
在进行多站交会定位时,为了克服相近频率的干扰,保证各个测向站监测的是同个发射源,系统加入了实时频谱显示和对比实时电台声音两个功能。
在交会中,主控站发送交会命令mMeasuring(True,DeviceId,FLeftId,FRightld,mfDirectionCross)到各监测站。各监测站收到命令后,分别向底层发送测向命令mMeasuring(True,DeviceId,FLeftId,FRightId,mfDirectionFind)和频谱命令mMeasuring(True,Deviceld,FLeftId,FRightId,mfSpectrum),并将被监测信号的测向和频谱数据均返回给主控方,主控方通过对比频谱图来确定目标信号的一致性和准确性。语音模块中,系统提供了左右两个独立的声道,分别由mMeasuring命令中的FLeftId,FRightId标志。Win32APIs中有一组被称成多媒体控制接口(即MCI)的函数,该接口提供了多媒体编程所需的系统级APIs,这些函数也就是Windows多媒体编程的最低层接口,由这些代码直接操作真实的音频设备。该模块采用线程技术,利用WindowsAPI函数,将音频操作做成一个服务AudioServer。从网络接收或本地采集得到音频数据,放入开辟的缓冲区内,通过加入时间标签来保证声音播放时的连续性和左右一致性。该缓冲区采用循环存储和播放的技术,用户可以通过左右两个声道来同时对比不同监测站的目标电台的声音,以保证目标源的一致性。
