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

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

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

    [LV.1]初来乍到

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

    EDA365欢迎您登录!

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

    x
    自己用脚本做的gui,实现用tcpip建立对象控制keysight电源N5767并读取电压电流。
    : o6 ?1 V1 T/ Z# S9 H" p脚本已经运行成功,功能正常。但是用应用程序打包成exe后发现如下问题:
    ' t5 q$ v# h, D. y1. 程序可以对仪器进行设置(输出电压,电流保护门限,对仪器进行开关操作)。但是无法读取仪器工作时的电压和电流值。而这些功能在脚本上运行是没有问题的。+ l( X2 P: y/ n2 D1 r
    2. 在运行打包的exe时,通过matlab的命令栏输入tmtool,观察到并没有建立tcpip对象。但是exe的确可以对仪器进行某些操作。 按道理没有看到对象就应该无法和仪器通信?, t3 p) l- B: F: {0 L) `
    3. 为了排除这个疑问,我再次用脚本运行代码,同时再敲入tmtool,发现脚本运出来的GUI是可以创建对象。 这说明脚本程序能成功通信并且tmtool窗口也能观察到对象。但是为什么打包好的可执行exe却无法在tmtool上看到对象,但却能部分控制仪器。
    # F3 }' Z3 M. Z6 N$ j
    ' g) R5 I: {( W/ p) Y+ b. m7 y) K3 W' I" `# d$ u

    , r6 a& M; T. f9 A5 wswitch polarity% c8 P7 q, D! H1 ]
            case 0
    & @  c  c  Y% w: f5 C        fprintf(psu,':OUTP OFF');      . t8 r, F) E. f0 e. v$ }$ ~
            set(obj,'String','Stop test');   1 o# N9 i& m% d' w3 I2 a# C
                & w+ M% D, g! w- c; U9 D; Q
            case 11 }/ K, U" p1 i# o
            set(obj,'String','Start test');               ( W% H% h: |3 ^1 z
            fprintf(psu,':OUTP ON');   
    ' i6 f6 T# @4 x! F        for I=1:inf  , g; S9 X8 A) w+ g4 S
            currentchar = query(psu,'MEAS:CURR?');2 T$ s4 W0 _! [+ G
            voltchar = query(psu,'MEAS:VOLT?');5 s, _2 I! e7 j& T$ b
            currentdata = vpa(currentchar,4);/ Y& C0 B% |, G+ `' _
            voltdata = vpa(voltchar,4);) K. [8 C- g# M
            set(voldispvalue,'String',voltdata);
    4 o* T# B: |1 ~& Z: a0 F! b        set(curdispvalue,'String',currentdata);+ u- ^  s+ L) n
            delay(0.1);
    9 ]6 v3 v, |, y; g4 f  P0 N. q6 Q) H, B        end      9 J  H$ j3 x6 B, l. _% c3 p
        return
    5 z9 h! \/ g: [* q8 q, ?' \: e    end
    ( k+ V/ L0 ~) |$ U: a, P, s            
    ; ~' b* U7 |  X2 {  [) k    end8 y, \  r4 z3 y4 E) O7 `7 t

    3 Q/ P" m, [, y. y  C! X附上读取代码。这个在脚本运行没有问题,可以正常读取电源数据。但是打包生成exe后,就一直读取不了数据,卡在那里
    2 F1 W" L; `5 a4 S- Y
  • 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文件下编写的,没有依赖其他文件
    ! N1 w& A! u; f3 w

    点评

    那你在程序里面加一个 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
    0 F: _3 [" \4 Q我所有函数都在一个.m文件下编写的,没有依赖其他文件
      J$ y. {3 q6 U' |, _8 {- t1 b
    那你在程序里面加一个  pwd 输出看看程序运行时是否确实在 你要读的文件目录内。再就是看看文件读取权限,你可以试试用管理员模式运行exe 然后看看能不能读取文件' [" h4 x" q6 y
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-11-23 16:23 , Processed in 0.171875 second(s), 25 queries , Gzip On.

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

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

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