walnutcy

基于matlab的COM与VC 编程

0
阅读(2079)

今晚查资料学习了下,基本过程如下:

注:想实现一个实时从串口读数据并进行分析的应用,需要高精度的数据处理及拟合,所以想用matlab混编,另matlab好像可以直接读串口,需要查下资料。

COM编程,也有很多函数不可使用,明天再查找下matlab直接读取串口的例程,了解下先。


编写一个简单的M文件,带画图功能,如下:

function res = plot_sin(h, r)
x = -pi:pi/100:pi;
y = sin(x);
plot(x,y);
res = 1;

然后输入deploytool,我用的是2008a,  旧版的是comtool;

新建COM工程,然后添加M文件,编译即可。

在VC中调用如下:  注:这三个文件需要拷贝到C工程,在编译目录可以找到,

#include "mwcomtypes.h"
#include "test1_idl.h"
#include "test1_idl_i.c"
void CltSimGPSDlg::OnViewSkyview()
{
 // Initialize argument variables
 VARIANT res;
 VARIANT h;
 VARIANT r;
 //Initialize the COM library    
 HRESULT hr = CoInitialize(NULL);  
 //Create an instance of the COM object you created   
 Itest1class *pImycomponentclass;    
 hr=CoCreateInstance(CLSID_test1class, NULL, CLSCTX_INPROC_SERVER, IID_Itest1class,
         (void **)&pImycomponentclass);
 VariantInit(&h);
 VariantInit(&r);
 hr=(pImycomponentclass -> plot_sin(1, &res, h, r));
 // Uninitialize COM    
 CoUninitialize();     
}