等待触发(SQR)

E5071C

等待触发(SQR)

有关样本程序的其他主题

概述

这个样本程序说明如何使用SRQ检测测量是否结束。

  • 当通道/迹线的最大数量设置为9通道/9迹线时,这个样本程序正确运行。

该样本程序设置触发系统、配置仪器,以正确发出SRQ,然后对仪器进行触发。当仪器发出了指示测量结束的SQR时,程序在打印测量完成的消息之后推出。

参见这个程序的等待测量结束

在Excel VBA中的样本程序

Sub srq_meas_Click()

    Dim defrm As Long

    Dim vi As Long

    Dim ContMode(9) As String

    Dim Result As String * 10

    Dim i As Integer, StbStatus As Integer

    Const TimeOutTime = 100000 ' TimeOut time should be greater than the measurement time.

    '

    ' Assign a GPIB address to the I/O pass.

    Call viOpenDefaultRM(defrm)

    Call viOpen(defrm, "GPIB0::17::INSTR", 0, 0, vi)

    Call viSetAttribute(vi, VI_ATTR_TMO_VALUE, TimeOutTime)

    '

    ' Store the settings of continuous initiation mode for eachchannel

    ' (on for channels 1 and 2; off for channels 3 through 9)

    ' into the array variable ContMode().

    ContMode(1) = "ON"

    ContMode(2) = "ON"

    For i = 3 To 9

        ContMode(i) = "OFF"

    Next i

    '

    ' Turn on or off continuous initiation mode for each channel

    ' depending on the value of ContMode(*).

    For i = 1 To 9

        Call viVPrintf(vi, ":INIT" & CStr(i) & ":CONT " & ContMode(i) & vbLf, 0)

    Next i

    '

    ' Set the trigger source to Bus Trigger.

    Call viVPrintf(vi, ":TRIG:SOUR BUS" & vbLf, 0)

    '

    ' .

    Call viVPrintf(vi, ":STAT:OPER:PTR 0" & vbLf, 0) 'Set 0 at all bits of Position Transition Filter

    Call viVPrintf(vi, ":STAT:OPER:NTR 16" & vbLf, 0) 'Set 1 at bit 4 of Negative Transition Filter

    Call viVPrintf(vi, ":STAT:OPER:ENAB 16" & vbLf, 0) 'Set 1 at bit 4 of Operation status enable

    Call viVPrintf(vi, "*SRE 128" & vbLf, 0) 'Set 1 at bit 7 of Service Request Enable Register

    Call viVPrintf(vi, "*CLS" & vbLf, 0) ' Clear Register.

    '

    Call viVPrintf(vi, "*TRG" & vbLf, 0) 'Make a trigger

    ' Wait until Status Byte Register became 192

    Do

        Call viReadSTB(vi, StbStatus) ' Read Status Byte Register

        Range("B5").Value = StbStatus

    Loop Until StbStatus = 192

    '

    ' Display a measurement completion message.

    Stat = MsgBox("Measurement complete", vbOKOnly)

    ' Close IO

    Call viClose(vi)

    Call viClose(defrm)

End Sub

在HT Basic中的样本程序(srq_meas.htb)

10 DIM Cont_mode$(1:9)[9],Buff$[9]

20 INTEGER I

30 !

40 ASSIGN @Agte507x TO 717

50 !

60 Cont_mode$(1)="ON"

70 Cont_mode$(2)="ON"

80 Cont_mode$(3)="OFF"

90 Cont_mode$(4)="OFF"

100 Cont_mode$(5)="OFF"

110 Cont_mode$(6)="OFF"

120 Cont_mode$(7)="OFF"

130 Cont_mode$(8)="OFF"

140 Cont_mode$(9)="OFF"

150 !

160 FOR I=1 TO 9

170 OUTPUT @Agte507x;":INIT"&VAL$(I)&":CONT "&Cont_mode$(I)

180 NEXT I

190 OUTPUT @Agte507x;":TRIG:SOUR BUS"

200 !

210 OUTPUT @Agte507x;":STAT:OPER:PTR 0"

220 OUTPUT @Agte507x;":STAT:OPER:NTR 16"

230 OUTPUT @Agte507x;":STAT:OPER:ENAB 16"

240 OUTPUT @Agte507x;"*SRE 128"

250 OUTPUT @Agte507x;"*CLS"

260 OUTPUT @Agte507x;"*OPC?"

270 ENTER @Agte507x;Buff$

280 !

290 ON INTR 7 GOTO Meas_end

300 ENABLE INTR 7;2

310 OUTPUT @Agte507x;"*TRG"

320 PRINT "Waiting..."

330 Meas_wait: GOTO Meas_wait

340 Meas_end: OFF INTR 7

350 PRINT "Measurement Complete"

360 END

说明

40行

为I/O口分配GPIB地址。

60行到140行

这些行将每个通道(通道1和2打开;通道3到9关闭)连续初始化模式的设置储存到序列变量Cont_mode$(*)中。

160行到180行

这些行打开或关闭每个通道的连续初始化模式,打开或关闭取决于Cont_mode$(*)的值。

190行

设置触发源为“总线触发”。

210行到220行

这些行对仪器进行配置,使操作状态事件寄存器的位4只在操作状态条件寄存器的位4从1变为0(负缘变迁)时才设置为1。

230行到240行

这些行启动工作状态事件寄存器的位4和状态位寄存器的位7。

250行到270行

这些行清除状态位寄存器和操作状态事件寄存器。

290行到300行

这些行设置SRQ中断的分支目标以启动SRQ中断。

310行到320行

这些行对仪器进行触发,并等待测量周期的完成。

350行

显示测量完成的消息。