LabWindows/CVI

cancel
Showing results for 
Search instead for 
Did you mean: 

使用LABWINDOWS/CVI调用MATLAB作为后台的数据传输的问题

使用LABWINDOWS/CVI调用MATLAB作为后台的数据传输的问题

// HOW TO USE "MLApp_DIMLAppGetWorkspaceData

 


通过create activeX cnotroler...生成成的的函数中有一个MLApp_DIMLAppGetWorkspaceData,函数定义如下:
HRESULT CVIFUNC MLApp_DIMLAppGetWorkspaceData (CAObjHandle objectHandle,
ERRORINFO *errorInfo,
const char *name,
const char *workspace,
VARIANT *pdata);


其中VARIANT *pdata这个应该怎么用?这个应该是数据输出

如何控制LABWINDOWS/CVI来获取MATLAB的计算数据?下面的代码目前还存在问题,无法获取到数值

int CVICALLBACK runMCB (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
int status;

char filename[300];
char number[300];
int result = 0;
int i;
////////////////
double time[256] = { 0 };
double freq[128];
double vect_r[256],vect_i[256];
double *vecReal = NULL;
double *vecImag = NULL;

size_t dim1;
size_t dim2;
//////////////////////////////////////////
static char pathname[MAX_PATHNAME_LEN], dirname[MAX_PATHNAME_LEN];
double num,num1;
static FILE *file_handle;
char *cStr = NULL;


char DA[3200];

double tmp1,tmp2;

VARIANT DATA1;
int DATA2[5];


switch (event)
{
case EVENT_COMMIT:

CA_VariantSetEmpty(&DATA1);

file_handle = fopen ("C:\\matlab\\matlabfiletest\\test.txt", "w+");



result = RunMatlabCommand(hMatlab,"x=1;");
result = RunMatlabCommand(hMatlab,"y=2;");
result = RunMatlabCommand(hMatlab,"z=x+y;");

 

// HOW TO USE "MLApp_DIMLAppGetWorkspaceData
MLApp_DIMLAppGetWorkspaceData (hMatlab, NULL, "z", "base", &DATA1);



fclose (file_handle);

if (result != SUCCESS)
{
MessagePopup ("ERROR", "Error in running MATLAB Script");
return 0;
}
break;



}
return 0;
}

0 Kudos
Message 1 of 2
(3,421 Views)

Hi! Mengzhuhao,

 

Which version of Matlab do you have? 

Is there functions named "MLApp_DIMLAppGetFullMatrix(....)" and "MLApp_DIMLAppExecute(.....)" when you created the Matlab activeX automation server?  If so, they should be the functions you use to obtain the data from Matlab. 

0 Kudos
Message 2 of 2
(3,386 Views)