该程序负责启动接收机工作,并完成14个波束的方位—距离数据显示,它首先将输入的增益值及波束号转换为控制码,然后以程序询问的方式认知发射机同步信号的到来,如接收到发射机同步信号,则控制接收机进入工作状态,并将控制码写入接收机控制寄存器的指定位,最后将该次发射所得处理结果显示输出,直至用户按“ESC”键停止程序的运行。 这部分软件运行于主控机上,以菜单驱动方式进行操作,其控制功能包括对接收机的增益进行设置、执行波束选择及声阵的高度输入等,并对接收机信号处理单元进行起停控制;显示功能则完成14个波束的方位—距离数据显示或对指定波束的波形进行输出,并能够以文字方式给出光标所在位置的目标方位及距离。全部功能可总结为如下几项: 
程序在Lab Windows/CVI环境下开发,主窗体及菜单可在用户界面窗口中快速便捷地建立,操作控制消息处理过程框架也可由环境自动生成,设计人员只需加入相应的处理逻辑即可。程序设计中要解决的关键问题是DSP分机输出缓冲器中波束数据的读取及波形的显示和通过光标操作进行目标的定位。这些工作如果用VC++等实现将比较繁琐,而在Lab Windows/CVI环境下则可以得到轻松而完美的解决。 Lab Windows/CVI在Utility函数库中提供了利用物理地址对内存直接访问的Physical Memory Access子类,当系统中有大量数据需要处理时,利用物理内存访问函数即可以提高程序的运行速度,又可以避免开发虚拟设备驱动程序的繁重工作。在这一系统的开发中我们使用ReadFromPhysicalMemoryEX完成波束数据的读取,该函数原形如下: Int status=ReadFromPhysicalMemoryEX(unsigned int physicalAddress,void *destinatyionBuffer,unsigned int numberOfBytes,int bytesAtATime); 其中,physicalAddress为数据在内存中的物理地址;destinatyionBuffer为读出后存放数据的缓冲器;numberOfBytes为读出数据的字节数;bytesAtATime为一次读取的字节数,取值可为1、2、4。返回值为1表示读取成功。 Lab Windows/CVI提供了图表控件来完成图表、静态的曲线和波形及动态实时信号波形的显示,这里我们通过使用Graph控件来完成波束数据的显示。Graph控件功能十分强大,主要包括绘图功能、光标功能、坐标设定功能和缩放、移动视区功能等。用户界面库中提供了大量的函数以用于在Graph控件上绘制各种曲线和几何图形,这里我们使用PlotY函数,其原形为: Int PlotY(int panelHandle,int contrlHandle,double[] Yarray,int NumofPoints,int YdataType,int PlotStyle,int PointStyle,int LineStyle,int PointFrequency,int Color) Graph控件支持光标操作,在程序设计中可利用光标进行定位,在设计时可对光标的个数、颜色、形状、模式等属性进行设置,程序中又可通过函数对光标进行操作,如设置活动光标,获取和设置光标的坐标等,而坐标数据与目标的时间、距离数据是相关联的,在程序中可通过简单的计算进行转换。 Graph控件的缩放和视区移动功能则允许我们对波形的局部进行放大以观察细节,以及将波形绘制在视区之外,需要时又可移入视区之内进行显示。总之,该控件的强大功能满足了我们现阶段所有的波形显示和分析的需要。 本文讨论了在Lab Windows/CVI环境下开发DSP显控程序的优越性和关键技术。该接收机经受了海试的考验,在整个海试过程中一直稳定可靠地运行,其处理所得目标方位、距离值及海深等数值都能与预知值很好地吻合。另外,该系统的设计使得其功能很容易扩充,它除了对国防建设具有重要意义外,稍加改进后还可应用于如沉船打捞、航道勘测、水底地形图的测绘等领域,对海洋的开发和经济的发展都具有重要的意义。 [2] 李荣福,崔桂华,田作喜,桑国明. 激光声遥感系统[M]. 国防工业出版社, 2003 () |