我目前使用Matlab和Ocean Optics Omnidriver (http://oceanoptics.com/faq/controlling-usb-spectrometers-omnidriver-matlab/)来控制windows 7机器上的USB光谱仪,我正试图迁移到Octave。
Omnidriver是用Java编写的,并且有Matlab的合理文档。安装驱动程序后,相关的Matlab命令为:
>> javaaddpath('C:Program FilesOcean OpticsOmniDriverOOI_HOMEOmniDriver.jar');
>> wrapper = com.oceanoptics.omnidriver.api.wrapper.Wrapper();
>> wrapper.openAllSpectrometers();
第一行似乎可以直接翻译,一旦''被替换为'/',我可以看到文件添加到动态java路径。
第二行直接抛出"error: 'com' undefined",但替换为;
>> wrapper = javaObject ("com.oceanoptics.omnidriver.api.wrapper.Wrapper")
似乎有效。
第三行直接抛出错误;"error: [java] java.lang. noclassdeffounderror: Could not initialize class com. oceanopics .uniusb. uniusb "
这是我卡住的地方(UniUSB.jar是一个文件在OOI_HOME)。在上面链接的海洋光学页面上,我假设的是相同的错误被列为Matlab未能找到所需dll引起的常见问题,解决方案是将OOI_HOME的路径添加到matlabroot/toolbox/local/librarypath.txt
我假设如果我能找到等效的八度文件,那么添加路径应该可以解决我的问题,但是我找不到文件。
任何建议将不胜感激!
代码
>> javaaddpath('C:Program FilesOcean OpticsOmniDriverOOI_HOMEOmniDriver.jar');
>> wrapper = com.oceanoptics.omnidriver.api.wrapper.Wrapper();
>> wrapper.openAllSpectrometers();
翻译成:
wrapper = javaObject ("com.oceanoptics.omnidriver.api.wrapper.Wrapper");
javaMethod ("openAllSpectrometers", wrapper);
注意这也是有效的Matlab语法。
另一件事是,如果java类在静态经典路径上,Octave可以更好地处理它们。因此,我建议您将OmniDriver.jar
的路径添加到javaclasspath.txt
文件中。