C++与Simulink混合编程Engine方式


附件是本人通过C++调用Matlab engine的方式写的DLL接口,通过接口可以直接调用simulink模型,比其他方式调用的优点是,不用再将模型生成代码或Dll
资源截图
代码片段和文件信息
#include “stdafx.h“
#include “VcEngineDll.h“

bool vcOpenEngine()
{
pEngine = engOpen(NULL);
if(NULL == pEngine)
{
return false; 
}
else
{
return true;
}
}


bool vcCloseEngine()
{
if (pEngine !=NULL)
{
bool bFlag = engClose(pEngine);
if(0 == bFlag)
{
pEngine = NULL;
return true; 
}
}
return false;
}

//void vcCreateMxArray(const char* pSrcVarint iVarLengthmxArray* pDstVar)
//{
// if(pSrcVar != NULL)
// {
// mxArray *pVarArray = mxCreateDoubleMatrix(1iVarLengthmxREAL);
// if (NULL != pVarArray)
// {
// memcpy((char*) mxGetPr(pDstVar)pSrcVariVarLength * sizeof(double));
// }
// }
//}

bool vcPutVarToWorkpace(double* pScrVarconst char* pcVarNameint iVarLength)
{
if((pScrVar != NULL)&&(pEngine != NULL))
{
double i  = *pScrVar;
mxArray *pVarArray = mxCreateDoubleMatrix(1iVarLengthmxREAL);
if (NULL != pVarArray)
{
memcpy((double*) mxGetPr(pVarArray)(double*)pScrVariVarLength * sizeof(double));
}

int iFlag = engPutVariable(pEnginepcVarNamepVarArray);
if (0 == iFlag)
{
return true;
}
}
return false;
}

double vcGetVarFromWorkpace(const char* pcVarName)
{
mxArray* T = NULL;
//T = engGetVariable(pEngine“m_it_duty_max“);
T = engGetVariable(pEnginepcVarName);
if(T == NULL)
{
return 0;
}
/*int i = mxGetN(T);
double i = mxGetScalar(T+i);*/
double i = mxGetScalar(T);
return i;
}

void vcEngineCommand(const char* pCommand)
{
if (NULL != pEngine)
{
engEvalString(pEnginepCommand);
}
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-01-18 09:44  VcEngineDll
     目录           0  2017-12-29 15:36  VcEngineDllipch
     目录           0  2017-12-29 15:36  VcEngineDllipchvcenginedll-10bb28e1
     文件    71958528  2017-12-29 15:36  VcEngineDllipchvcenginedll-10bb28e1vcenginedll-60558757.ipch
     目录           0  2017-12-29 15:05  VcEngineDllVcEngineDll
     文件         900  2016-08-25 16:30  VcEngineDllVcEngineDll.sln
     文件       13824  2016-08-25 16:30  VcEngineDllVcEngineDll.suo
     文件       26112  2017-12-29 15:38  VcEngineDllVcEngineDll.v12.suo
     目录           0  2016-08-25 16:30  VcEngineDllVcEngineDllDebug
     文件         313  2016-08-25 16:30  VcEngineDllVcEngineDllEngineInferface.h
     文件        1572  2016-08-25 16:30  VcEngineDllVcEngineDllEngineInterface.cpp
     文件        2858  2016-08-25 16:30  VcEngineDllVcEngineDllReadMe.txt
     目录           0  2016-08-25 16:30  VcEngineDllVcEngineDllRelease
     目录           0  2017-12-29 15:05  VcEngineDllVcEngineDll
es
     文件         382  2016-08-25 16:30  VcEngineDllVcEngineDllResource.h
     文件         806  2016-08-25 16:30  VcEngineDllVcEngineDll
esVcEngineDll.rc2
     文件         211  2016-08-25 16:30  VcEngineDllVcEngineDllstdafx.cpp
     文件        1290  2016-08-25 16:30  VcEngineDllVcEngineDllstdafx.h
     文件         314  2016-08-25 16:30  VcEngineDllVcEngineDll argetver.h
     文件       19444  2016-08-25 16:30  VcEngineDllVcEngineDllVcEngineDll.aps
     文件        2225  2016-08-25 16:30  VcEngineDllVcEngineDllVcEngineDll.cpp
     文件         123  2016-08-25 16:30  VcEngineDllVcEngineDllVcEngineDll.def
     文件         612  2016-08-25 16:30  VcEngineDllVcEngineDllVcEngineDll.h
     文件        6530  2016-08-25 16:30  VcEngineDllVcEngineDllVcEngineDll.rc
     文件        6888  2016-08-25 16:30  VcEngineDllVcEngineDllVcEngineDll.vcxproj
     文件        2050  2016-08-25 16:30  VcEngineDllVcEngineDllVcEngineDll.vcxproj.filters
     文件         143  2016-08-25 16:30  VcEngineDllVcEngineDllVcEngineDll.vcxproj.user

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)