3.2 任意波形编辑软件中拖动放大功能的实现
在波形显示区域内移动鼠标,当放到了合适的位置,然后按下鼠标左键,开始拖动鼠标。拖动过程中按住鼠标左键不放,这时会出现一个矩形,矩形的左上角即是鼠标开始按下的位置,矩形的右下角是当前鼠标的位置。
因此,矩形的大小随鼠标的移动而更新。直到拖动到需要的位置,放开左键,至此放大操作完成。可以看到被矩形包围的的波形部分被全屏显示。
此功能的设计中,需用到函数SetAxisRange()改变显示区的横纵向范围,还用到“手动绘制波形”设计中使用的时钟控件。于是在整个软件的设计中用到两个时钟控件:
第一个时钟在手动绘制波形时用来采集离散的波形点.另外还负责实时显示鼠标坐标的功能;
第二个时钟就是现在为了绘制不断更新的矩形而设的。需要注意的是:两个时钟控件不能同时处于激活状态,即时钟1初始为非激活状态(unenable),当选中了“鼠标拖动放大波形”菜单项时,先停止时钟1,再将时钟2激活(enable)。除了控件时钟控件的使用,在鼠标拖动过程中还需执行不断刷新波形的操作。
因为,当生成矩形时,该矩形有填充色,会覆盖显示区的波形,为了使矩形看起来是只有边框而没有填充色的效果,需要不断地刷新波形。因此,操作过程中会看到波形有轻微的抖动现象。其实现的原理和波形扩展的原理是一致的,将当前区域内的波形参数存储,并将其复制一份,然后对其进行插值处理。如果需要也可以对波形进行平滑处理,平滑处理的方法是求平均值。
先选定一个要进行平滑处理的波形点,然后将它左面几个点和右面几个点的幅度值相加,再除以相加的总波形点数。这样平滑处理后的波形将有一定程度的失真,因每个点的幅值是其左边和右边各8个点的幅值的平均值,因此更新后的幅值将有所减小。但平滑效果较好,对于比较不规则的波形,连续进行多次平滑处理之后,波形将变得较为光滑平坦。图2即为鼠标拖动放大波形操作过程示意图。
4 结 语
基于LabWindows,/CVI的任意波形编辑软件中手动任意绘制软件成本低、效率高、移植性好,无论是采用何种发送数据的方式,都比较容易进行接口操作,在虚拟仪器的图形界面编程领域有着良好的发展前景。与此同时,手动任意绘制波形软件不必受到具体仪器的功能限制,这给设计带来了很大的灵活性。目前,笔者开发的任意波形发生器手动任意绘制软件可以选用串口和USB接口发送数据,也可以实现和VXI通信。已经应用到100 MSPS任意波形发生器上。经过各种测试,性能稳定,操作简单,使用方便。以后还可以根据不同的仪器要求,进一步增加具有其他功能的虚拟仪器,做进一步的扩展,使得系统更加完善。