Matlab和JDDE

时间:2013-10-16 12:36:47

标签: java matlab dde

更新:在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()

之后(完成here)会导致

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>

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

1 个答案:

答案 0 :(得分:1)

在MathWorks支持的帮助下,我找到了答案。以下是如何使JDDE使用Matlab 2012b,没有管理员权限:

  1. 将JDDE文件(DLL和JAR)下载并解压缩到某个文件夹中。我们说它是$path-to-jdde$\
  2. 在Matlab中,输入prefdir。打开生成的目录并在其中创建两个文件javaclasspath.txtjavalibrarypath.txt
  3. 在javaclasspath.txt中,添加$path-to-jdde$\pretty-tools-JDDE-2.0.3.jar
  4. 在javalibrarypath.txt中,添加$path-to-jdde$\
  5. 重启Matlab。
  6. 现在调用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。我无法验证,所以如果您确认,请在下面的评论中告诉我。