keysk Posted November 30, 2005 Report Share Posted November 30, 2005 Hi all, I know this question was already ask more than one time. But my problem is: I want to use the a in matlab created dll. The m. file in matlab is a set of differential equations. I have already implemented this dll with a libary node, but actually nothing is happening. - And I think the problem is that there are no values are coming from the dll or can go into the dll. If already found out that people advise to write a wrapper file. :headbang: Is it really necessary to created a wrapper file ? If yes, how do I create such a wrapper file? Or where can I find out how do this. Especially because I have no ideas about C/C++. I really hope somebody can give some specific answers. It would be really important. nice greetings, keysk Quote Link to comment
Aitor Solar Posted January 10, 2006 Report Share Posted January 10, 2006 Hi all,I know this question was already ask more than one time. But my problem is: I want to use the a in matlab created dll. The m. file in matlab is a set of differential equations. I have already implemented this dll with a libary node, but actually nothing is happening. - And I think the problem is that there are no values are coming from the dll or can go into the dll. If already found out that people advise to write a wrapper file. :headbang: Is it really necessary to created a wrapper file ? If yes, how do I create such a wrapper file? Or where can I find out how do this. Especially because I have no ideas about C/C++. I really hope somebody can give some specific answers. It would be really important. nice greetings, keysk I'm not a Matlab expert, but AFAIK, the easiest way of using Matlab from LabVIEW is to build an ActiveX server to connect with the MCR (Matlab Runtime). That way the dll would be just for Matlab internal use (and because of that will only have the ActiveX method for registering and so) and instead of them you should use the methods the automation provides (i.e.: the methods you have created for that class). Sorry if I have something wrong, I use Matlab-LabVIEW almost every day but only on the LabVIEW side . Saludos, Aitor but Quote Link to comment
keysk Posted January 10, 2006 Author Report Share Posted January 10, 2006 Thanks Aitor for your reply. As I am a bit of a beginner, can you give me more information about how to build a ActiveX server to connect with the MCR???? And can I then use Labview without Matlab. nice greetings, Alex Quote Link to comment
todd Posted January 11, 2006 Report Share Posted January 11, 2006 Hi Todd,I have seen you questioned a thread which was concerning the problem using a Matlab m-file in a Labview VI. One of your suggestions was to use ActiveX, could you provide me with more information how to do this?? thanks in advance, Alex... I hope you don't mind that I'm posting your PM, Alex. When you open a vi that contains a Matlab script node, an instance of Matlab is automatically started that LabVIEW controls over ActiveX. You are only limited by the datatypes allowed into and out of the script node (plots work, too). Once the vi is closed (removed from memory/heirarchy) the Matlab instance closes. I have found it most useful to run Matlab in batch mode using SysExec.vi. That way I can programatically create data files and m files. --Todd Quote Link to comment
Aitor Solar Posted January 11, 2006 Report Share Posted January 11, 2006 Thanks Aitor for your reply.As I am a bit of a beginner, can you give me more information about how to build a ActiveX server to connect with the MCR???? And can I then use Labview without Matlab. As Todd says, you can use the Matlab script node (but be careful with the running threads, as it tends to take control of the UIThread). The script node uses Matlab, so you must have Matlab installed in every PC you want to run your application. BUT if you build your application like a Matlab ActiveX server, you just need the MCR in the machine, not Matlab, and it's distributable. It's still a bit heavy, about 100Mb if I remember correctly. You'll need to compile your matlab class with the Matlab's COM Builder (as I said, I'm no Matlab expert, so everybody feel free to correct me.). This shoud create an .exe file. Execute it, it creates a dll and registers it. Go to LabVIEW and create an ActiveX object, now you should see your new class in the list of available ActiveX servers. Select the creatable object you need, instantiate it and use it through the properties and methods (all of these is in the ActiveX palette in LV). Saludos, Aitor Quote Link to comment
keysk Posted January 11, 2006 Author Report Share Posted January 11, 2006 I hope you don't mind that I'm posting your PM, Alex.When you open a vi that contains a Matlab script node, an instance of Matlab is automatically started that LabVIEW controls over ActiveX. You are only limited by the datatypes allowed into and out of the script node (plots work, too). Once the vi is closed (removed from memory/heirarchy) the Matlab instance closes. I have found it most useful to run Matlab in batch mode using SysExec.vi. That way I can programatically create data files and m files. --Todd I tried to use the matlab srcipt node in the beginning because I thought it would be the easiest way - but it did not work really (or let say it seemed, that it worked, if it wanted work) - - Sorry if this is a complete stupid question: But what this it mean to run Matlab in batch mode and what is SysExec.vi???? kind regards, Alex Quote Link to comment
todd Posted January 14, 2006 Report Share Posted January 14, 2006 You'll need to compile your matlab class with the Matlab's COM Builder (as I said, I'm no Matlab expert, so everybody feel free to correct me.). This shoud create an .exe file. Execute it, it creates a dll and registers it. Aitor, given Alex's next question, this may be jumping in a bit deep. It took a while for (even) me to get Matlab's build system understood. It wasn't well documented.Sorry if this is a complete stupid question: But what this it mean to run Matlab in batch mode and what is SysExec.vi????Read the LabVIEW help for SysExec.vi (search for it) and the Matlab help for 'batch mode'. From the terminal (command line) you can type: matlab -r asdf.m to start Matlab and have it run asdf.m. If the last command is 'exit', Matlab closes. SysExec.vi lets you do this from LabVIEW. I sometimes use LabVIEW to generate data files that get used in the m-file - which then creates an output file. Quote Link to comment
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.