diff --git a/examples/nidcpower_source_dc_voltage/NIDCPowerSourceDCVoltage.seq b/examples/nidcpower_source_dc_voltage/NIDCPowerSourceDCVoltage.seq
index 38bca600d..d43f6a219 100644
--- a/examples/nidcpower_source_dc_voltage/NIDCPowerSourceDCVoltage.seq
+++ b/examples/nidcpower_source_dc_voltage/NIDCPowerSourceDCVoltage.seq
@@ -1670,37 +1670,31 @@
E@=3DJC4100hYLECF=_K@0@mKCYo_1KN:<Ta239hF9[gHbEVFDfRINZfQ01CkaUMk5=k`[c;[42MMF9aiNliecVfMFCLXi_`f2H7c\G\X50M=Z4S4aT2QI>A^D:d1\PCI`L11RlV5bM5AIZTc9STI5Mkg<bHlle[O=CL_KEgb?8RiVHS7QmPY@S4X^7I58A@kPaKcPWCOC1;DBf61lViY=]`28BC\B_mEf20ZJS@W@GDDRffLe\Ci;aKbN>i5P_4ScVVBTjIIfn0j8l<e6IcMbZHgCI;n8CRlR7<YcK0@cY[8aDHj=GGkNK;C?KC?b=]mMejoc1gGol1>hL6lf5fZ92?Ia@l1;QL024f^NSm2MhNlcFg_YR[l5kclo:einXehbR>98[4?GC:CX[3hm\UMob2aIMT0eJmgI@\;njRK9]fIl_8f=d]n4bQcRXDEl<o=@Yiik\3Md@?k1=0Joj>?Je`<RUd<JYmeOnOgB3G@Ub\FoGFgIQmQli8nGH=QjKD9i`2nf41XEKj;oDB8iZU`@XP^KWoAKEbOf:ViVAl=_I37KJSec7Ea\nJ5]NZj\OnJF;ASQemRIDbbdglb\U>H[O^bDHO?XMLaOoeVCf=a^CC`d8^TX2B
E@=3@J\4110h]L]Mg[cK3fBoj\Kifo1C[KY_3VgFm3_6n>DfdTDgjaSF_LdVUJaY::FII@T:GB9LaYOo80OP^053LBBVb1G?:50k4;P1c\^`03ffoj9S72=AOm;a2oh?Na\lC7TUOXcNfaSdfIbVCC_ao20aN9bmo_<R_S=>KV;lhbmh89SY[:2UflXcmGIlnngoE]\\ad_6_gW8X9GAXJSPJYin>C71=c74a79JN<`GPK]_\>2`h9IOC]VA5BU4AMW1Qc`j?lJ\aR4__>R4SI_`[_mmnM33ONg`3P[g4N5aSF;ce]^eVffg6>cIRLhI]7CjE^W[jW`kZkGEWHk1=RR;gTe:O[H;k[bAd7UCaTVXgjlho3Af>?oIJdjMo>3=o;aTo\ZZnG9_cgcO7mjV^k>\:gkoOkSn1jkfm@MgLnb<Amg;\Nmj8klk3llhhnW>nn^GCW_fW_>ji]:Va>TNnNQdK5LolNX?M@\6jN2ddlIHh=MT1E^[o4Q7I54R=RlVg[S\KmOe9GM:Qeh9OnUhWTeC^ZM7SAGP1V=LZ4[i\cOmoH[RS6YBL2L\PAg][JQ<Eo?8;D9Mk3M]>N^6>HgJ]KP^a>cfBkkmZ33RdU`]jB_NIOShWL4oDlbn3lNOCL??R7GCmKaTDhekoi_En`9oJKe<e1`lBjmjXJ<^4_^_^>?7O?nEE_WTY:VYEc]3^eJm^cdC7;LcK_]Ei>b<^`9HR6YcO>l@Amg>PLXQbSb^=?FXRUZd<[n<SGjgCQ`mhTl;7NUbgaRQBkXNY4iX5iAJX6C`gdG[d3d>`Uj3DPMF7h71WBBLLR>Tk9dZlFCYSi__fNBBT`C;A>jeP2CdONN52i5^eBEIEI=8EMHBBe^G^1ohD6>LRiJgM\IPYE8Wn`T9W@jf8iEfN:@L3<Ha_l0CCE<HOJjXBRll_NLReo_^K7CQWihL<B1::YXdSaG<XFnCP94dQXb;^6V07F>TkPem>4QI;?9JkF`g80:`G?AULFSY^XW;4XL^_D=GZV9VVODS^[=]dL]b=N;O[ib6]2aLATM7\AcX=JH<\1j8_?I9_VUO]5;PKjdi^o>Kn=FbmhAmF3EXh?dAPF?cWPU;NHFT9YBblF15fj0n]RK9>d;@lD9HXLGTZOAa;gEd6:MElAPOkOoMom`hnaYko^ne_;PeC\`kMYOoCalP3DR_^NADNSV6R1Nk4f?=Lo;VQ>7>fR@=2j8C:;D@3fk>^=YHE^PQ1fU>TFoNH>GnfRGNMNW`[okK`S56RJfM4Zmo^6E9ZYc>FNEO3PO=T9eK0:bgljYdR7WooKS9eTjd@bcImNVZ8UXa:AC_F_WCj]4\6ST<:ie_AbZFIL7UmlIne:BcTQ5T2U]O2goYWXRN5F8oeQT^`HXPD=2LV[h;ibbNNj1kU]lXlnX4ACO5aRA@TfHY77@P?L=_N@4^cJG;Wi2@3M5OQ:^@>2K9_9W:4Vn1LGaRN@WL9AFFVg1oYHdi`54XIa5G[\i>iPT4506XA7h2^c_T`3d[ARdFICaAS2RM:1KgT7B>MhXVaI<kA^@CX2aS^I:B>=W<U?l<DWU<Jd7^cKe2R]EdIBcBQZni_K1JPCEhV>VH]FBZ<5413k[U]MAFA`Ohma2g2NoU0@E;FI93Yi;RjnlScC;`glEaH^X@K[NY9Y1EUZc6V6\3?FKC0APU0^[aP:_GMI=eeWnJ<6e2]@;AXaAE<S[lhAb`XFjPP@dTXNYS=<568je\`W3?@gn9HDaM84^>SDl0<Ba6YNKCeYZ\CUU?WGnR4=m^aN[KTlFG\?VZ[MC:3HfflAagl\jZUG@ScZW:2K\FU9TQa<h;?iYb<RJI66IEg<WHgdkU:\KFIZG\BDU=9W>:\:W7nM3NIjXT;2YV[@dDaY3bhOQY^af<UVo:ZV^^@0d_M5ObRQ2PIHZ9bbbGm;4Z\KEfEYI=M];D@9j1kZ@2@FIkf9:\CYe5KnKANXH7R@eMc2M;Pl]PZG]@4h2Q7OY:=QFh@\Y6]E6X1bL6mjS76a`JS=H=XQReG6Djb7[c<h@S5UCX4`ABLQ4:ZZ7=JF9JejC5\[T:meE5_[:`Qm=DfI0EDQLRH6o]LAPRXlbTgXSbnW7ZTN?N]lH02JKm;Z4hn<A[89:C8lM5hC]Ab^\\WNK7JGS]XainLm:PWFF3EmC15\]YC\D;I6a<NiIhd2GMIG`A9\[]T00fP:UXIXSHk2jI>XFG>I521bbKDA`Xb]h>oAl>IolbRB7j=i9_H89<FR=U572U\LjNhnkeeemHDJJ\GHX\;J51M<?QV2DneREAR3in6<M75M_Re=Ci3gEOQ2VO`4P8_hfhSO\dZ7m]n\hlV6gSlSC@PoZSe8WUaY3d0_;Z=9H:I6Gf2PVG`mf8CC87@DBlT62^h6QFFhZF64BJ46@Dh<T1=C]0_9J?073S@61ADIUT31<mVE<W?R@RBUJP`@;50X2Bh618KM^bf033T033D?NM@P`?0\dBA3A8AXF0]@KnP[5<EDfUICcBF^EZT=:cWKBKYTDKXD=<A:mkNB7LFDHC9b7nG57NFZ1]Ubo]8]0MN]YWJJ>eS42I?===3_n_?J=384=Go8e^0mdmBiTjRaf;F@8M4_gCZSGQ3cUUnF6J_R9WJV0PNaTJDk<RiWS6=>Rf9EmM:WgL4LHg5oH[aMbbOlnI6b`9KZ^Z]oAdeH\@YgaV8ChHTKjEVA]a^YN<;71CAbR\<jAYI\\Y<R\`1AOol`j1>53?d8MV_@kAN_W4nIdKc0gRYHEo`]U?HWN?0<?l2h:ZC\>^D]Ug4FNZl123fNoZ7fLRB[_HR6O>BaoomWl_8YS0Q\8;RB]@j=GIIe]J<AT[;1I<5ZJ\?Va5g?>7hXgcbU4V=lT>nV[28JKeQJ5QX4^WD3MfTBIBPKU57e>[FRd>_EeSHJhDa4hM9S9TUlOR=KWn]eAJ]W5VROh9ak`n5<LV6L9d<0`?fk]J8FW52OlL2i<L1kO=mGBf9e:\`^[_J:F>7o0_9mGc_`=KP@SW_^NU525JcQcEGhR8Da3gf4mJ?R6a2lLPKjL:TlfL8iHOKf:Mjeb\>Xb3>0kM@iNkaifYHDFNIKP\e^;bhg@V<g0Za7F]R=JKPMgdg>nYaMSb8MAV0o05XKjM5<5^V=albT\<868hhl^jHPRa0KcT4i[31chfOeGW>;``>>I;B:YafYW>jW_7D1>9_X14U9VXJ5E_PA2ZPb>n6eBLcN]SU4eSd<IDGD4D5WHMlFCU0DeARScb:h\?EC1>IBWead>7F>FeBea\oCS]jf@kE47ZHcB?TlP6_K[QC2@_N>ilNn0VdgZE>Z98hXCHa4bNUM16M74Q;DhldmcZ>V?_TG1J?NI:F8<aomhdPX5^AEe6BRYle4clf_gSb6D9LaD2h]ij8SAH@[`J@cb2G7ee@iZWl2A>`Ga95FDhJo7Xo>Zd3[jL<DQ4OILX9a;0T\SUDWY:Bh>WGNb:dHQ[S`[8:1L:F@>H[49RQ6_3QV<UT0oIITF^H_\X=:<42`N``YjM75HWEd]5O`<EX89FTP`^oN:QHgED5k:\CaYbA2GbD1;X5:N;?SoLhVhR`R_9lg3hU4n:I`2Gn:IjDHED]5i=2fcTklTK1H6k4HjK;HBM>;c]9;i[MFD?WaY1O]oS293kLd9S3N6He?:_QKEcBGLOc:jB6H@fR]h]HGB5;:<RE<`3K4Ibi29dR;nU<<TKBRnTdK[ZTT6oiOVVXKgaP6<lMTO_JC\0<RY5NkR352<FbcCB<_3?0XjQ`BJP;OJR::8eHFb3<;M\9FOC8T:MkD:Z;C=eb^0:AMSbSY_^Lc=SGbD5WDh@6j]PCDc@;\X1Nb\[`Z0W_Th5<HD4CafYghb`T95Ko571]SZJDHF2eE<7jViL_\8TQ@dFRo]`G[h3>862l:2F[UU6dVbFjU?NI>OHOk>JNcFNU[mXi]iJ[neWQ\mWa]i[e?IkO^Mf]LHTP[G3?43M8g^Wh``lW3kBT7ADM6b_IUCIPO=C8g5@?9R3<hilXNY7_<THNN<KMLm;eGM6_A6AUDB\c5Q;S2POniP9[mdEeIDnO7;T7Nia2nFN\L2XZIP?ZJKW\2cK0U5fb[dLn?[C>YAMXfVFic02OQA\6LHEk0oBd0f;`kR1hImAUl:@I;^:oFJUF?mDgPlLokm]OIgenn9;n5[Oh3g7@W7OWBCk9X1mYDPF9AQ4LOGeM_D_WR?I7QRlVEmN_0QlA9^lO[HjnfngGjkHokO\A35=_4hVU^jKm;\?Y9^B=RkTG1I<6nI`AQ_kJ;of[GmIi[g0]1\UG_FKUnX]ZcGmoI;NUdDFOolHn;NbMLkT`1GEo;j63N_8b_O`PQ[KRjb<NDHW4;\lT[Ila;nMd`56_c\C25fJLUS;9fn@6[[SMIBBMFK\8d;ZIRSI;fJ5_cojWSIfcY2kNd1jkS0f9A3BNfk8W1m4H0gRbfA3J6Q726nmNm4PQYcWZ___NEf_FmmmOm40IZ1mf4PmS?H8k>=J3g<\1K6j;CNTGZ8kY61mk30RLUO`T`_H`Hg<`\K67=HJ3g<\3K6iGRVO9``_1H`L`\K6`f=371ikY61mf30S<W]K86enT`_H`Hg<=fbaLQO`c@<hK;Rmmf>KT=]4\mm;NkW]^mcFgV[_]l=8aHk_j]MgIEYV5XJkiW]l^^CKnYn2OgNJ0g<fR\mWo;?JNcFN^cfL_eWZ[Eff[LeWebL[d?YfWFm3O0neW6m3NP3nGQ@G_M?lS61c3KG?`NUXHYTJ?j1SoC7V>RGj_]d[blRO_M^Qg>f_[0oQJWgg`CkhXXJ\hG;1Ujg`4MNjIg_6l3GG;oohYSNBallm3eZnFmebBeaLSDIS17WJfDBN9nUo^n2oC_;Q\;4O3WWk7mAZI17;2]ChHfZeJ;I\fY;^dB\J;NW@cEDj]HE]B8GSiKJgN9M6f4UIKhV02kFjYnXXBH9lF?3gDC<EC`d=4l<aIYa?]YS<9Zl8]AkXcPg:6L69WWX^8R2;YXfC<Xg6AQg@oOoChH=41ln]AG?J3U0Wn>8[8cdWGUnL2Z>Ll4HaNcI<f]SiWCVXSMeP?^a7:Tf<`L3cKdmDl7?Uj>FnPG5NSQBkHE`Yj>ZNQ^;UbDk0kCT]3]YV<50o<2<aTY7THb5hg;3^hl@GYRZE@mbL?5gdHJNW5`6W8[eho^38?;R459L4WN1Jg[egNX[3[_>lAAY>L9Z_H5YN]9:KZMj\cPGZco]??=ig[hH7YShgPS8:44leI:@9R?fLHKlH6UZ]nlAXHFAFUn7AdT=;FK^oZgocoK[2W_=Aj]T;2mBd8`7h`B0K>IP<04@S6]dA9N`8Q8YBk19T@8RFF4T29OB1V7TX7QM01@hI@3`QJ=4@H\nBkS2d5P1BDgN8?4B230Y8lb8ONC@?IPH0A@OMPD?HZ@1`>mj`5N5c60PN06hNI1c8`@k6b0M9IN3`QM68;M1l5Bl>6cX>XD78V@S2j5Ad;C<0cA7OX0nM8<iaN3K0@0Kil664BNSOe:0@R=6NA66f9@PX0d0dHb:LL\6@1aSJl[5h6I38X<0`;0<Al748MXb84H=@Y<lI\5@GNMD;RJd?DeY0Ac1J230g>d1e00LP8d;>V@59CQA1BG<@2[2A45hE8CX:H0A=a\KRAC<Q0YPRb5D<IR63P1QX<JXCS9a3FQ>daQVRjO4I;1da1URZ;LZ444@R2PX2XAXA9Te@FngkoKI_ea>NZN^m\`1H5CMhX9Bn1?ZYS0WAbR2RD8F3W@XajF1=AXS6<TS4i09PN?`gPUG9G3J26`2GbAW]jGY5<AGn^iZAjM_;W5<g^kKMC]B[X13GZm3mmNffKMhb:cJ]DAT>a?_4H8jZX2PIja6[DFTFC:]l]=1AN=PD`VJ>HX2k?Pj7:bQ`W[XWe0\38<V=I\:]2HOl74S6e0a;ZmCFf:3FnRcED67[hUWZPU7ZZKLUVD\PFX_FVE23Q7WUaWV=U><ZRLQB8LDd0hS94OC1D?6J9N:\\`US2k:iaJY8jY]eTVWO0KLeICMh3dn\dH86aYA7eY]eZZ3=d6WJLE7IPEWIe=_c4FYLEhdA\b5XoJQE;n[HFdKI7C3oK`RFK6l`B8RhhCXhP8XnP3841548PB6P6B[DKHS41JU<Qne:U\ARQ=B[VDHSOT307XA07Qhn2d8RBoajKU>9P@S2lYle3RId0IIf072nP8>;NUah=0ilGD:G5\RN_\=;5jTD@iTfQNGIfmQJ2oJl[SBFC]DLncWBE4mFZe6d_Ob>3YC4APEA@D_mOFNI8ALek79bT>:a8]EjYToY<]8C`FV4Z``X`1aB@L<?V9ARCQ4c:K71jA4o8X@_N2@;?hf9D0M0]D;:A]?]T5@Y1`>Vi=L5H`I25YCYJTF@F?fd@VbI9Pf6?dDZY8JdAcR`QM5>MT<aOnO7<DiRiB;\k?RRIHVCkC<FWi=5fXF\he2n@Q>2TEkZIo6kBK3\C@]3\oE]=7UY8knVi7O5=^_a6d;G^?DaLI=YY]ARAc7NRDMhAYZlK90=KQlem6G@;;lecBDFecfKNA=H>mJl3I59=NFgn`nf[B1:05f5E[`fiTPQ4EDe1H=4ZRWkf3TWlOP>Ela5hZDn]cQJC=UBXIIJdWiR@KZe]DHRbmfI;]VYoi>o?3K1h=6
-
-
+
+
+
+
+
- "%ModuleDescription"
+ ResStr("NI_STEPTYPES", "ACTION_DESCRIPTION_NAME") + (("%ModuleDescription" == "") ? "" : ", %ModuleDescription")
- ResStr("NI_STEPTYPES", "EDIT_DEF_SUBSTEP_NAME")
+ ResStr("NI_STEPTYPES", "ACTION_DEF_STEP_NAME")
-
-
-
-
-
-
-
- false
-
-
+
-
-
+
+
@@ -2118,62 +2112,26 @@
1
-
+
-
-
+
+
_notNamed
- 0
+ 7
-
- 4
-
-
- 0
-
-
-
-
-
- 0
-
-
- 0
-
-
- 0
-
-
-
-
- <_NAME_IN_ATTRIBUTE_ typename='Expression' xsi:type='Expression' name='' classname='ExprValue' structureflags='131072'>
- 1024
-
-
-
-
-
- 1024
-
-
- 0
-
-
+
-
-
+
+
-
-
- 0
-
+
-
+
@@ -2186,7 +2144,7 @@
-
-
-
-
-
-
+
-
-
+
+
-
+
-
+
+ true
+
+
+ 3
+
+
-
-
+
+
-
-
+
+
+
+
+
+ true
+
+
+
+
+
+ 1
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
- <_NAME_IN_ATTRIBUTE_ typename='FCParameter' xsi:type='FCParameter' name='' classname='FCParameter' structureflags='131072'>
+ <_NAME_IN_ATTRIBUTE_ typename='NI_PythonParameter' xsi:type='NI_PythonParameter' name='' classname='CPythonParameter' structureflags='131072'>
_notNamed
- 0
+ 7
-
- 4
-
-
- 0
-
-
-
-
-
- 0
-
-
- 0
-
-
- 0
-
-
-
-
- <_NAME_IN_ATTRIBUTE_ name='' classname='ExprValue' structureflags='0'>
- 1024
-
-
-
-
-
- 1024
-
-
- 0
-
-
+
-
-
+
+
-
-
- 0
-
+
-
+
@@ -2287,7 +2235,7 @@
-
+
@@ -2302,66 +2250,27 @@
-
-
-
-
+
Return Value
- 3
+ 7
-
- 4
-
-
- 0
-
-
-
-
-
- 0
-
-
- 0
-
-
- 0
-
-
-
-
- <_NAME_IN_ATTRIBUTE_ name='' classname='ExprValue' structureflags='0'>
- 1024
-
-
-
-
-
- 1024
-
-
- 0
-
-
+
-
-
+
+
-
-
- 0
-
+
-
+
@@ -2374,7 +2283,7 @@
-
+
@@ -2389,3082 +2298,1977 @@
-
-
-
-
+
-
+
+
+ 5
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0
-
+
-
+
-
-
+
+
-
-
-
-
+
+ "%ModuleDescription"
+
+
+ ResStr("NI_STEPTYPES", "EDIT_DEF_SUBSTEP_NAME")
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+ true
+
+
+ true
+
+
+ ""
+
+
+ ResStr("NI_STEPTYPES", "EDIT_SUBSTEP_MENU_ITEM_NAME")
+
+
+ ""
+
+
+ false
+
+
+ false
+
+
+ EditSubsteps
+
+
+
+
+
+
+
+ DefaultLabVIEWNXG|DefaultLabVIEW|DefaultCVI|DefaultVB.NET|DefaultCSharp.NET|DefaultC++.NET|DefaultVC++_Template|DefaultHTB72_Template|DefaultHTB80_Template|Default_Template
+
+
+
+
+ <_NAME_IN_ATTRIBUTE_ typename='NI_CustomResult' xsi:type='NI_CustomResult' name='' classname='CustomResult'>
-
+
+
+
+
+
+
+
+
+
+
+ 8192
+
+
+ 2
+
+
-
-
-
-
+
+ 3
+
+
+ true
+
+
-
-
+
+
+
+
+
-
-
-
- CommonSubsteps.dll
-
-
- EditStatementStep
-
-
-
-
- <_NAME_IN_ATTRIBUTE_ name='' classname='FCParameter' structureflags='0'/>
-
-
-
-
-
- Return Value
-
-
- 3
-
-
- 4
-
-
- 2
-
-
-
-
-
- 0
-
-
- 0
-
-
- 0
-
-
-
-
- <_NAME_IN_ATTRIBUTE_ name='' classname='ExprValue' structureflags='0'>
- 1024
-
-
-
-
-
- 1024
-
-
- 0
-
-
-
-
-
-
-
-
- 0
-
-
-
-
-
-
-
-
-
- 8192
-
-
- 1
-
-
-
-
-
-
-
-
-
- 8192
-
-
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- context
-
-
- 4
-
-
- 4
-
-
- 0
-
-
-
-
-
- 0
-
-
- 0
-
-
- 0
-
-
-
-
- <_NAME_IN_ATTRIBUTE_ name='' classname='ExprValue' structureflags='0'>
- 1024
-
-
-
-
-
- 1024
-
-
- 0
-
-
- ThisContext
-
-
-
-
-
- 0
-
-
-
-
-
-
-
-
-
- 8192
-
-
- 1
-
-
-
-
-
-
-
-
-
- 8192
-
-
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- reserved
-
-
- 0
-
-
- 4
-
-
- 0
-
-
-
-
-
- 0
-
-
- 0
-
-
- 0
-
-
-
-
- <_NAME_IN_ATTRIBUTE_ name='' classname='ExprValue' structureflags='0'>
- 1024
-
-
-
-
-
- 1024
-
-
- 0
-
-
- 0
-
-
-
-
-
- 0
-
-
-
-
-
-
-
-
-
- 8192
-
-
- 1
-
-
-
-
-
-
-
-
-
- 8192
-
-
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- changed
-
-
- 0
-
-
- 4
-
-
- 2
-
-
-
-
-
- 1
-
-
- 0
-
-
- 0
-
-
-
-
- <_NAME_IN_ATTRIBUTE_ name='' classname='ExprValue' structureflags='0'>
- 1024
-
-
-
-
-
- 1024
-
-
- 0
-
-
- RunState.InitialSelection.SelectedFile.ChangeCount
-
-
-
-
-
- 0
-
-
-
-
-
-
-
-
-
- 8192
-
-
- 1
-
-
-
-
-
-
-
-
-
- 8192
-
-
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0
-
-
-
-
-
-
-
- PreloadWhenExecuted
-
-
- UnloadWithFile
-
-
- Normal
-
-
- None
-
-
- 1
-
-
- true
-
-
- false
-
-
- false
-
-
-
-
-
- 0
-
-
- false
-
-
-
-
-
- 1
-
-
-
-
-
-
-
-
- 1
-
-
- 2
-
-
- 0
-
-
- true
-
-
- Next
-
-
- Next
-
-
-
-
-
-
-
-
-
-
-
- Next
-
-
- Next
-
-
-
-
-
-
-
-
- NoLooping
-
-
-
-
-
-
-
-
- RunState.LoopIndex += 1
-
-
- RunState.LoopIndex = 0
-
-
- 0
-
-
-
-
-
-
-
-
-
-
-
- true
-
-
- true
-
-
- true
-
-
- true
-
-
- 0
-
-
-
-
- <_NAME_IN_ATTRIBUTE_ name='' classname='CustomResult'>
-
-
-
-
-
-
-
-
-
-
-
- 8192
-
-
- 2
-
-
-
-
- 3
-
-
- true
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 1
-
-
-
-
-
-
-
-
-
-
- true
-
-
-
-
-
-
-
-
-
- <_NAME_IN_ATTRIBUTE_ name='' classname='CustomResult'>
-
-
-
-
-
-
-
-
-
-
-
- 8192
-
-
- 2
-
-
-
-
- 3
-
-
- true
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 1
-
-
-
-
-
-
-
-
-
-
- true
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0
-
-
-
-
-
- false
-
-
-
-
-
-
-
-
-
-
-
-
-
- ResStr("NI_SUBSTEPS", "STATEMENT_EDIT_STEP_MENU_NAME")
-
-
- true
-
-
- true
-
-
-
-
-
-
-
- LocalizeExpression(Step.TS.PostExpr)
-
-
- ResStr("NI_SUBSTEPS", "STATEMENT_DEF_STEP_NAME")
-
-
-
-
- false
-
-
- false
-
-
- ""
-
-
- ResStr("NI_SUBSTEPS", "STATEMENT_MENU_ITEM_NAME")
-
-
- ""
-
-
- false
-
-
- false
-
-
- NI_Miscellaneous
-
-
-
-
-
-
- <_NAME_IN_ATTRIBUTE_ typename='NI_CustomResult' xsi:type='NI_CustomResult' name='' classname='CustomResult'>
-
-
-
-
-
-
-
-
-
-
-
- 8192
-
-
- 2
-
-
-
-
- 3
-
-
- true
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 1
-
-
-
-
-
-
-
-
-
-
- true
-
-
-
-
-
-
-
-
- ResStr("NI_SUBSTEPS", "STATEMENT_EXPRESSION")
-
-
- LocalizeExpression(Step.PostExpression)
-
-
-
-
-
- 8192
-
-
- 2
-
-
-
-
- 3
-
-
- true
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 1
-
-
-
-
-
-
-
-
-
-
- true
-
-
-
-
-
-
-
-
-
-
-
-
- StatementStep.ico
-
-
-
-
-
-
- PreloadWhenExecuted
-
-
- UnloadWithFile
-
-
- Normal
-
-
- None
-
-
- 1
-
-
- true
-
-
- false
-
-
- false
-
-
-
-
-
- 0
-
-
- false
-
-
-
-
-
- 1
-
-
-
-
-
-
-
-
- 1
-
-
- 2
-
-
- 0
-
-
- true
-
-
- Next
-
-
- Next
-
-
-
-
-
-
-
-
-
-
-
- Next
-
-
- Next
-
-
-
-
-
-
-
-
- NoLooping
-
-
-
-
-
-
-
-
- RunState.LoopIndex += 1
-
-
- RunState.LoopIndex = 0
-
-
- 0
-
-
-
-
-
-
-
-
-
-
-
- false
-
-
- true
-
-
- true
-
-
- true
-
-
- 0
-
-
-
-
-
-
-
-
-
-
-
- <_NAME_IN_ATTRIBUTE_ name='' classname='CustomResult'>
-
-
-
-
-
-
-
-
-
-
-
- 8192
-
-
- 2
-
-
-
-
- 3
-
-
- true
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 1
-
-
-
-
-
-
-
-
-
-
- true
-
-
-
-
-
-
-
-
-
- <_NAME_IN_ATTRIBUTE_ name='' classname='CustomResult'>
-
-
-
-
-
-
-
-
-
-
-
- 8192
-
-
- 2
-
-
-
-
- 3
-
-
- true
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 1
-
-
-
-
-
-
-
-
-
-
- true
-
-
-
-
-
-
-
-
-
-
-
-
- NIStepTypeControls.dll|NationalInstruments.TestStand.StepTypeControls.StatementTabInfo
-
-
-
-
-
-
-
-
-
- 0
-
-
-
-
-
- false
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- false
-
-
- false
-
-
-
-
-
-
-
-
-
-
-
- ResStr("NI_STEPTYPES", "ACTION_DESCRIPTION_NAME") + (("%ModuleDescription" == "") ? "" : ", %ModuleDescription")
-
-
- ResStr("NI_STEPTYPES", "ACTION_DEF_STEP_NAME")
-
-
-
-
- false
-
-
- false
-
-
- ""
-
-
- ResStr("NI_STEPTYPES", "ACTION_MENU_ITEM_NAME")
-
-
- ""
-
-
- false
-
-
- false
-
-
- Action
-
-
-
-
-
-
- <_NAME_IN_ATTRIBUTE_ typename='NI_CustomResult' xsi:type='NI_CustomResult' name='' classname='CustomResult'>
-
-
-
-
-
-
-
-
-
-
-
- 8192
-
-
- 2
-
-
-
-
- 3
-
-
- true
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 1
-
-
-
-
-
-
-
-
-
-
- true
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PreloadWhenExecuted
-
-
- UnloadWithFile
-
-
- Normal
-
-
- None
-
-
- 1
-
-
- true
-
-
- false
-
-
- false
-
-
-
-
-
- 0
-
-
- false
-
-
-
-
-
- 1
-
-
-
-
-
-
-
-
- 1
-
-
- 2
-
-
- 0
-
-
- true
-
-
- Next
-
-
- Next
-
-
-
-
-
-
-
-
-
-
-
- Next
-
-
- Next
-
-
-
-
-
-
-
-
- NoLooping
-
-
-
-
-
-
-
-
- RunState.LoopIndex += 1
-
-
- RunState.LoopIndex = 0
-
-
- 0
-
-
-
-
-
-
-
-
-
-
-
- true
-
-
- true
-
-
- true
-
-
- true
-
-
- 0
-
-
-
-
-
-
-
-
-
-
-
- <_NAME_IN_ATTRIBUTE_ name='' classname='CustomResult'>
-
-
-
-
-
-
-
-
-
-
-
- 8192
-
-
- 2
-
-
-
-
- 3
-
-
- true
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 1
-
-
-
-
-
-
-
-
-
-
- true
-
-
-
-
-
-
-
-
-
- <_NAME_IN_ATTRIBUTE_ name='' classname='CustomResult'>
-
-
-
-
-
-
-
-
-
-
-
- 8192
-
-
- 2
-
-
-
-
- 3
-
-
- true
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 1
-
-
-
-
-
-
-
-
-
-
- true
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0
-
-
-
-
-
- false
-
-
-
-
-
-
-
-
-
-
-
-
-
- DefaultLabVIEW|DefaultLabVIEWNXG|DefaultCVI|DefaultVB.NET|DefaultCSharp.NET|DefaultC++.NET|DefaultVC++_Template|DefaultHTB72_Template|DefaultHTB80_Template|Default_Template
-
-
-
-
-
-
-
-
- false
-
-
- false
-
-
- Action
-
-
-
-
-
-
-
-
-
-
-
- 8192
- %#x
-
-
- 1
-
-
-
-
-
-
-
-
- _notNamed
-
-
- 7
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 8192
-
-
- 1
-
-
-
-
-
-
-
-
-
- 8192
-
-
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- true
-
-
- 3
-
-
-
-
-
-
-
-
-
-
-
- true
-
-
-
-
-
- 1
-
-
- 0
-
-
-
-
-
-
-
-
-
-
-
-
-
- <_NAME_IN_ATTRIBUTE_ typename='NI_PythonParameter' xsi:type='NI_PythonParameter' name='' classname='CPythonParameter' structureflags='131072'>
-
-
- _notNamed
-
-
- 7
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 8192
-
-
- 1
-
-
-
-
-
-
-
-
-
- 8192
-
-
- 1
-
-
-
-
-
-
-
-
-
-
-
-
- Return Value
-
-
- 7
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 8192
-
-
- 1
-
-
-
-
-
-
-
-
-
- 8192
-
-
- 1
-
-
-
-
-
-
-
-
-
-
-
- 5
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <_NAME_IN_ATTRIBUTE_ name='' classname='TEResult'/>
-
-
-
-
-
-
-
-
-
-
-
-
-
- ID#:1m8fotxw7RGuNrjdh1OqZD
-
-
- Measurement\Measurement.ico
-
-
-
-
-
- PreloadWhenExecuted
-
-
- UnloadWithFile
-
-
- Normal
-
-
- None
-
-
- 1
-
-
- true
-
-
- false
-
-
- false
-
-
-
-
-
- 0
-
-
- false
-
-
-
-
-
- 1
-
-
-
-
-
-
-
-
- 1
-
-
- 2
-
-
- 4
-
-
- true
-
-
- Next
-
-
- Next
-
-
-
-
-
-
-
-
-
-
-
- Next
-
-
- Next
-
-
-
-
-
-
-
-
- NoLooping
-
-
-
-
-
-
-
-
- RunState.LoopIndex += 1
-
-
- RunState.LoopIndex = 0
-
-
- 0
-
-
-
-
-
-
-
-
-
-
-
- true
-
-
- true
-
-
- true
-
-
- 0
-
-
-
-
- <_NAME_IN_ATTRIBUTE_ name='' classname='CustomResult'>
-
-
-
-
-
-
-
-
-
-
-
- 8192
-
-
- 2
-
-
-
-
- 3
-
-
- true
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 1
-
-
-
-
-
-
-
-
-
-
- true
-
-
-
-
-
-
-
-
-
- <_NAME_IN_ATTRIBUTE_ name='' classname='CustomResult'>
-
-
-
-
-
-
-
-
-
-
-
- 8192
-
-
- 2
-
-
-
-
- 3
-
-
- true
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 1
-
-
-
-
-
-
-
-
-
-
- true
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0
-
-
-
-
-
- false
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ni.examples.NIDCPowerSourceDCVoltage_Python
-
-
-
-
- <_NAME_IN_ATTRIBUTE_ name='' classname='Obj'>
-
-
-
-
-
-
-
-
-
-
-
- false
-
-
- 0
-
-
-
-
-
- 0
-
-
-
-
-
-
-
-
-
-
-
- pin_names
-
-
- {"Pin1"}
-
-
- In
-
-
- true
-
-
- 1
-
-
- TypeString
-
-
- 1
-
-
- Pin
-
-
-
-
-
-
-
-
- voltage_level
-
-
- 6
-
-
- In
-
-
- true
-
-
- 0
-
-
- TypeDouble
-
-
- 2
-
-
- None
-
-
-
-
-
-
-
-
- voltage_level_range
-
-
- 6
-
-
- In
-
-
- true
-
-
- 0
-
-
- TypeDouble
-
-
- 3
-
-
- None
-
-
-
-
-
-
-
-
- current_limit
-
-
- 0.01
-
-
- In
-
-
- true
-
-
- 0
-
-
- TypeDouble
-
-
- 4
-
-
- None
-
-
-
-
-
-
-
-
- current_limit_range
-
-
- 0.01
-
-
- In
-
-
- true
-
-
- 0
-
-
- TypeDouble
-
-
- 5
-
-
- None
-
-
-
-
-
-
-
-
- source_delay
-
-
- 0
-
-
- In
-
-
- true
-
-
- 0
-
-
- TypeDouble
-
-
- 6
-
-
- None
-
-
-
-
-
-
-
-
- measurement_sites
-
-
-
-
-
- Out
-
-
- true
-
-
- 1
-
-
- TypeInt32
-
-
- 1
-
-
- None
-
-
-
-
-
-
-
-
- measurement_pin_names
-
-
-
-
-
- Out
-
-
- true
-
-
- 1
-
-
- TypeString
-
-
- 2
-
-
- None
-
-
-
-
-
-
-
-
- voltage_measurements
-
-
-
-
-
- Out
-
-
- true
-
-
- 1
-
-
- TypeDouble
-
-
- 3
-
-
- None
-
-
-
-
-
-
-
-
- current_measurements
-
-
-
-
-
- Out
-
-
- true
-
-
- 1
-
-
- TypeDouble
-
-
- 4
-
-
- None
-
-
-
-
-
-
-
-
- in_compliance
-
-
-
-
-
- Out
-
-
- true
-
-
- 1
-
-
- TypeBool
-
-
- 5
-
-
- None
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- true
-
-
-
-
- 0
-
-
- true
-
-
- "Unnamed Entry Point"
-
-
- True
-
-
-
-
-
- false
-
-
- false
-
-
- true
-
-
- false
-
-
- true
-
-
- false
-
-
- false
-
-
- false
-
-
- true
-
-
- 2953567917
-
-
-
-
-
-
-
-
-
-
-
- 2
-
-
-
-
-
-
- Test UUTs and Single Pass call this callback in their setup step group. It is empty in the model file. Override this in the client file to perform an action before any code in the model executes.
-
-
-
-
-
-
-
- <_NAME_IN_ATTRIBUTE_ name='' classname='TEResult'/>
-
-
-
-
-
-
-
-
-
-
-
-
-
- ID#:CHEZyO1w7RGuNrjdh1OqZD
-
-
- StatementStep.ico
-
-
-
-
-
- PreloadWhenExecuted
-
-
- UnloadWithFile
-
-
- Normal
-
-
- None
-
-
- 1
-
-
- true
-
-
- false
-
-
- false
-
-
-
-
-
- 0
-
-
- false
-
-
-
-
-
- 1
-
-
-
-
-
-
-
-
- 1
-
-
- 2
-
-
- 0
-
-
- true
-
-
- Next
-
-
- Next
-
-
-
-
-
-
-
-
-
-
-
- Next
-
-
- Next
-
-
-
-
-
-
-
-
- NoLooping
-
-
-
-
-
-
-
-
- RunState.LoopIndex += 1
-
-
- RunState.LoopIndex = 0
-
-
- 0
-
-
-
-
-
- FindFile(FileGlobals.MeasurementLink.PinMapFileName,True,FileGlobals.MeasurementLink.PinMapPath)
-
-
-
-
-
- false
-
-
- true
-
-
- true
-
-
- true
-
-
- 0
-
-
-
-
- <_NAME_IN_ATTRIBUTE_ name='' classname='CustomResult'>
-
-
-
-
-
-
-
-
-
-
-
- 8192
-
-
- 2
-
-
-
-
- 3
-
-
- true
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 1
-
-
-
-
-
-
-
-
-
-
- true
-
-
-
-
-
-
-
-
-
- <_NAME_IN_ATTRIBUTE_ name='' classname='CustomResult'>
-
-
-
-
-
-
-
-
-
-
-
- 8192
-
-
- 2
-
-
-
-
- 3
-
-
- true
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 1
-
-
-
-
-
-
-
-
-
-
- true
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0
-
-
-
-
-
- false
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ID#:fhWpfuRw7RGuNrjdh1OqZD
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PreloadWhenExecuted
+
+
+ UnloadWithFile
+
+
+ Normal
+
+
+ None
+
+
+ 1
+
+
+ true
+
+
+ false
+
+
+ false
+
+
+
+
+
+ 0
+
+
+ false
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+ 1
+
+
+ 2
+
+
+ 4
+
+
+ true
+
+
+ Next
+
+
+ Next
+
+
+
+
+
+
+
+
+
+
+
+ Next
+
+
+ Next
+
+
+
+
+
+
+
+
+ NoLooping
+
+
+
+
+
+
+
+
+ RunState.LoopIndex += 1
+
+
+ RunState.LoopIndex = 0
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+ true
+
+
+ true
+
+
+ true
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+ <_NAME_IN_ATTRIBUTE_ name='' classname='CustomResult'>
+
+
+
+
+
+
+
+
+
+
+
+ 8192
+
+
+ 2
+
+
+
+
+ 3
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+ <_NAME_IN_ATTRIBUTE_ name='' classname='CustomResult'>
+
+
+
+
+
+
+
+
+
+
+
+ 8192
+
+
+ 2
+
+
+
+
+ 3
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+ false
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+ 8192
+ %#x
+
+
+ 1
+
+
+
+
+
+
+
+
+ _notNamed
+
+
+ 0
+
+
+ 4
+
+
+ 0
+
+
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+
+
+ <_NAME_IN_ATTRIBUTE_ typename='Expression' xsi:type='Expression' name='' classname='ExprValue' structureflags='131072'>
+ 1024
+
+
+
+
+
+ 1024
+
+
+ 0
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+ 8192
+
+
+ 1
+
+
+
+
+
+
+
+
+
+ 8192
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <_NAME_IN_ATTRIBUTE_ typename='FCParameter' xsi:type='FCParameter' name='' classname='FCParameter' structureflags='131072'>
+
+
+ _notNamed
+
+
+ 0
+
+
+ 4
+
+
+ 0
+
+
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+
+
+ <_NAME_IN_ATTRIBUTE_ name='' classname='ExprValue' structureflags='0'>
+ 1024
+
+
+
+
+
+ 1024
+
+
+ 0
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+ 8192
+
+
+ 1
+
+
+
+
+
+
+
+
+
+ 8192
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Return Value
+
+
+ 3
+
+
+ 4
+
+
+ 0
+
+
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+
+
+ <_NAME_IN_ATTRIBUTE_ name='' classname='ExprValue' structureflags='0'>
+ 1024
+
+
+
+
+
+ 1024
+
+
+ 0
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+ 8192
+
+
+ 1
+
+
+
+
+
+
+
+
+
+ 8192
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CommonSubsteps.dll
+
+
+ EditStatementStep
+
+
+
+
+ <_NAME_IN_ATTRIBUTE_ name='' classname='FCParameter' structureflags='0'/>
+
+
+
+
+
+ Return Value
+
+
+ 3
+
+
+ 4
+
+
+ 2
+
+
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+
+
+ <_NAME_IN_ATTRIBUTE_ name='' classname='ExprValue' structureflags='0'>
+ 1024
+
+
+
+
+
+ 1024
+
+
+ 0
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+ 8192
+
+
+ 1
+
+
+
+
+
+
+
+
+
+ 8192
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ context
+
+
+ 4
+
+
+ 4
+
+
+ 0
+
+
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+
+
+ <_NAME_IN_ATTRIBUTE_ name='' classname='ExprValue' structureflags='0'>
+ 1024
+
+
+
+
+
+ 1024
+
+
+ 0
+
+
+ ThisContext
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+ 8192
+
+
+ 1
+
+
+
+
+
+
+
+
+
+ 8192
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ reserved
+
+
+ 0
+
+
+ 4
+
+
+ 0
+
+
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+
+
+ <_NAME_IN_ATTRIBUTE_ name='' classname='ExprValue' structureflags='0'>
+ 1024
+
+
+
+
+
+ 1024
+
+
+ 0
+
+
+ 0
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+ 8192
+
+
+ 1
+
+
+
+
+
+
+
+
+
+ 8192
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ changed
+
+
+ 0
+
+
+ 4
+
+
+ 2
+
+
+
+
+
+ 1
+
+
+ 0
+
+
+ 0
+
+
+
+
+ <_NAME_IN_ATTRIBUTE_ name='' classname='ExprValue' structureflags='0'>
+ 1024
+
+
+
+
+
+ 1024
+
+
+ 0
+
+
+ RunState.InitialSelection.SelectedFile.ChangeCount
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+ 8192
+
+
+ 1
+
+
+
+
+
+
+
+
+
+ 8192
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+ PreloadWhenExecuted
+
+
+ UnloadWithFile
+
+
+ Normal
+
+
+ None
+
+
+ 1
+
+
+ true
+
+
+ false
+
+
+ false
+
+
+
+
+
+ 0
+
+
+ false
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+ 1
+
+
+ 2
+
+
+ 0
+
+
+ true
+
+
+ Next
+
+
+ Next
+
+
+
+
+
+
+
+
+
+
+
+ Next
+
+
+ Next
+
+
+
+
+
+
+
+
+ NoLooping
+
+
+
+
+
+
+
+
+ RunState.LoopIndex += 1
+
+
+ RunState.LoopIndex = 0
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+ true
+
+
+ true
+
+
+ true
+
+
+ 0
+
+
+
+
+ <_NAME_IN_ATTRIBUTE_ name='' classname='CustomResult'>
-
+
+
+
+
+
+
+
+
+
+
+ 8192
+
+
+ 2
+
+
-
- false
-
-
- 2
-
-
- 3.9
-
-
- .venv
-
-
-
-
-
+
+ 3
+
+
true
-
-
- teststand_fixture.py
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
1
-
-
- 0
-
+
-
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+ <_NAME_IN_ATTRIBUTE_ name='' classname='CustomResult'>
+
+
+
+
+
+
+
+
+
+
+
+ 8192
+
+
+ 2
+
+
+
+
+ 3
+
+
+ true
+
+
-
-
- update_pin_map
-
-
-
-
- <_NAME_IN_ATTRIBUTE_ name='' classname='CPythonParameter' structureflags='0'/>
-
-
-
-
-
- Return Value
-
-
- 7
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 8192
-
-
- 1
-
-
-
-
-
-
-
-
-
- 8192
-
-
- 1
-
-
-
-
-
-
-
-
-
-
-
-
- pin_map_id
-
-
- 7
-
-
- FileGlobals.MeasurementLink.PinMapPath
-
-
-
-
-
-
-
-
-
-
-
-
- 8192
-
-
- 1
-
-
-
-
-
-
-
-
-
- 8192
-
-
- 1
-
-
-
-
-
-
-
-
-
-
-
- 5
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
-
+
+
+
+
+
+ true
+
-
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ResStr("NI_SUBSTEPS", "STATEMENT_EDIT_STEP_MENU_NAME")
+
+
+ true
+
+
+ true
+
+
+
+
+
+
+
+ LocalizeExpression(Step.TS.PostExpr)
+
+
+ ResStr("NI_SUBSTEPS", "STATEMENT_DEF_STEP_NAME")
+
+
+
+
+ false
+
+
+ false
+
+
+ ""
+
+
+ ResStr("NI_SUBSTEPS", "STATEMENT_MENU_ITEM_NAME")
+
+
+ ""
+
+
+ false
+
+
+ false
+
+
+ NI_Miscellaneous
+
+
+
+
+
+
+ <_NAME_IN_ATTRIBUTE_ typename='NI_CustomResult' xsi:type='NI_CustomResult' name='' classname='CustomResult'>
+
+
+
+
+
+
+
+
+
+
+
+ 8192
+
+
+ 2
+
+
+
+
+ 3
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+ ResStr("NI_SUBSTEPS", "STATEMENT_EXPRESSION")
+
+
+ LocalizeExpression(Step.PostExpression)
+
+
+
+
+
+ 8192
+
+
+ 2
+
+
+
+
+ 3
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+ StatementStep.ico
+
+
+
+
+
+
+ PreloadWhenExecuted
+
+
+ UnloadWithFile
+
+
+ Normal
+
+
+ None
+
+
+ 1
+
+
+ true
+
+
+ false
+
+
+ false
+
+
+
+
+
+ 0
+
+
+ false
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+ 1
+
+
+ 2
+
+
+ 0
+
+
+ true
+
+
+ Next
+
+
+ Next
+
+
+
+
+
+
+
+
+
+
+
+ Next
+
+
+ Next
+
+
+
+
+
+
+
+
+ NoLooping
+
+
+
+
+
+
+
+
+ RunState.LoopIndex += 1
+
+
+ RunState.LoopIndex = 0
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+ true
+
+
+ true
+
+
+ true
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+ <_NAME_IN_ATTRIBUTE_ name='' classname='CustomResult'>
+
+
+
+
+
+
+
+
+
+
+
+ 8192
+
+
+ 2
+
+
+
+
+ 3
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+ <_NAME_IN_ATTRIBUTE_ name='' classname='CustomResult'>
+
+
+
+
+
+
+
+
+
+
+
+ 8192
+
+
+ 2
+
+
+
+
+ 3
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+ NIStepTypeControls.dll|NationalInstruments.TestStand.StepTypeControls.StatementTabInfo
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <_NAME_IN_ATTRIBUTE_ name='' classname='TEResult'/>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID#:1m8fotxw7RGuNrjdh1OqZD
+
+
+ Measurement\Measurement.ico
+
@@ -5520,7 +4324,7 @@
2
- 0
+ 4
true
@@ -5579,9 +4383,6 @@
-
- true
-
true
@@ -5599,163 +4400,538 @@
<_NAME_IN_ATTRIBUTE_ name='' classname='CustomResult'>
-
-
+
+
+
+
+
+
+
+
+
+
+ 8192
+
+
+ 2
+
+
+
+
+ 3
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+ <_NAME_IN_ATTRIBUTE_ name='' classname='CustomResult'>
+
+
+
+
+
+
+
+
+
+
+
+ 8192
+
+
+ 2
+
+
+
+
+ 3
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ni.examples.NIDCPowerSourceDCVoltage_Python
+
+
+
+
+ <_NAME_IN_ATTRIBUTE_ name='' classname='Obj'>
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+ 0
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+ pin_names
+
+
+ {"Pin1"}
+
+
+ In
+
+
+ true
+
+
+ 1
+
+
+ TypeString
+
+
+ 1
+
+
+ Pin
+
+
+
+
+
+
+
+
+ voltage_level
+
+
+ 6
+
+
+ In
+
+
+ true
+
+
+ 0
+
+
+ TypeDouble
+
+
+ 2
+
+
+ None
+
+
+
+
+
+
+
+
+ voltage_level_range
+
+
+ 6
+
+
+ In
+
+
+ true
+
+
+ 0
+
+
+ TypeDouble
+
+
+ 3
+
+
+ None
+
+
+
+
+
+
+
+
+ current_limit
+
+
+ 0.01
+
+
+ In
+
+
+ true
+
+
+ 0
+
+
+ TypeDouble
+
+
+ 4
+
+
+ None
+
+
+
+
+
+
+
+
+ current_limit_range
+
+
+ 0.01
+
+
+ In
+
+
+ true
+
+
+ 0
+
+
+ TypeDouble
+
+
+ 5
+
+
+ None
+
+
+
+
+
+
+
+
+ source_delay
+
+
+ 0
+
+
+ In
+
+
+ true
+
+
+ 0
+
+
+ TypeDouble
+
+
+ 6
+
+
+ None
+
+
+
+
+
+
+
+
+ measurement_sites
+
+
+
+
+
+ Out
+
+
+ true
+
+
+ 1
+
+
+ TypeInt32
+
+
+ 1
+
+
+ None
+
+
+
+
+
+
+
+
+ measurement_pin_names
+
+
+
+
+
+ Out
+
+
+ true
+
+
+ 1
+
+
+ TypeString
+
+
+ 2
+
+
+ None
+
+
+
+
+
+
+
+
+ voltage_measurements
+
+
+
+
+
+ Out
+
+
+ true
+
+
+ 1
+
+
+ TypeDouble
+
+
+ 3
+
+
+ None
+
+
+
+
+
+
+
+
+ current_measurements
-
-
-
-
+
-
-
- 8192
-
-
- 2
-
-
-
-
- 3
-
-
- true
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 1
-
-
-
-
-
-
-
-
-
-
+
+
+ Out
+
+
true
-
+
+
+ 1
+
+
+ TypeDouble
+
+
+ 4
+
+
+ None
+
-
-
-
-
-
-
-
- <_NAME_IN_ATTRIBUTE_ name='' classname='CustomResult'>
+
+
+
+
-
-
+
+ in_compliance
-
-
-
-
+
-
-
- 8192
-
-
- 2
-
-
-
-
- 3
-
-
- true
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 1
-
-
-
-
-
-
-
-
-
-
+
+
+ Out
+
+
true
-
+
+
+ 1
+
+
+ TypeBool
+
+
+ 5
+
+
+ None
+
-
-
+
+
-
-
-
-
-
-
-
-
- 0
-
-
-
-
-
- false
-
-
-
-
-
-
-
-
-
-
+
-
+
+
+
+
+
-
+
- ID#:c5USoqlx7RGuNrjdh1OqZD
+ ID#:fhWpfuRw7RGuNrjdh1OqZD
@@ -5798,10 +4974,10 @@
- create_nidcpower_sessions
+ update_pin_map
-
+
<_NAME_IN_ATTRIBUTE_ name='' classname='CPythonParameter' structureflags='0'/>
@@ -5809,13 +4985,61 @@
- Return Value
+ Return Value
+
+
+ 2
+
+
+ Locals.PinMapId
+
+
+
+
+
+
+
+
+
+
+
+
+ 8192
+
+
+ 1
+
+
+
+
+
+
+
+
+
+ 8192
+
+
+ 2
+
+
+
+
+
+
+
+
+
+
+
+
+ pin_map_path
7
-
+ FileGlobals.MeasurementLink.PinMapPath
@@ -5831,7 +5055,7 @@
8192
- 1
+ 2
@@ -5857,13 +5081,13 @@
- pin_map_id
+ sequence_context
7
- FileGlobals.MeasurementLink.PinMapPath
+ ThisContext
@@ -5879,7 +5103,7 @@
8192
- 1
+ 2
@@ -6195,16 +5419,166 @@
-
+
- ID#:7xzPK+Rw7RGuNrjdh1OqZD
+ ID#:c5USoqlx7RGuNrjdh1OqZD
- StatementStep.ico
+
+
+
+
+
+
+ false
+
+
+ 2
+
+
+ 3.9
+
+
+ .venv
+
+
+
+
+
+ true
+
+
+ teststand_fixture.py
+
+
+ 1
+
+
+ 0
+
+
+
+
+
+
+
+
+ create_nidcpower_sessions
+
+
+
+
+ <_NAME_IN_ATTRIBUTE_ name='' classname='CPythonParameter' structureflags='0'/>
+
+
+
+
+
+ Return Value
+
+
+ 7
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 8192
+
+
+ 1
+
+
+
+
+
+
+
+
+
+ 8192
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+ sequence_context
+
+
+ 7
+
+
+ ThisContext
+
+
+
+
+
+
+
+
+
+
+
+
+ 8192
+
+
+ 1
+
+
+
+
+
+
+
+
+
+ 8192
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+ 5
+
+
+
+
+
@@ -6314,13 +5688,13 @@
- RunState.Engine.TemporaryGlobals.SetValString("NI.MeasurementLink.PinMapId", 0x1, FileGlobals.MeasurementLink.PinMapPath)
+
- false
+ true
true
@@ -6490,95 +5864,8 @@
-
-
-
-
-
-
- false
-
-
-
-
- 0
-
-
- true
-
-
- "Unnamed Entry Point"
-
-
- True
-
-
-
-
-
- false
-
-
- false
-
-
- true
-
-
- false
-
-
- true
-
-
- false
-
-
- false
-
-
- true
-
-
- 2953567917
-
-
- false
-
-
-
-
-
-
-
-
-
-
-
- 2
-
-
-
-
-
-
- Test UUTs and Single Pass call this callback in their cleanup step group. It is empty in the model file. Override this in the client file to perform an action after all code in the model executes and just before the execution completes.
-
-
-
-
-
-
-
- <_NAME_IN_ATTRIBUTE_ name='' classname='TEResult'/>
-
-
-
-
-
-
@@ -7273,15 +6560,9 @@
-
-
-
-
-
-
- false
+ true
@@ -7321,15 +6602,15 @@
false
+
+ false
+
true
2953567917
-
- false
-
@@ -7354,11 +6635,8 @@
false
-
- NIDCPowerSourceDCVoltage.pinmap
-
-
+ NIDCPowerSourceDCVoltage.pinmap
diff --git a/examples/nidcpower_source_dc_voltage/_helpers.py b/examples/nidcpower_source_dc_voltage/_helpers.py
index eeec62a20..66ba0d3fc 100644
--- a/examples/nidcpower_source_dc_voltage/_helpers.py
+++ b/examples/nidcpower_source_dc_voltage/_helpers.py
@@ -2,7 +2,7 @@
import logging
import pathlib
-from typing import Dict, NamedTuple, TypeVar
+from typing import Any, Dict, NamedTuple, TypeVar
import grpc
@@ -48,23 +48,25 @@ def __init__(self, *, grpc_channel: grpc.Channel):
pin_map_service_pb2_grpc.PinMapServiceStub(grpc_channel)
)
- def update_pin_map(self, pin_map_id: str) -> None:
+ def update_pin_map(self, pin_map_path: str) -> str:
"""Update registered pin map contents.
Create and register a pin map if a pin map resource for the specified pin map id is not
found.
Args:
- pin_map_id (str): The resource id of the pin map to register as a pin map resource. By
- convention, the pin map id is the .pinmap file path.
+ pin_map_path: The file path of the pin map to register as a pin map resource.
+ Returns:
+ The resource id of the pin map that is registered to the pin map service.
"""
- pin_map_path = pathlib.Path(pin_map_id)
+ pin_map_path_obj = pathlib.Path(pin_map_path)
+ # By convention, the pin map id is the .pinmap file path.
request = pin_map_service_pb2.UpdatePinMapFromXmlRequest(
- pin_map_id=pin_map_id, pin_map_xml=pin_map_path.read_text(encoding="utf-8")
+ pin_map_id=pin_map_path, pin_map_xml=pin_map_path_obj.read_text(encoding="utf-8")
)
response: pin_map_service_pb2.PinMap = self._client.UpdatePinMapFromXml(request)
- assert response.pin_map_id == pin_map_id
+ return response.pin_map_id
class GrpcChannelPoolHelper(GrpcChannelPool):
@@ -108,3 +110,63 @@ def get_grpc_device_channel(self, provided_interface: str) -> grpc.Channel:
service_class="ni.measurementlink.v1.grpcdeviceserver",
).insecure_address
)
+
+
+class TestStandSupport(object):
+ """Class that communicates with TestStand."""
+
+ def __init__(self, sequence_context: Any) -> None:
+ """Initialize the TestStandSupport object.
+
+ Args:
+ sequence_context:
+ The SequenceContext COM object from the TestStand sequence execution.
+ (Dynamically typed.)
+ """
+ self._sequence_context = sequence_context
+
+ def get_active_pin_map_id(self) -> str:
+ """Get the active pin map id from the NI.MeasurementLink.PinMapId temporary global variable.
+
+ Returns:
+ The resource id of the pin map that is registered to the pin map service.
+ """
+ return self._sequence_context.Engine.TemporaryGlobals.GetValString(
+ "NI.MeasurementLink.PinMapId", 0x0
+ )
+
+ def set_active_pin_map_id(self, pin_map_id: str) -> None:
+ """Set the NI.MeasurementLink.PinMapId temporary global variable to the specified id.
+
+ Args:
+ pin_map_id:
+ The resource id of the pin map that is registered to the pin map service.
+ """
+ self._sequence_context.Engine.TemporaryGlobals.SetValString(
+ "NI.MeasurementLink.PinMapId", 0x1, pin_map_id
+ )
+
+ def resolve_file_path(self, file_path: str) -> str:
+ """Resolve the absolute path to a file using the TestStand search directories.
+
+ Args:
+ file_path:
+ An absolute or relative path to the file. If this is a relative path, this function
+ searches the TestStand search directories for it.
+
+ Returns:
+ The absolute path to the file.
+ """
+ if pathlib.Path(file_path).is_absolute():
+ return file_path
+ (_, absolute_path, _, _, user_canceled) = self._sequence_context.Engine.FindFileEx(
+ fileToFind=file_path,
+ absolutePath=None,
+ srchDirType=None,
+ searchDirectoryIndex=None,
+ userCancelled=None, # Must match spelling used by TestStand
+ searchContext=self._sequence_context.SequenceFile,
+ )
+ if user_canceled:
+ raise RuntimeError("File lookup canceled by user.")
+ return absolute_path
diff --git a/examples/nidcpower_source_dc_voltage/teststand_fixture.py b/examples/nidcpower_source_dc_voltage/teststand_fixture.py
index 51eb124f9..6a233d149 100644
--- a/examples/nidcpower_source_dc_voltage/teststand_fixture.py
+++ b/examples/nidcpower_source_dc_voltage/teststand_fixture.py
@@ -1,34 +1,51 @@
"""Functions to set up and tear down sessions of NI-DCPower devices in NI TestStand."""
+from typing import Any
import nidcpower
-from _helpers import GrpcChannelPoolHelper, PinMapClient
+from _helpers import GrpcChannelPoolHelper, PinMapClient, TestStandSupport
import ni_measurementlink_service as nims
-def update_pin_map(pin_map_id: str) -> None:
+def update_pin_map(pin_map_path: str, sequence_context: Any) -> str:
"""Update registered pin map contents.
Create and register a pin map if a pin map resource for the specified pin map id is not found.
Args:
- pin_map_id (str):
- The resource id of the pin map to register as a pin map resource. By
- convention, the pin_map_id is the .pinmap file path.
-
+ pin_map_path:
+ An absolute or relative path to the pin map file.
+ sequence_context:
+ The SequenceContext COM object from the TestStand sequence execution.
+ (Dynamically typed.)
"""
+ teststand_support = TestStandSupport(sequence_context)
+ pin_map_abs_path = teststand_support.resolve_file_path(pin_map_path)
+
with GrpcChannelPoolHelper() as grpc_channel_pool:
pin_map_client = PinMapClient(grpc_channel=grpc_channel_pool.pin_map_channel)
- pin_map_client.update_pin_map(pin_map_id)
+ pin_map_id = pin_map_client.update_pin_map(pin_map_abs_path)
+
+ teststand_support.set_active_pin_map_id(pin_map_id)
+ return pin_map_id
+
+def create_nidcpower_sessions(sequence_context: Any) -> None:
+ """Create and register all NI-DCPower sessions.
-def create_nidcpower_sessions(pin_map_id: str) -> None:
- """Create and register all NI-DCPower sessions."""
+ Args:
+ sequence_context:
+ The SequenceContext COM object from the TestStand sequence execution.
+ (Dynamically typed.)
+ """
with GrpcChannelPoolHelper() as grpc_channel_pool:
session_management_client = nims.session_management.Client(
grpc_channel=grpc_channel_pool.session_management_channel
)
+ teststand_support = TestStandSupport(sequence_context)
+ pin_map_id = teststand_support.get_active_pin_map_id()
+
pin_map_context = nims.session_management.PinMapContext(pin_map_id=pin_map_id, sites=None)
with session_management_client.reserve_sessions(
context=pin_map_context,