TA的每日心情 | 开心 2022-1-29 15:05 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
自己用脚本做的gui,实现用tcpip建立对象控制keysight电源N5767并读取电压电流。
( j0 b H' E3 u$ z脚本已经运行成功,功能正常。但是用应用程序打包成exe后发现如下问题:
7 Y9 o( W9 o5 U+ n1 n9 v1. 程序可以对仪器进行设置(输出电压,电流保护门限,对仪器进行开关操作)。但是无法读取仪器工作时的电压和电流值。而这些功能在脚本上运行是没有问题的。
a2 k. K8 q' `3 Q+ R$ D2. 在运行打包的exe时,通过matlab的命令栏输入tmtool,观察到并没有建立tcpip对象。但是exe的确可以对仪器进行某些操作。 按道理没有看到对象就应该无法和仪器通信?; J/ r- B I. k# x: A! t
3. 为了排除这个疑问,我再次用脚本运行代码,同时再敲入tmtool,发现脚本运出来的GUI是可以创建对象。 这说明脚本程序能成功通信并且tmtool窗口也能观察到对象。但是为什么打包好的可执行exe却无法在tmtool上看到对象,但却能部分控制仪器。
/ b% r5 Z1 ]. d- @* f4 c8 t; u$ ~8 l5 ]
" A& C s5 c) G; U) x
7 M& N; O4 c( |switch polarity
0 d, W# ?! O8 ?0 O case 0
7 h4 D$ V: Q3 J( O" Q fprintf(psu,':OUTP OFF'); " u7 P; }$ c, ], a
set(obj,'String','Stop test');
9 z! v- w1 [6 ^; l
) w& w6 k0 g8 |; b8 a$ X! b( v case 15 T7 t( p8 L G7 ?1 q% q
set(obj,'String','Start test');
6 |/ Z; l: P1 q) y5 I fprintf(psu,':OUTP ON');
$ `+ _4 E) j9 N3 [; T, Z' o( \ for I=1:inf 3 u# ?! X: s: A+ l9 R
currentchar = query(psu,'MEAS:CURR?');
/ @) Y, N) R! g* L1 p, k3 N voltchar = query(psu,'MEAS:VOLT?');% U: _/ t- S) Y5 u& b1 [
currentdata = vpa(currentchar,4);0 S; F/ B+ e4 A% M3 n, f
voltdata = vpa(voltchar,4);
" ?- i6 j, _9 {' K8 E set(voldispvalue,'String',voltdata); ~, M, G! n W2 ]- S3 u Y+ {: c$ A
set(curdispvalue,'String',currentdata);
* N! I, q7 s" E& y9 c0 T$ l delay(0.1);* u/ G3 X; j( D, P
end
5 b8 _4 }7 ]. ^% I8 K return: U1 \6 F4 d a# R+ q
end" W$ X( @8 J5 g. a2 L, `) M
& H& Q" z" E9 u& q4 a8 R
end7 ]# t; _4 }# c
" O' Z3 c D- \- N$ w; B/ G# o; h( m( s附上读取代码。这个在脚本运行没有问题,可以正常读取电源数据。但是打包生成exe后,就一直读取不了数据,卡在那里
) M# f8 T2 W1 g- c* u" ^. W6 Y& Z |
|