From a930a2df116a2fdc4332b31af635b94e54e3c952 Mon Sep 17 00:00:00 2001 From: Tharun-Sundar <97143361+Tharun-Sundar@users.noreply.github.com> Date: Fri, 28 Apr 2023 22:14:53 +0530 Subject: [PATCH] Updated the TestStand sequence of NI DCPower measurement to make it simpler (#249) * Updated the TestStand sequence of NI DCPower measurement to simplify the pin map and session registration steps Signed-off-by: Tharun Sundar Balasubramanian * Fix lint errors Signed-off-by: Tharun Sundar Balasubramanian * Add new function to get pin map id stored in temporary variable * Pass searchcontext with sequence file path * Update python adaptoer consistently * Resolve PR comments * Specifies the return type for COM object * File formatted using black * examples: Update type annotations and docstrings Signed-off-by: Brad Keryan * examples: Rename TestStandSupport methods Signed-off-by: Brad Keryan * examples: Fix resolve_file_path Signed-off-by: Brad Keryan * examples: Uncheck "Use adapter settings for Python interpreter" Signed-off-by: Brad Keryan * examples: Update PinMapClient naming/comments Signed-off-by: Brad Keryan --------- Signed-off-by: Tharun Sundar Balasubramanian Signed-off-by: Brad Keryan Co-authored-by: Vikram Avudaiappan Co-authored-by: Brad Keryan --- .../NIDCPowerSourceDCVoltage.seq | 6290 ++++++++--------- .../nidcpower_source_dc_voltage/_helpers.py | 76 +- .../teststand_fixture.py | 35 +- 3 files changed, 2879 insertions(+), 3522 deletions(-) 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 - - + - true + false - true + false "" - ResStr("NI_STEPTYPES", "EDIT_SUBSTEP_MENU_ITEM_NAME") + ResStr("NI_STEPTYPES", "ACTION_MENU_ITEM_NAME") "" @@ -1712,16 +1706,10 @@ false - EditSubsteps + Action - - - - - DefaultLabVIEWNXG|DefaultLabVIEW|DefaultCVI|DefaultVB.NET|DefaultCSharp.NET|DefaultC++.NET|DefaultVC++_Template|DefaultHTB72_Template|DefaultHTB80_Template|Default_Template - @@ -1785,7 +1773,7 @@ - + @@ -1793,7 +1781,7 @@ - + @@ -1849,21 +1837,21 @@ 2 - 4 + 0 true - + Next - + Next - + - + @@ -2067,7 +2055,7 @@ - + 0 @@ -2086,26 +2074,32 @@ - + - - false - - + + DefaultLabVIEW|DefaultLabVIEWNXG|DefaultCVI|DefaultVB.NET|DefaultCSharp.NET|DefaultC++.NET|DefaultVC++_Template|DefaultHTB72_Template|DefaultHTB80_Template|Default_Template + + - - + + + + + false - - + + false - + + + Action + - + - - + + @@ -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 @@ - + @@ -2201,80 +2159,70 @@ - - - - - + - - + + - + - + + 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,