无论是Simulink仿真,还是对模型做代码生成,已有C代码的调用都是我们经常会遇到的情形:
如何调用现有的外部C代码?
很多人首先想到的是S-Function。的确,S-Function提供了一种途径,可以让我们把C函数封装成Simulink模块在Simulink环境下运行。另外还有一种方式,叫做Legacy Code Tool,说白了也是S-Function,只是MATLAB提供了这样的接口便于用于实现S-Function封装。这两种做法都不是我要介绍的。
我想跟大家说的是更方便的方法:
使用Stateflow调用外部C代码。
假设有两个文件,myfile.c和myfile.h。其中myfile.c中定义了一个全局函数和全局变量,如下:
#include "myfile.h"
double x;
double myfun(double a, double b)
{
return a +b;
}
myfile.h文件是对全局函数myfun()和全局变量x的声明。
假如我已经为Chart定义了两个输入input1和input2,一个输出output,那么Stateflow里你就可以像下面这样使用这个函数和变量:
除此,你不仅可以使用flowchart去调用外部C代码&