--5515485.1076332199448.JavaMail.quiq.tekken Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable
Dear Sirs: My name is Juan Crespo and I write you from Spain. I answer if you could help me with a Labview problem. This is the problem. I want to write a DLL for being used in labview, and i want to use matlab for write this DLL. I have been searching in the web and reading the NI "using external code in labview" manual in order to know what I must do. I know that if I want to use MatLab, I must build a "wrapper function" to avoid the different data type between MatLab and C. I have found on the web -Thanks to Alberto Sanchez- one example about how could a DLL could be written. But it exist one diference: I want to read a plain text file that has the input data. so I must read the file, store the data in an array and then pass this array to the "interface functions" but in a simple example this dont works My question is =BFHow could I open a text file in order to use it as input data in a DLL in Matlab? Attached to this message is the code I use as "wrapper function". when I compile it there is no apparent errors, but when I try to use the DLL in a VI, an error appears. If I change this code and the input is made "manually" (using the VI) there are no errors. So I think that problem is in the way that Labview consider "fopen" function when I build a DLL. The "num.txt" file, where the data input are, is on the same directory that dll file and VI file. I hope that you can help me with this problem. Thank you very much in advance and please sorry for my bad english Best Regards Juan Crespo --5515485.1076332199448.JavaMail.quiq.tekken Content-Type: application/octet-stream; name=foo_wrapper.c Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=foo_wrapper.c Content-Description: This is the code that does nor work /* * MATLAB Compiler: 3.0 * This file foo_wrapper.c */ #include "matlab.h" #include "foodll.h" #include "matrix.h" #include <stdio.h> //main wrapper function definition double wrapper_main (void){ //declare variable to deliver result double out; double *in1; FILE *far; //Create two pointers of mxArray type to store inputs and outputs mxArray *in1_ptr, *out1_ptr; //Allocate input pointer to a 1 by 1 double, real matrix in1_ptr = mxCreateDoubleMatrix(1,1,mxREAL); far = fopen ("num.txt","r"); fscanf (far,"%lf",in1); fclose (far); //Move the data from the input to the pointer fill(mxGetPr(in1_ptr),in1,1); //Initialise foo implementation foolibInitialize(); //Pass values to mlfFoo and receive in mxArray type variable out1_ptr = mlfFoo(in1_ptr); //Terminate foo implementation foolibTerminate(); //Move from mxArray type to double type fill(&in1,mxGetPr(out1_ptr),1); //move data to output variable out = *in1; //Return value return(out); } void fill(double *out, double *in, int size){ //This function moves data from one type to another int i; for(i=0;i<size;i++) out[i] = in[i]; } --5515485.1076332199448.JavaMail.quiq.tekken--