吾爱光设

 找回密码
 注册
会员须知
会员须知
实用帮助
实用帮助
查看: 175|回复: 11

[求助] [已解决]matlab与tracepro DDE通信的有关问题

[复制链接]
  • TA的每日心情
    奋斗
    2025-1-17 08:13
  • 签到天数: 214 天

    [LV.7]常住居民III

    3

    主题

    26

    回帖

    1

    积分

    小白

    积分
    1
    发表于 2025-1-15 09:32 | 显示全部楼层 |阅读模式
    本帖最后由 赖东东 于 2025-1-15 10:06 编辑

    就是使用tracepro进行杂光模拟时,有大量的繁琐、重复的操作,想着能否通过与matlab通信,完成自动仿真与结果保存。
    目前已经完成了通过matlab向tracepro发送脚本语言,实现不同角度循环仿真与结果导出。
    目前存在的问题是能否通过dde通信,读取tracepro中透镜的位置、半径已经口径等信息。读取位置是想要整组移动到坐标原点、插入光阑;读取半径跟口径,我是想通过这些判断透镜的形状,然后给不同的面加上对应的表面属性(就比如光学有效面与非有效面不同、胶合面与普通面不同),主要是设置反射率不同。


    看到另一个帖子:TracePro软件使用技巧专栏-05.TracePro与Matlab DDE通信http://www.optzmx.com/thread-13625-1-1.html(出处: 吾爱光设)
    其中有写:MATLAB DDE通信常用函数有以下4个:ddeinit、ddeexec、ddereq和ddeterm。ddereq函数用于下达指令给TracePro执行,并接受TracePro传回的数据,其基本用法如下:req = ddereq(TP_COMMAND, cmd),其中TP_COMMAND为ddeninit函数初始化的通信通道,cmd为TracePro执行的指令。
    是否能够通过这个函数实现,具体怎么完成?
    最佳答案
    2025-1-15 14:16
    DDE本来就挺僵硬的,似乎没有办法直接读取,我当时的思路是写一个TP的宏,用来保存或者打印数据到txt。matlab通过dde在TP执行这个宏,然后matlab读txt完成数据通信。话说,新版本不是支持com方式的通信了嘛?加钱,用新版本的。

    本帖子中包含更多资源

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

    ×
    发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
    回复

    使用道具 举报

  • TA的每日心情
    郁闷
    2024-3-29 15:56
  • 签到天数: 30 天

    [LV.5]常住居民I

    10

    主题

    101

    回帖

    19

    积分

    新手

    积分
    19
    发表于 2025-1-15 10:18 | 显示全部楼层
    lz能看下你现在的m代码咋写的吗
    发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
    回复

    使用道具 举报

  • TA的每日心情

    2025-1-17 09:27
  • 签到天数: 242 天

    [LV.8]以坛为家I

    24

    主题

    139

    回帖

    12

    积分

    小白

    积分
    12
    发表于 2025-1-15 14:16 | 显示全部楼层    本楼为最佳答案   
    DDE本来就挺僵硬的,似乎没有办法直接读取,我当时的思路是写一个TP的宏,用来保存或者打印数据到txt。matlab通过dde在TP执行这个宏,然后matlab读txt完成数据通信。话说,新版本不是支持com方式的通信了嘛?加钱,用新版本的。
    发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
    回复

    使用道具 举报

  • TA的每日心情

    2025-1-17 14:29
  • 签到天数: 1175 天

    [LV.10]以坛为家III

    18

    主题

    338

    回帖

    73

    积分

    入门

    积分
    73
    发表于 2025-1-16 14:02 | 显示全部楼层
    htsama 发表于 2025-1-15 14:16
    DDE本来就挺僵硬的,似乎没有办法直接读取,我当时的思路是写一个TP的宏,用来保存或者打印数据到txt。matl ...

    新版本?都找不到资源,.com确实方便不用dde这么字符串形式的,僵硬
    发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2025-1-17 08:13
  • 签到天数: 214 天

    [LV.7]常住居民III

    3

    主题

    26

    回帖

    1

    积分

    小白

    积分
    1
     楼主| 发表于 2025-1-17 08:21 | 显示全部楼层
    htsama 发表于 2025-1-15 14:16
    DDE本来就挺僵硬的,似乎没有办法直接读取,我当时的思路是写一个TP的宏,用来保存或者打印数据到txt。matl ...

    的确,感谢您的回复,我尝试一下您提供的思路。还有就是您这个宏有什么具体可以参考的吗,就比如有什么实例宏?这个不太会写。
    发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2025-1-17 08:13
  • 签到天数: 214 天

    [LV.7]常住居民III

    3

    主题

    26

    回帖

    1

    积分

    小白

    积分
    1
     楼主| 发表于 2025-1-17 08:23 | 显示全部楼层
    excavator 发表于 2025-1-15 10:18
    lz能看下你现在的m代码咋写的吗

    思路很简单,就是使用ddeexec函数发送字符串,也就是TP的宏语言。然后再写个for循环,循环建立光源,再循环追迹并导出结果
    发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2025-1-17 08:13
  • 签到天数: 214 天

    [LV.7]常住居民III

    3

    主题

    26

    回帖

    1

    积分

    小白

    积分
    1
     楼主| 发表于 2025-1-17 08:33 | 显示全部楼层
    知音2020 发表于 2025-1-16 14:02
    新版本?都找不到资源,.com确实方便不用dde这么字符串形式的,僵硬

    新版本我没有去找,不知道有没有资源,目前用的tp是7.3.4、matlab用的是r2016a的版本,使用com通信时matlab显示:64 位版本的 MATLAB 不支持自定义接口。

    本帖子中包含更多资源

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

    ×
    发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
    回复

    使用道具 举报

  • TA的每日心情

    2025-1-17 09:27
  • 签到天数: 242 天

    [LV.8]以坛为家I

    24

    主题

    139

    回帖

    12

    积分

    小白

    积分
    12
    发表于 2025-1-17 09:23 | 显示全部楼层
    赖东东 发表于 2025-1-17 08:21
    的确,感谢您的回复,我尝试一下您提供的思路。还有就是您这个宏有什么具体可以参考的吗,就比如有什么实 ...

    很多年前写的了,具体内容已经忘差不多了,给你几个m文件参考一下

    本帖子中包含更多资源

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

    ×

    评分

    参与人数 2金币 +4 收起 理由
    赖东东 + 2 赞一个!感谢
    知音2020 + 2 很给力!很实用的例子

    查看全部评分

    发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
    回复

    使用道具 举报

  • TA的每日心情

    2025-1-17 14:29
  • 签到天数: 1175 天

    [LV.10]以坛为家III

    18

    主题

    338

    回帖

    73

    积分

    入门

    积分
    73
    发表于 2025-1-17 14:18 | 显示全部楼层
    赖东东 发表于 2025-1-17 08:33
    新版本我没有去找,不知道有没有资源,目前用的tp是7.3.4、matlab用的是r2016a的版本,使用com通信时matl ...

    应该就是楼上说的,不支持com通信,现在的版本7.4都是DDE
    发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
    回复

    使用道具 举报

  • TA的每日心情

    2025-1-17 14:29
  • 签到天数: 1175 天

    [LV.10]以坛为家III

    18

    主题

    338

    回帖

    73

    积分

    入门

    积分
    73
    发表于 2025-1-17 14:29 | 显示全部楼层
    htsama 发表于 2025-1-17 09:23
    很多年前写的了,具体内容已经忘差不多了,给你几个m文件参考一下

    很厉害,这个好像是3D的自由曲面透镜的优化,我想问您个问题这个优化,可以进行很多次吗?fminsearch,我有个光线追击的方程DDE,但是追迹总是出错,

    function RayTrace(t)
    %t:暂停时间(秒)
    TP = ddeinit('TracePro','Scheme');
    % 光线追击与照度图分析等选项设定
    ddeexec(TP, '(view:set-display-rays #f)');                             %设定不显示光线
    ddeexec(TP, '(raytrace:source)');                                      %追迹光线
    tic;pause (t);toc;
    ddeexec(TP, '(edit:select (entity:get-by-names "Target" "Receiver"))');%选择分析面
    ddeexec(TP, '(analysis:irradiance-normalized 2)');                     %归一化照度图
    ddeexec(TP, '(analysis:irradiance-smooth #t 256)');                    %设定照度平滑,默认128,可在#t后加数字,256 512等
    ddeexec(TP, '(analysis:irradiance-set-profiles #t)');                  %设定剖面图
    ddeexec(TP, '(analysis:irradiance-color-map 0)');                      %设定颜色
    ddeexec(TP, '(analysis:irradiance-buckets 50)');                       %设定No. of Pixels像素
    ddeexec(TP, '(analysis:irradiance-symmetry "none")');                  %设定为旋转对称!rotational quadrant
    ddeexec(TP, '(analysis:irradiance-set-auto-vectors #t)');              %自动决定间距
    ddeexec(TP, '(analysis:irradiance)');
    ddeexec(TP, '(analysis:refresh)');
    ddeexec(TP, '(window:vertical-tile)');
    end


    错误使用 ddeexec
    The first argument 'channel' is not valid.

    出错 RayTrace (line 5)
    ddeexec(TP, '(view:set-display-rays #f)');      
    这是什么原因呢?基本上优化只能进行12次就废了,也用过matlab的优化算法了。也用PSO。看来是DDE的问题吗?


    发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    联系我们|本论坛只支持PC端注册|手机版|小黑屋|吾爱光设 ( 粤ICP备15067533号 )

    GMT+8, 2025-1-18 16:09 , Processed in 0.140625 second(s), 25 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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