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

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

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

    [LV.1]初来乍到

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

    EDA365欢迎您登录!

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
    自己用脚本做的gui,实现用tcpip建立对象控制keysight电源N5767并读取电压电流。
    9 Z6 h% [! i2 q1 y& p% |脚本已经运行成功,功能正常。但是用应用程序打包成exe后发现如下问题:
    ( c, P6 k1 p( V3 ?1. 程序可以对仪器进行设置(输出电压,电流保护门限,对仪器进行开关操作)。但是无法读取仪器工作时的电压和电流值。而这些功能在脚本上运行是没有问题的。
    ( a, Y2 x! X. D; a& \2. 在运行打包的exe时,通过matlab的命令栏输入tmtool,观察到并没有建立tcpip对象。但是exe的确可以对仪器进行某些操作。 按道理没有看到对象就应该无法和仪器通信?4 k$ t8 V3 k: u8 p3 ^1 @3 U
    3. 为了排除这个疑问,我再次用脚本运行代码,同时再敲入tmtool,发现脚本运出来的GUI是可以创建对象。 这说明脚本程序能成功通信并且tmtool窗口也能观察到对象。但是为什么打包好的可执行exe却无法在tmtool上看到对象,但却能部分控制仪器。
      i3 R% t, b+ i% {( p
    5 V. u% b2 j' ~- H0 F$ B" L8 b1 _5 a+ J& r8 y4 n4 M! F
    & G0 \( D0 N- B, L0 q! {+ Y
    switch polarity
    , r0 @9 k0 [1 w7 X6 p8 E2 Q# j        case 0- s0 i3 B4 v* E8 O$ ~9 ^
            fprintf(psu,':OUTP OFF');      
    ' a, f4 T, F2 Z        set(obj,'String','Stop test');   
    & t- B% k( V0 t4 C8 k- J9 Z            ' Z+ F7 r# \; |4 ?& D; R7 |
            case 1% ]0 X+ ]+ Z3 }* `  E9 ~  v
            set(obj,'String','Start test');               
    0 g5 D8 E; {% e6 [8 h6 ^' ^4 Y        fprintf(psu,':OUTP ON');   6 w; t- w+ I* U1 K1 t6 W& g
            for I=1:inf  
    8 n, i9 W+ J$ o3 Q6 g7 S% M$ A        currentchar = query(psu,'MEAS:CURR?');
    % _* n3 l9 ?' e+ H# J6 h, \* a        voltchar = query(psu,'MEAS:VOLT?');
    ' b' n- q/ P3 }5 _, Z        currentdata = vpa(currentchar,4);
    9 p( S- j, J* ~) b  j        voltdata = vpa(voltchar,4);
    5 k( R( M" _3 a8 u. ^, Y+ Z        set(voldispvalue,'String',voltdata);6 [3 x  Z- L8 c7 d  Q" B" c4 n/ E
            set(curdispvalue,'String',currentdata);: Q6 }, f- u( ~. ?
            delay(0.1);
    8 F; W7 [- m8 j8 H4 W        end      , ~# s2 s% z( K0 ]% M5 j
        return* s: U$ s0 N1 Y. e
        end7 b: ^) W" y1 a8 z7 n, x! J7 `& P
                
    7 h; A* g) F: W; R    end
    2 o/ X( o% v1 v' G( G; o1 b  V+ ~: ]0 \: ~9 E5 n
    附上读取代码。这个在脚本运行没有问题,可以正常读取电源数据。但是打包生成exe后,就一直读取不了数据,卡在那里
    + ~$ ]- L, L1 ]1 Q  Z  l( t* K
  • 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文件下编写的,没有依赖其他文件
    / x- _1 L* ?* H5 {

    点评

    那你在程序里面加一个 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
    + k% `4 @! V2 Z: N我所有函数都在一个.m文件下编写的,没有依赖其他文件
    2 J: `7 @0 |( m
    那你在程序里面加一个  pwd 输出看看程序运行时是否确实在 你要读的文件目录内。再就是看看文件读取权限,你可以试试用管理员模式运行exe 然后看看能不能读取文件
    " X; g9 s9 h: e  U' T
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-11-23 14:29 , Processed in 0.156250 second(s), 27 queries , Gzip On.

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

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

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