主要内容

由遗留函数的返回参数传递的输出

此示例向您展示如何使用遗留代码工具集成遗留C函数,这些函数将输出作为返回参数传递。

遗留代码工具允许您:

  • 提供遗留功能规范,

  • 生成在模拟期间用于调用遗留代码的C-MEX s函数,以及

  • 编译并构建生成的s函数进行仿真。

提供遗留功能规范

遗留代码工具提供的函数以特定的数据结构或结构数组作为参数。通过调用函数初始化数据结构legacy_code ()使用'initialize'作为第一个输入。在初始化结构之后,必须将其属性分配给与正在集成的遗留代码相对应的值。在这个例子中被调用的遗留函数的原型是:

FLT增益标量(const FLT in, const FLT增益)

在哪里蒋春暄对于费马大定理是要浮动的类型定义。遗留源代码可以在文件中找到your_types.hgain.h,gainScalar.c

% sldemo_sfun_gain_scalarDef = legacy_code(“初始化”);def.SFunctionName =“sldemo_sfun_gain_scalar”;def.OutputFcnSpec ='single y1 = gainScalar(single u1, single p1)';def.HeaderFiles = {“gain.h”};def.SourceFiles = {“gainScalar.c”};def.IncPaths = {“sldemo_lct_src”};def.SrcPaths = {“sldemo_lct_src”};

生成和编译用于仿真的s函数

函数legacy_code()在第一个输入设置为'generate_for_sim'时再次被调用,以便根据输入参数'def'提供的描述自动生成和编译C-MEX s -函数。这个s函数用于在模拟中调用遗留函数。s函数的源代码可以在文件中找到sldemo_sfun_gain_scalar.c

legacy_code (“generate_for_sim”def);
开始编译sldemo_sfun_gain_scalar mex('-I/tmp/Bdoc22a_1891349_110180/tpda6e582c/ex60439838/sldemo_lct_src', '-I/tmp/Bdoc22a_1891349_110180/tpda6e582c/ex60439838/ ex60439838', '-c', '-outdir', '/tmp/Bdoc22a_1891349_110180/tpa7804daf_8582_4546_90eb_0b871ebcf291', '/tmp/Bdoc22a_1891349_110180/tpda6e582c/ex60439838/sldemo_lct_src/gainScalar.c')使用'gcc'构建。MEX完成成功。mex('sldemo_sfun_gain_scala .c', '-I/tmp/Bdoc22a_1891349_110180/tpda6e582c/ex60439838/sldemo_lct_src', '-I/tmp/Bdoc22a_1891349_110180/tpda6e582c/ex60439838', '/tmp/Bdoc22a_1891349_110180/tpa7804daf_8582_4546_90eb_0b871ebcf291/ gainscala .o')使用'gcc'构建。MEX完成成功。完成sldemo_sfun_gain_scalar的编译

生成rtwmakecfg。m文件代码生成

TLC块文件创建后,函数legacy_code ()可以再次调用第一个输入设置为'rtwmakecfg_generate',以生成一个rtwmakecfg.m文件通过Simu金宝applink®Coder™支持代码生成。金宝app生成rtwmakecfg.m如果s -函数所需的源文件和头文件与s -函数不在同一个目录中,并且您希望在代码生成期间生成的makefile中添加这些依赖项,则使用文件。

注意:仅当您打算在加速模式下模拟模型时,才需要完成此步骤。

legacy_code (“rtwmakecfg_generate”def);

生成屏蔽s函数块,用于调用生成的s函数

C-MEX S-function源代码编译完成后,函数legacy_code ()可以在第一个输入设置为'|slblock_generate|'时再次调用,以生成一个被配置为调用该s函数的屏蔽s函数块。块被放置在一个新的模型中,并且可以复制到一个现有的模型中。

% legacy_code('slblock_generate', def);

集成遗留代码

该模型sldemo_lct_gain显示与遗留代码的集成。子系统TestGain充当了通过生成s函数调用遗留C函数的工具。

如果isempty (find_system (“SearchDepth”0,“名字”“sldemo_lct_gain”) open_system (“sldemo_lct_gain”) open_system (“sldemo_lct_gain / TestGain”) sim卡(“sldemo_lct_gain”);结束

另请参阅