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

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

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

    [LV.1]初来乍到

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

    EDA365欢迎您登录!

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

    x
    自己用脚本做的gui,实现用tcpip建立对象控制keysight电源N5767并读取电压电流。
    / a! ~5 D% \) h脚本已经运行成功,功能正常。但是用应用程序打包成exe后发现如下问题:4 e, d! y, b3 K' c2 T# a- q
    1. 程序可以对仪器进行设置(输出电压,电流保护门限,对仪器进行开关操作)。但是无法读取仪器工作时的电压和电流值。而这些功能在脚本上运行是没有问题的。4 |- C: m5 b) G' w( d
    2. 在运行打包的exe时,通过matlab的命令栏输入tmtool,观察到并没有建立tcpip对象。但是exe的确可以对仪器进行某些操作。 按道理没有看到对象就应该无法和仪器通信?
    + `3 n) p  q% L5 C- v7 }! Z- y2 j3. 为了排除这个疑问,我再次用脚本运行代码,同时再敲入tmtool,发现脚本运出来的GUI是可以创建对象。 这说明脚本程序能成功通信并且tmtool窗口也能观察到对象。但是为什么打包好的可执行exe却无法在tmtool上看到对象,但却能部分控制仪器。
    2 w6 d; _8 k. {) T9 S0 @6 A3 b" ^, V% r6 A& U* t1 i

    " k' u2 e1 a: J" w- q
    1 }4 K$ S0 I* d1 b/ @' b* C$ u2 D
    switch polarity  k+ C2 R+ v; O1 Q4 [# S
            case 0! O3 y+ G+ _& w/ f
            fprintf(psu,':OUTP OFF');      
    / P2 I  D" T! N% }        set(obj,'String','Stop test');   2 O8 F+ |/ m4 F3 L; K9 q
                1 k5 J8 b: y6 E6 |7 s" g
            case 1! P. a4 ?# G* d" @( P% B
            set(obj,'String','Start test');               4 l' ~  k  p3 U1 I
            fprintf(psu,':OUTP ON');   7 K7 O3 h  }4 L! a5 g# i
            for I=1:inf  
    9 @, A4 V; d- e$ B7 Q* N        currentchar = query(psu,'MEAS:CURR?');/ s2 F+ l3 i7 f0 l! U" j
            voltchar = query(psu,'MEAS:VOLT?');3 x- e4 o( m& e8 q
            currentdata = vpa(currentchar,4);6 y5 L+ C+ ~& f/ v
            voltdata = vpa(voltchar,4);, ^. q6 l# S" ?' @2 l
            set(voldispvalue,'String',voltdata);/ f2 [; g5 P- ?2 z5 p* e
            set(curdispvalue,'String',currentdata);
    4 m; @# u: z$ s/ g( F        delay(0.1);
    2 X* j2 T- V) v5 j) J; B1 ]        end      
    5 v- [0 \, w% b; U: u7 a0 G# m2 F    return
    . J# {" z1 j( T% v7 ?' |    end4 V7 Q) ^# k! B* T
                ) a5 y; h$ Q& O$ n) H2 n
        end
    ! F) r. U: ^8 F" [5 e- b9 a) S
    : |0 p1 Z* O& e+ m% R# i# T: W附上读取代码。这个在脚本运行没有问题,可以正常读取电源数据。但是打包生成exe后,就一直读取不了数据,卡在那里
    2 d5 c+ D3 n7 b$ B3 M
  • 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文件下编写的,没有依赖其他文件. J# r; M& P. \# K9 [, G

    点评

    那你在程序里面加一个 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% i5 b, O% a' Y4 @
    我所有函数都在一个.m文件下编写的,没有依赖其他文件

    - h9 J- c+ h5 [1 U8 @* k" _那你在程序里面加一个  pwd 输出看看程序运行时是否确实在 你要读的文件目录内。再就是看看文件读取权限,你可以试试用管理员模式运行exe 然后看看能不能读取文件! M6 `. b! y  Z; F. H% ~/ n3 s
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-8-11 13:35 , Processed in 0.109375 second(s), 27 queries , Gzip On.

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

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

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