TA的每日心情 | 开心 2022-1-29 15:05 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
自己用脚本做的gui,实现用tcpip建立对象控制keysight电源N5767并读取电压电流。0 z: Y7 `( D( n" J2 d' r
脚本已经运行成功,功能正常。但是用应用程序打包成exe后发现如下问题:% T% Y s) R+ z1 |6 v* E; Z% F
1. 程序可以对仪器进行设置(输出电压,电流保护门限,对仪器进行开关操作)。但是无法读取仪器工作时的电压和电流值。而这些功能在脚本上运行是没有问题的。
( V8 t3 l% i3 i5 v' B# d& A. Z2. 在运行打包的exe时,通过matlab的命令栏输入tmtool,观察到并没有建立tcpip对象。但是exe的确可以对仪器进行某些操作。 按道理没有看到对象就应该无法和仪器通信?: ?! a; f M& s J& `$ K* a; i. l
3. 为了排除这个疑问,我再次用脚本运行代码,同时再敲入tmtool,发现脚本运出来的GUI是可以创建对象。 这说明脚本程序能成功通信并且tmtool窗口也能观察到对象。但是为什么打包好的可执行exe却无法在tmtool上看到对象,但却能部分控制仪器。
9 G( a8 s% c% r4 g9 h6 |1 H* y; {* E- [# W2 U5 W% f8 D
+ a' P O0 v/ i. U
/ i' l, T3 T# d' N; L: m zswitch polarity( j! f, J, C4 ?. f' ?4 O
case 0
- I2 V, F! x1 I8 N( y fprintf(psu,':OUTP OFF');
- q5 R6 n0 z* B( ` set(obj,'String','Stop test'); $ F8 ~, }& h M' z9 q
+ Z* b4 X: T9 o' D% |
case 14 a' _8 E" v& Y w
set(obj,'String','Start test'); 3 b" V( r2 Q V8 [9 @* s
fprintf(psu,':OUTP ON'); 0 {; F/ s6 P8 _/ V* j0 s
for I=1:inf
5 R3 w q2 d, \7 H, h currentchar = query(psu,'MEAS:CURR?');
7 h `/ K- }( _" p: | voltchar = query(psu,'MEAS:VOLT?');
! ^/ y7 b& A# Z- O# o1 D currentdata = vpa(currentchar,4);2 s- w1 |& K: |: o; _$ g3 |& p+ ?
voltdata = vpa(voltchar,4);
1 W9 s& c3 d& [3 s8 }, S/ s set(voldispvalue,'String',voltdata);4 I) P- ^- U8 m: ^
set(curdispvalue,'String',currentdata);
* Q' l8 N4 v: @: h delay(0.1);
( {1 b1 u# `5 i+ {; y% m9 L end , A0 I! [# }, G t$ m
return
3 y. F0 s5 k. z- T* ` end
$ n0 n6 J! D) U4 o" v
0 e3 b; e ]$ e- {$ L end
4 a+ S" x4 X( a5 [ Z% r* @) H. d! ?0 N, ?
附上读取代码。这个在脚本运行没有问题,可以正常读取电源数据。但是打包生成exe后,就一直读取不了数据,卡在那里
8 [- w- h2 e* J& J+ u |
|