用功能键执行程序(用户菜单功能)

E5071C

用功能键执行程序(用户菜单功能)

关于控制E5071C的其他主题

概述

当按下指定的功能键时,E5071C就能执行分配给该功能键(Macro Setup(宏程编排)> User Menu(用户菜单) > 按钮1/2/3/4/5/6/7/8/9/10)的程序,无需使用用户表单。这种功能称为用户菜单功能。

  • 使用用户菜单功能时无需执行任何VBA程序。

准备用户菜单功能

使用用户菜单功能之前的准备。

分配给功能键的程序的编码

按照这些步骤创建分配给“UserMenu”对象(在“E5071对象”文件夹中)中指定功能键的程序。

  1. 双击打开编码窗口。

  2. 在编码窗口的对象框中选择UserMenu,如下所示:


     

  3. 在UserMenu_OnPress(ByVal Key_id As Long)程序中,创建想要分配给指定功能键的程序(由id变量指定)。如欲了解实际应用实例,参见70到430行的使用用户菜单目标的样本程序

  4. 处理某个事件期间(按键执行程序时),不能接受另一个事件(按下另一个功能键用程序进行中断)。

  5. 不能以模块为基础保存(导出)“UerMenu”对象;可以工程为基础对其进行保存。

设置功能键标签和功能键的启动和禁用

可以使用以下COM对象改变用户菜单功能的功能键标签。

可以利用以下COM对象针对用户菜单功能设置功能键的启动/禁用。

此外,还可以使用以下COM对象针对用户菜单功能预置上述设置。

  • 按下E5071C前面板上的Macro Setup(宏程编排) > Preset User Menu(预置菜单)也能预置上述用户菜单设置。

利用用户菜单功能

要想执行分配给功能键的程序,必须按下功能键生成一个事件。手动方式和COM对象方式都能生成事件。

手动操作方式

 点击下列指定功能键:

Macro Setup > User Menu > Button <No>.

Macro Setup(宏程编排) > User Menu(用户菜单) > Button <No>(按钮<数量>)

“No.”表示按钮数量。“Button No.”的标签可随心所欲地进行设置。如欲了解详情,请参考“设置功能键标签和功能键的启动/禁用”部分。

COM对象方式

可以使用以下COM对象执行与按下指定功能键相同的操作。

样本程序

样本程序磁盘内有名为meas_user.vba的样本程序,它演示如何使用用户菜单功能。此VBA程序由以下标准模块和"UserMenu"对象组成。

对象名

模块类型

内容

mdlUserMenu

标准模块

设置功能键标签并用功能键启动中断。

下面是程序的详细说明(对象名:mdlUserMenu):

70行

将True存储到状态变量中。

90到行150行

将第一到第三个功能键(id:1到3)设置为启动,将第四到第十个功能键(id:4到10设置为禁用。

170到行190行

第一个功能键标签(id:1)设置为“Setup”,第二个功能键标签(id:2)设置为“Meas”,第三个功能键标签(id:3)设置为“Exit”。

210行

在功能键区显示用户菜单功能按钮。

230到行250行

重复处理直到状态变量为True(状态=True)。

 240行

检测事件(指定的功能键是否按下)并用事件启动中断。

利用用户菜单执行样本程序(对象名:mdlUserMenu)

10| Public State As Boolean

20|

30| Sub Main()

40|

50| Dim I As Long, J As Long

60|

70| State = True

80|

90| For I = 1 To 3

100| UserMenu.Item(I).Enabled = True

110| Next I

120|

130| For J = 4 To 10

140| UserMenu.Item(J).Enabled = False

150| Next J

160|

170| UserMenu.Item(1).Caption = "Setup"

180| UserMenu.Item(2).Caption = "Meas"

190| UserMenu.Item(3).Caption = "Exit"

200|

210| UserMenu.Show

220|

230| Do While State

240| DoEvents

250| Loop

260|

270| End Sub

UserMenu对象

下面说明“UserMenu”对象的程序。

70到行190行

按下第一个功能键(id: 1)时执行的程序。

  90行:将E5071C返回到预置状态。

  110到130行:对于通道1,将扫描起始值设置为1.73 GHz,扫描终止值设置为1.83 GHz,测量点数设置为51。

   150到170行中止测量之后,将触发源设置为总线触发并打开通道1的连续触发启动模式。

   190行:在功能键区显示用户菜单功能按钮。

210到行320行

按下第二个功能键(id: 2)时执行的程序。

 230到240行:生成触发开始单一扫描并等待测量结束(由SCPI.IEEE4882.OPC对象读出1)。

 260行:搜索通道1中点数并将点数存储到Nop变量中。

 280到290行:指定通道1的迹线1为活动迹线、搜索格式化的数据数组并将数据存储到FmtData变量中。

 310到320行:显示LCD屏幕底部的回送窗口。

 340到360行:显示回送窗口每个测量点的2个测量数据值(主值和副值)。

380到行430行

按下第三个功能键(id: 3)时执行此程序。

  400行:显示程序关闭消息。

   410行:将False存储到sta变量以中终止主程序。

利用用户菜单执行样本程序(“UserMenu”对象)

10| Private Sub UserMenu_OnPress(ByVal id As Long)

20|

30| Dim I As Integer

40| Dim Nop As Long, Dmy As Long

50| Dim FmtData As Variant

60|

70| If id = 1 Then

80|

90| SCPI.SYSTem.PRESet

100|

110| SCPI.SENSe(1).FREQuency.STARt = 1730000000#

120| SCPI.SENSe(1).FREQuency.STOP = 1830000000#

130| SCPI.SENSe(1).SWEep.POINts = 51

140|

150| SCPI.ABORt

160| SCPI.TRIGger.SEQuence.Source = "BUS"

170| SCPI.INITiate(1).CONTinuous = True

180|

190| UserMenu.Show

200|

210| ElseIf id = 2 Then

220|

230| SCPI.TRIGger.SEQuence.SINGle

240| Dmy = SCPI.IEEE4882.OPC

250|

260| Nop = SCPI.SENSe(1).SWEep.POINts

270|

280| SCPI.CALCulate(1).PARameter(1).SELect

290| FmtData = SCPI.CALCulate(1).SELected.DATA.FDATa

300|

310| SCPI.DISPlay.TABLe.TYPE = "ECHO"

320| SCPI.DISPlay.TABLe.State = True

330|

340| For I = 1 To Nop - 1

350| ECHO FmtData(2 * I - 2), FmtData(2 * I - 1)

360| Next I

370|

380| ElseIf id = 3 Then

390|

400| MsgBox "Program ended!"

410| State = False

420|

430| End If

440|

450| End Sub