TA的每日心情 | 开心 2022-1-29 15:05 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
自己用脚本做的gui,实现用tcpip建立对象控制keysight电源N5767并读取电压电流。6 j: l* R5 i# g9 E
脚本已经运行成功,功能正常。但是用应用程序打包成exe后发现如下问题:
4 T, J; H9 e- R+ u1 ?1. 程序可以对仪器进行设置(输出电压,电流保护门限,对仪器进行开关操作)。但是无法读取仪器工作时的电压和电流值。而这些功能在脚本上运行是没有问题的。
m1 I1 d% E" f/ w2 L8 B2. 在运行打包的exe时,通过matlab的命令栏输入tmtool,观察到并没有建立tcpip对象。但是exe的确可以对仪器进行某些操作。 按道理没有看到对象就应该无法和仪器通信?
, A( ]/ p% X' r3. 为了排除这个疑问,我再次用脚本运行代码,同时再敲入tmtool,发现脚本运出来的GUI是可以创建对象。 这说明脚本程序能成功通信并且tmtool窗口也能观察到对象。但是为什么打包好的可执行exe却无法在tmtool上看到对象,但却能部分控制仪器。4 n6 s! e T9 R" \5 n3 j/ i1 [
1 N1 X" t1 G9 h5 x& G
; v: X3 j$ r' ?1 U- ^3 b$ {: V6 K
switch polarity
! i" [& |/ y- O1 x7 `$ V case 0
7 J/ l$ M Q$ e3 b4 O; ^9 N2 F% O fprintf(psu,':OUTP OFF'); 8 S. x, A/ B1 L/ \, s
set(obj,'String','Stop test'); ; y! w! R: t. I9 s3 r; y
, W8 h# Q' K9 Q. b
case 1- O7 S% m" ?2 b8 e
set(obj,'String','Start test');
4 e# ^7 H; ]# k4 x6 R fprintf(psu,':OUTP ON');
% o: B8 w o2 J9 d: r7 \ for I=1:inf
8 C2 B' F: Z2 z5 i+ Z currentchar = query(psu,'MEAS:CURR?');
" x9 ~% D' ^. ?6 m) Z" o voltchar = query(psu,'MEAS:VOLT?');
* P: E% r2 o& |. u5 e' i% H currentdata = vpa(currentchar,4);6 F) M, }5 b! F" r2 \
voltdata = vpa(voltchar,4);
3 V/ G, |0 v7 o& K- N set(voldispvalue,'String',voltdata);
* e4 i% Y# s( y* T7 ~ set(curdispvalue,'String',currentdata);
6 a4 P! k; U i* p2 t delay(0.1);/ \+ F1 ?7 Y: C' q* c$ [ Y3 H
end ; c3 }8 [/ F0 c
return
; e% o; y, [6 H end
; X% H6 a) e9 _. m 3 l' I _1 y* l) D+ n
end
3 x4 `+ H, ?6 q6 p) \8 i: o/ A8 u! ~7 S. [& M, Q" f
附上读取代码。这个在脚本运行没有问题,可以正常读取电源数据。但是打包生成exe后,就一直读取不了数据,卡在那里, B* F/ ~7 Y) `' i( _/ @! A4 I
|
|