Matlab和JDDE[英] Matlab and JDDE

问题描述

更新:问题在 MathWorks 的帮助下得到解决.我已经在下面发布了答案.

我需要从 Matlab 控制一个程序 (Zemax).不幸的是,Zemax 只支持 DDE 进行这种控制,Matlab 不再支持.它可以工作,但在几次(可能是 63 次)DDE 调用后停止在 64 位平台上工作.

我想知道是否有可行的解决方案.我可以编写一个具有正确 DDE 支持的 DLL,然后通过这个 DLL 在 Matlab 中使用 DDE.这对我来说是一项重大的努力.更合适的解决方案是使用 Java DDE 方法.在 another post 之后,我发现了 JDDE 库.但是我不能让它工作:即使我在包含 DLL 和 JAR 文件的目录中,执行

import pretty-tools.JDDE-2.0.3.*

工作正常,但调用

a = com.pretty_tools.dde.client.DDEClientConversation()

之后(如 此处)结果

Undefined variable "com" or class "com.pretty_tools.dde.client.DDEClientConversation".

我的 PC 上的写入权限非常有限,因此我将带有 jar/dll 位置的 javaclasspath.txt 文件添加到 prefdir 指示的目录中.该文件如下所示:

C:\Users\xxxxxxxx\Documents\matlab toolbox\jdde\pretty-tools-JDDE-2.0.3.jar

调用 javaclasspath 会显示一个长列表,最后几行是:

...
C:\Program Files\MATLAB\R2012b\java\jarext\webservices\ws_client_core\mw-service-client-core.jar
C:\Users\kkarapet\Documents\matlab toolbox\jdde\pretty-tools-JDDE-2.0.3.jar                     

DYNAMIC JAVA PATH

<empty>

所以路径似乎设置正确.我做错了什么?

推荐答案

在 MathWorks 支持的帮助下,我找到了答案.以下是如何使 JDDE 与 Matlab 2012b 一起工作,无需管理员权限:

  1. 下载 JDDE 文件(DLL 和 JAR)并将其解压缩到某个文件夹中.假设它是 $path-to-jdde$\.
  2. 在 Matlab 中,键入 prefdir.打开生成的目录并在其中创建两个文件,javaclasspath.txt 和 javalibrarypath.txt.
  3. 在 javaclasspath.txt 中,添加 $path-to-jdde$\pretty-tools-JDDE-2.0.3.jar.
  4. 在 javalibrarypath.txt 中,添加 $path-to-jdde$\.
  5. 重启 Matlab.

现在调用 ddeConv = com.pretty_tools.dde.client.DDEClientConversation; 并开始使用创建的对象,如 JavaDoc.例如.要连接到 Zemax,运行 Zemax,然后调用 ddeConv.connect('Zemax', 'abc').

上述步骤 2 只能从 Matlab 版本 R2012b 开始执行.对于旧版本,如果您对 Matlab 安装目录具有写入权限,您应该能够通过编辑 $MATLABROOT$\toolbox\local 中的文件 librarypath.txt 和 classpath.txt 来替换步骤 2.我无法验证,如果您确认,请在下面的评论中告诉我.

本文地址:https://www.itbaoku.cn/post/978582.html