找回密码
 注册
关于网站域名变更的通知
查看: 271|回复: 3
打印 上一主题 下一主题

matlab 脚本运行正常生产exe后无法读取仪器数据

[复制链接]
  • TA的每日心情
    开心
    2022-1-29 15:05
  • 签到天数: 2 天

    [LV.1]初来乍到

    跳转到指定楼层
    1#
    发表于 2022-9-5 14:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

    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
  • TA的每日心情
    奋斗
    2022-1-21 15:15
  • 签到天数: 1 天

    [LV.1]初来乍到

    2#
    发表于 2022-9-5 14:39 | 只看该作者
    exe程序目录可能和你的 m程序目录不在一个地方,导致找不到m文件目录下的  文件
  • TA的每日心情
    开心
    2022-1-29 15:05
  • 签到天数: 2 天

    [LV.1]初来乍到

    3#
     楼主| 发表于 2022-9-5 15:17 | 只看该作者
    我所有函数都在一个.m文件下编写的,没有依赖其他文件$ d" W) s% m9 ~0 q+ i% u

    点评

    那你在程序里面加一个 pwd 输出看看程序运行时是否确实在 你要读的文件目录内。再就是看看文件读取权限,你可以试试用管理员模式运行exe 然后看看能不能读取文件  详情 回复 发表于 2022-9-5 15:25
  • TA的每日心情
    奋斗
    2022-1-21 15:15
  • 签到天数: 1 天

    [LV.1]初来乍到

    4#
    发表于 2022-9-5 15:25 | 只看该作者
    someone 发表于 2022-9-5 15:17: B5 [; v1 e# b+ d
    我所有函数都在一个.m文件下编写的,没有依赖其他文件

    % o: P* e: r# f7 }: I那你在程序里面加一个  pwd 输出看看程序运行时是否确实在 你要读的文件目录内。再就是看看文件读取权限,你可以试试用管理员模式运行exe 然后看看能不能读取文件
    ' E1 h, I5 x/ l, ]7 ~
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-8-2 06:59 , Processed in 0.109375 second(s), 27 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表