2013-10-16 33 views
0

更新:問題在MathWorks的幫助下解決。我已經在下面發表了答案。Matlab和JDDE

我需要從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". 

我在我的電腦上的寫入權限非常有限,所以我已經將帶有jar/dll位置的javaclasspath.txt文件添加到0所指示的目錄中。該文件是這樣的:

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

在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。

現在致電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步。我無法驗證,所以如果您確認,請在下面的評論中告訴我。