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

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

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

    [LV.1]初来乍到

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

    EDA365欢迎您登录!

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

    x
    自己用脚本做的gui,实现用tcpip建立对象控制keysight电源N5767并读取电压电流。% K6 G2 x2 u( _( O# i5 `
    脚本已经运行成功,功能正常。但是用应用程序打包成exe后发现如下问题:
    8 e) O6 e7 U. @( ]8 ~0 \$ ^1. 程序可以对仪器进行设置(输出电压,电流保护门限,对仪器进行开关操作)。但是无法读取仪器工作时的电压和电流值。而这些功能在脚本上运行是没有问题的。
    1 ]) ]! ], R) V4 m2. 在运行打包的exe时,通过matlab的命令栏输入tmtool,观察到并没有建立tcpip对象。但是exe的确可以对仪器进行某些操作。 按道理没有看到对象就应该无法和仪器通信?
    * P: C' ?9 E: v3. 为了排除这个疑问,我再次用脚本运行代码,同时再敲入tmtool,发现脚本运出来的GUI是可以创建对象。 这说明脚本程序能成功通信并且tmtool窗口也能观察到对象。但是为什么打包好的可执行exe却无法在tmtool上看到对象,但却能部分控制仪器。4 K% U+ b2 O& z( k; ~4 b* N0 P
    / v% a; u$ {; m5 A: A
    1 y9 x  k9 n# I2 e4 U0 `9 D$ ^0 }

    ' v$ b0 q. y' d# l* \) [" e& I4 hswitch polarity
    " s+ m4 W  s' y1 H' f        case 0
    9 u" l  b5 e: D. s) F  h( s& v* k        fprintf(psu,':OUTP OFF');      
    2 r- {+ q1 q0 q9 n        set(obj,'String','Stop test');   
    2 e' p& y" {! }; ]+ B, D            
    6 ?" c$ v; T1 ?# [3 c+ ]8 \        case 1
    9 ~# ~& D- I# ]2 V        set(obj,'String','Start test');               , V- u9 N7 I, _$ q' |6 `) \7 O
            fprintf(psu,':OUTP ON');   
      D- B5 ~0 W2 W1 Z- A0 R, L        for I=1:inf  
    , |" z5 `8 \& q/ a5 ]        currentchar = query(psu,'MEAS:CURR?');! r# B3 |3 F6 U3 B! h) I7 C5 I
            voltchar = query(psu,'MEAS:VOLT?');- f2 C" v9 ?; k! O2 N# j' ?+ Z8 n1 H
            currentdata = vpa(currentchar,4);
    2 ?: q% [5 r) D$ o+ M# }        voltdata = vpa(voltchar,4);  D) X/ U: a7 r* |5 D
            set(voldispvalue,'String',voltdata);
    & {& \- v- n5 A3 t6 t        set(curdispvalue,'String',currentdata);
    $ b) @) I3 C5 L  [& `9 f" i6 k* R        delay(0.1);
    ' r, O. n4 i+ H# q        end      9 g6 ~4 z) X, f' `
        return
    3 g; ?2 i8 r+ s3 a    end
    ; g4 [: p: u) n# O: p# H# n            ( |$ y1 S% l4 N3 _$ f* y+ k
        end
    * I: Z$ t  {* v0 @: a3 V3 H: e: S) F# K2 @$ d% A; B# w
    附上读取代码。这个在脚本运行没有问题,可以正常读取电源数据。但是打包生成exe后,就一直读取不了数据,卡在那里
    , q9 o6 m- r, g/ N/ @" b% k3 f
  • 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文件下编写的,没有依赖其他文件+ N& h+ e9 D, B5 S

    点评

    那你在程序里面加一个 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
    : P1 @$ Y# a. y1 v! H我所有函数都在一个.m文件下编写的,没有依赖其他文件

    ( Y7 h$ U3 \( d# ^) L7 N: Q* F5 T( N那你在程序里面加一个  pwd 输出看看程序运行时是否确实在 你要读的文件目录内。再就是看看文件读取权限,你可以试试用管理员模式运行exe 然后看看能不能读取文件
    0 j0 k' b. J, P. z
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-11-23 20:46 , Processed in 0.156250 second(s), 24 queries , Gzip On.

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

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

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