BT-Basic函数之首字母D
BT-Basic函数之首字母D
文章目录
- BT-Basic函数之首字母D
- datetime$
- debug
- debug board
- def
- dfps
- dim
- dll_
- dps
- dround
- dutfailed
datetime$
返回一段12个字节长度包含当前的时间的字符串,格式为yymmddhhmmss
。
debug
debug 函数清除所有当前的调试数据(如果有的话),并在指定测试上开始调试。必须在执行任何调试语句之前先执行此函数。在调试时,你仍然可以执行所有 BT-Basic 语句。
在开始调试会话之前,确保你已经 msi 到相应的板目录,并将板数据加载到内存中(load board 函数)。
要停止调试一个测试并开始另一个测试,执行新的 debug 函数。要结束调试并清除所有调试数据,执行 debug end 函数。
调试软件会自动创建并控制其窗口;当它清除一个测试的调试数据时,它也会移除与该测试相关的所有窗口。
使用 source 选项在 Pushbutton Debug 环境中启动调试。使用 nosource 选项在 BT-Basic 环境中启动调试。如果省略此参数,默认环境如下:
- 如果从 BT-Basic 命令行执行 debug,则选择 Pushbutton Debug 窗口(见一般信息);
- 如果从程序(如测试计划)中执行 debug,则选择 BT-Basic 环境。在此模式下,调试语句也可以从程序中执行。
debug 函数可以选择性地将参数传递给它执行的测试(这些是语法中的 )。参数包含一个数字变量列表——列表中可以包含简单变量和数组。传递的参数按顺序从左到右依次分配给正在执行的测试中的格式参数。必须传递正确数量的变量给测试,并且每个传递的变量必须与被分配的格式变量类型相同(简单变量、数组变量等)。
对单一(非混合)测试,模拟和数字测试类型关键字是可选的。如果你从测试计划运行调试,可以使用这些关键字来记录你的测试。然而,软件会忽略它们(即,错误的关键字不会导致错误)。
当参数传递给混合测试时,软件同样会忽略可选的数字和模拟关键字以及分隔参数组的分号。此外,建议你在测试计划中使用它们,尤其是对于混合测试,以记录调试目的的测试。
执行混合测试时,debug 函数按列出的顺序尝试将参数依次分配给混合测试的每个部分。由于它忽略分号和测试类型关键字,debug 首先查看测试的数字部分,接着查看模拟部分,始终按此顺序。如果混合测试中的任何部分未包含或不需要传递参数,debug 函数将转到测试的下一个部分。
无论是否在 中使用测试类型关键字,必须传递正确数量的参数给混合测试。每个传递的参数必须与被分配的格式参数类型相同。
记住,测试类型关键字的目的是让你能够正确记录你的测试。如果你在 中将它们放置在错误位置,不会发生错误。
语法
debug <identifier>
debug <identifier>; <test source>
debug <identifier>; <test Parameters>; <test source>
debug <identifier>; <test Parameters>
<identifier> 可以是: <file id>
<directory id>
<file id> 和 <directory id> 是 <字符串表达式>
<test source> 可以是: source
nosource
<test Parameters> 可以是:
<parameter list>
digital <parameter list>
analog <parameter list>
digital <parameter list>; analog <parameter list>
<parameter list> 可以是: <parameter>
<parameter>,<parameter>
<parameter>,<parameter>, . . . <parameter>
<parameter> 是一个 <数字变量>
<identifier>包含要调试的测试源代码的文件路径名(相对于板测试目录)。仅对混合测试,指定包含模拟和数字测试文件的目录名称。
<test Parameters>传递给要调试的测试的一个或多个变量。
eg:
debug "analog/r126" ! 模拟电阻测试
debug "u24"; source ! 选择 Pushbutton Debug
! 下面两条语句是等价的
debug "analog/func_1"; V1, V2 ! 带有参数的模拟功能测试
debug "analog/func_1"; analog V1, V2
debug "mixed/a_to_d" ! 混合测试
debug "digital/u18" ! 数字设备,在电路测试
debug "functional/big_ram/test" ! 数字功能集群测试
debug "U12"; digital A, B(*); nosource
! 下面两条语句是等价的
debug "mixed/A_to_D"; A, B(*), C, D, X1, X2, X3
debug "mixed/A_to_D"; digital A, B(*); analog C, D
要在命令行执行 debug 时更改默认环境,请在 .hp3070 文件中更改参数如下:
选择 Pushbutton Debug 环境作为默认设置,设置为:
Debug.Source: yes
选择 BT-Basic 环境作为默认设置,设置为:
Debug.Source: no
debug board
debug board 函数从 BT-Basic 命令行调用 Pushbutton Debug。Pushbutton Debug 主要是一个用户界面,帮助你使用测试系统上已经存在的调试功能。
! 假设你已经通过 "msi" 进入到被测板的目录下面
load board ! 将板对象数据库加载到内存中
debug board ! 调用 Pushbutton Debug
def
def 函数声明用户可定义函数的名称及其形式参数的名称和类型。该函数必须是函数中的第一个函数,并且是该行的第一个函数。
函数可以是数字型或字符串型,由其 <id>
指定。数字函数返回一个数值,并从数值表达式中调用。字符串函数返回一个字符串,并从字符串表达式中调用。任意类型的函数都可以传递,并可以操作数值或字符串数据。
在 def 函数中列出的参数是函数的形式参数;这些参数代表变量、文件或设备。除非函数没有形式参数,当调用函数时数据传递给函数。在函数执行期间,所有对传递数据的引用都通过引用形式参数来进行。
除了操作传递的参数外,该函数还可以操作局部参数和全局参数(见 global 函数)。
语法
def fn<function id>
def fn<function id> (<parameter>)
def fn<function id> (<parameter>,<parameter>)
def fn<function id> (<parameter>,<parameter>, . . . <parameter>)
<function id> 可以是: <label>
<label>$
<parameter> 可以是: <simple variable id>
<array id>(*)
@<name>
<name> 是一个 <label>
<function id> 函数的名称。函数类型为数字型,除非它带有一个美元符号 ($),在这种情况下它是一个字符串函数。
<parameter>形式参数;可以是变量 id 或 @<name>。变量必须是一个简单变量或整个数组;不能指定单个数组元素和子字符串。
要指定一个数组,请使用:
```plaintext
<array id>(*)
这允许参数表示任何大小和任意维数的数组。两种类型的函数(数字型和字符串型)都可以有数值和字符串参数。函数最多可以有 12 个形式参数。
示例
```plaintext
def fnCube_root (X)
def fnAverage (A$, Sum, Test(*))
def fnTranslate$ (Names$(*), Results(*), Entries, @Tape_Reader)
有关用户可定义函数操作的示例,请参见 fn 函数的描述。
形式参数列表中的数组不能被定尺寸。这是因为形式参数只是一个名称,用来临时代表在调用函数时传递给函数的现有参数。传递给函数的任何数组必须已经被定尺寸。
函数中的局部数组(即未传递且未声明为全局的数组),必须在函数中被定尺寸(dim 函数)。任何全局数组必须在调用函数之前被定尺寸。
dfps
dfps 函数将夹具电源从夹具上断开。当执行以下操作时,dfps(所有电源)会自动执行:
- load board / scratch board
- testhead is 1 / *
- testhead power on / off
- fixture lock / unlock
- autoadjust / confirm
语法
dfps
dfps <logicID>
dfps <logicID>, <logicID>, ...<logicID>
dfps <logicID> to <logicID>
<logicID> 是 101 到 108 之间的整数,它在各个模块中必须唯一。
eg:
dfps ! 断开已连接到夹具的所有夹具电源
dfps 101 ! 断开指定的夹具电源
dfps 101, 102, 104
dfps 101 to 104
dim
dim 函数用于对变量进行定义:即初始化并为它们保留内存,并声明它们的标识符(名称)、大小和边界。必须定尺寸的变量有:
- 数字数组
- 字符串数组
- 长度不是默认值的简单字符串变量
(字符串变量的默认长度为80个字符)。在这些变量出现在 dim 函数中之前,不能对它们进行任何其他引用。
dim 函数还初始化变量:将数字变量初始化为零,将字符串变量初始化为空字符串(“”)。
并非所有变量都必须由 dim 函数来定尺寸。简单的数字变量和简单的字符串变量在第一次被引用时会自动初始化。简单的数字变量不能由 dim 定尺寸。简单的字符串变量不必由 dim 定尺寸,但可以;那些未包含在 dim 中的字符串变量自动默认为已定尺寸(最大)长度80个字符。如果它们需要其他长度(最长可达2048个字符),则必须由 dim 函数定尺寸。
dim 函数由 dim 关键字后跟一个或多个由逗号分隔的规格组成。每个规格定义一个数组或一个简单的字符串变量。
语法
dim <dim spec>
dim <dim spec>,<dim spec>
dim <dim spec>,<dim spec>, . . . . <dim spec>
<dim spec> 可以是: <numeric variable id>(<bounds>)
<string variable id>(<bounds>)
<string variable id>(<bounds>)[<length>]
<string variable id>[<length>]
<numeric variable id> 是一个 <label>
<string variable id> 是 <label>$
<length> 是一个 <数值常量>
<bounds> 可以是: <上限对>
<上限对>,<上限对>
<上限对>,<上限对>, . . . . <上限对>
<上限对> 可以是: <上限>
<下限>:<上限>
<下限/上限> 是一个 <数值常量>
参数
<dim spec>数组或简单字符串变量的规格。
<numeric variable id>数字数组的标识符(见 <label> 的定义)。id 必须是唯一的;即,另外一个变量,无论是简单的还是数组,无论是数字的还是字符串的,不能在同一时间内存在具有相同的标签。变量如果已经存在则不能再次定尺寸。当前占用的工作空间不能重新分配给另一个变量,直到清除工作空间或开始新的程序运行。
<string variable id>字符串数组或简单字符串变量的标识符(见 <label> 的定义)。上述对于数字变量的信息也适用于字符串变量。
<length>整数值,指定简单字符串或字符串数组中的每个元素的最大字符数。可以是:
1 <= length <= 2048(默认值 = 80)
<bounds>指定数组的维度。数组可以有多达 6 个维度。
<bound pair>定义数组的一个维度。任何一个维度最多可以有(包括)32767个元素,依次编号。一个数组最多可以有 2^17 个元素(131072 个,或约 4*32767)。
<lower/upper bound>整数值,通过指定其最低编号的元素(下限)和最高编号的元素(上限)确定每个维度的范围。如果省略下限,默认为零。这三个条件必须满足:
- ‑32767 <= bound <= 32767
- 下限 <= 上限
- (上限 - 下限 + 1)<= 32767
(注意元素在每个维度中按顺序编号。)
示例
dim Nodes(1:100) ! 具有100个元素的一维数字数组(1-100)
Nodes(8) = 368.9 ! 将值分配给第8个元素
dim Tests(100) ! 1x101数字数组;元素是0到100
Tests(8) = 12 ! 将值分配给第9个元素
dim Test_scores(1:5,1:20) ! 5x20数字数组——可以存储20个学生的五个测试成绩
dim Space(10,10,10) ! 3维度数字数组——每个维度有11个元素
dim A(‑3:3,1:10) ! 7x10数字数组——行是 ‑3, ‑2, ‑1, 0, 1, 2, 3
dim Title$[20] ! 长度不超过20个字符的一个字符串变量
dim Types_of_tests$(15) ! 每个最多包含80个字符的16个字符串
dim Q$(1:12,1:115)[22] ! 12组115个字符串,每个字符串最长为22个字符
Q$(6,38) = "Resistor--passed" ! 将一个字符串分配给数组中的一个元素
dim Gh$(‑6:1,4,6,6)[8] ! 字符串数组也可以有任意数量的维度(最多六个)
dim N(8), M(10), SA$(8)[12], Cd(10,‑10:‑5) ! 在一个函数中声明多个变量
dll_
这组命令允许用户从 BT-Basic 内部调用外部 DLL 函数。外部 DLL 必须接受来自 BT-Basic 的调用,解释参数并将其转发给实际的函数,然后将函数结果返回给 BT-Basic。可以同时加载多个 DLL。
命令 | 描述 |
---|---|
dllload | 将 DLL 加载到内存中。 |
dllcall | 调用 DLL 执行自定义函数;可以指定参数。dllload 命令必须在使用此命令之前发出。 |
dllunload | 卸载 DLL。 |
需要外部应用程序 DLL 功能许可才能使用这组命令。
eg:
dllload "flash.dll", Handle_1, Error
dllcall Handle_1, "blank_check", Var_1, ErrMsg$; "0, 0xffff"
dllcall Handle_1, "blank_check", Var_1, ErrMsg$, Error; "0, 0xffff"
dllcall Handle_1, "blank_check", , , Error; "0, 0xffff"
dllunload Handle_1
dllunload Handle_1, Error
dllunload ! 从内存中卸载所有 DLL
dllunload , Error ! 从内存中卸载所有 DLL,包括错误变量
dllload
dllload "<dll-name>", <dll-handle>, [<error variable>]
<dll-name>DLL 文件名。可以包括绝对路径。如果未指定路径,BT-Basic 将在 AgilentICT_ROOT\ext_dev 或当前电路板目录下的 custom_ext_dev 文件夹中查找 DLL。
<dll-handle>随后的 DLL 函数使用的 DLL 句柄。
<error variable> 错误变量的标识符。
dllcall
dllcall <dll-handle>, "<custom function name>", [<return number>], ["<return string>"], [<error variable>]; ["<custom parameters>"]
<dll-handle>从 dllload 返回的 DLL 句柄。
<custom function name>函数名(最多 80 个字符)。
<return number>从被调用的 DLL 函数返回的数字值(可选)。
<return string>从被调用的 DLL 函数返回的字符串值(可选,最多 2048 个字符)。
<custom parameters> 传递给自定义函数的参数(最多 2048 个字符)。
<error variable>错误变量的标识符。
dllunload
dllunload [<dll-handle>], [<error variable>]
<dll-handle> 从 dllload 返回的 DLL 句柄。当未指定 dll-handle 时,该命令会从内存中卸载所有 DLL。
<error variable> 错误变量的标识符。
dps
dps 函数将指定的 DUT 电源设置为 0 V,并将其与测试头断开连接。它还将执行一次 .discharge 测试。如果未指定 DUT 电源,则所有电源将被设置为 0 V,并与测试头断开连接(包括任何在 Utility 卡上的多路复用电源)。
另见:
cps 函数用于将所有 DUT 电源连接到测试头。
sps 函数用于在连接 DUT 电源后进行设置。
语法
dps
dps <ps_number>
dps <ps_number>, <ps_number>
dps <ps_number>, <ps_number>, . . . <ps_number>
<ps_number>用于标识要断开连接的电源的整数(1 到 32)。这是在配置文件中声明的逻辑电源编号。
示例
dps ! 断开所有 DUT 电源以及多路复用电源
dps 1 ! 断开电源 1。
dps 1,2,4 ! 断开电源 1、2 和 4。
dps 25 ! 断开电源 25 上的所有子通道继电器。
dround
dround 函数将其第一个参数四舍五入到由其第二个(整数)参数确定的小数位数。
在四舍五入的值中,如果最后一个有效位的下一位数字是5或更大,则最后一个有效位向上进位。
语法
dround (<numeric expression>,<numeric expression>)
<numeric expression>函数的参数。第一个表达式是要四舍五入的值。第二个表达式表示四舍五入后的有效位数。这个数字是一个整数。
如果它小于1,函数返回0;如果它大于17,则不进行四舍五入。
示例
print dround(34576215 , 4) ! 输出 34580000
print dround(34572215 , 4) ! 输出 34570000
print dround(32.6758612 , 5) ! 输出 32.676
print dround(‑156.64999 , 4) ! 输出 ‑156.6
print dround(132 , 0.7) ! 输出 100 — 注意,0.7被四舍五入为1
print dround(132 , 0.49) ! 输出 0
dutfailed
dutfailed 函数返回当前 Dutfailed 变量的值。该变量指示当前执行的测试是否通过或失败。每次测试开始时,Dutfailed 变量被设置为0,如果测试失败则设置为1。在测试计划中的任何地方都可以使用 dutfailed 函数来确定是否有任何设备测试失败。
如果您正在测试一个电路板面板,dutfailed 函数仅应用于由 board number 函数定义的当前电路板。
boardfailed 变量在电路板层面上执行相同的功能。它指示之前的测试是否失败。boardfailed 函数返回 Boardfailed 变量的当前值。参见 boardfailed 函数的语法描述。
Boardfailed 和 Dutfailed 变量也受 pass device、fail device 和 clear failures 语句的控制。参见这些语句的语法描述以获取更多详细信息。
eg:
if dutfailed then
subexit
end if