用功能键执行程序(用户菜单功能)
概述
当按下指定的功能键时,E5071C就能执行分配给该功能键(Macro Setup(宏程编排)> User Menu(用户菜单) > 按钮1/2/3/4/5/6/7/8/9/10)的程序,无需使用用户表单。这种功能称为用户菜单功能。
使用用户菜单功能时无需执行任何VBA程序。
准备用户菜单功能
使用用户菜单功能之前的准备。
分配给功能键的程序的编码
按照这些步骤创建分配给“UserMenu”对象(在“E5071对象”文件夹中)中指定功能键的程序。
双击打开编码窗口。
在编码窗口的对象框中选择UserMenu,如下所示:
在UserMenu_OnPress(ByVal Key_id As Long)程序中,创建想要分配给指定功能键的程序(由id变量指定)。如欲了解实际应用实例,参见70到430行的使用用户菜单目标的样本程序。
处理某个事件期间(按键执行程序时),不能接受另一个事件(按下另一个功能键用程序进行中断)。
不能以模块为基础保存(导出)“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变量以中终止主程序。
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