主要内容

集成外部C / c++代码金宝app使用C函数

你可以叫和外部C代码集成到模型中金宝app®模型使用C函数块。C函数允许您调用外部C代码块和定制的集成代码使用输出代码,开始代码,初始化条件代码,终止代码窗格中块参数对话框。使用C函数块:

  • 从外部C代码调用函数定义包括函数名称空间下,和定制的代码仿真软件模型。金宝app

  • 预处理后的数据调用C函数和后处理数据调用功能。

  • 为模拟和代码生成指定不同的代码。

  • 调用多个函数。

  • 初始化和使用的持久数据的缓存块。

  • 分配和释放内存。

使用C函数块调用外部C算法成您想修改的模型。金宝app从仿真软件调用一个C函数模型,使用金宝appC调用者块。集成动态系统连续状态或状态发生变化时,使用功能块。

请注意

C99标准版本的C语言支持自定义C代码集成到模型。金宝app金宝app

下面的例子使用C函数块来计算的输入和平均总和。

写外部源文件

首先创建外部源文件。

  1. 创建一个头文件命名data_array.h

    / *定义一个结构体称为DataArray * / typedef struct DataArray_tag{/ *定义一个指针称为pData * / const双* pData;/ *定义变量的长度* / int长度;}DataArray;/ *函数声明* /双data_sum (DataArray数据);

  2. 在同一个文件夹中,创建一个新文件,data_array.c。在这个文件中,编写一个C函数,计算输入数字的总和。

    # include“data_array。h " / *定义一个函数,在一个结构体* /双data_sum (DataArray数据){/ * 2定义局部变量在函数中使用* /双金额= 0.0;int我;/ *计算值的总和* / (i = 0;我< data.length;我+ +){金额=和+ data.pData[我];}/ *返回结果块* /返回总和;}

进入外部代码金宝app

  1. 创建一个新的,并添加一个空白模型C函数块。的C函数块的用户定义函数库的库浏览器。

  2. 双击C函数块打开对话框。点击打开模型配置参数对话框。在模拟目标窗格中,定义你的头文件包括头信息代码信息选项卡。

    自定义代码部分的模拟目标窗格中模型配置参数对话框。代码信息选项卡并包含突出显示标题字段。以下文本输入的字段:# include“data_array.h”

    提示

    在你进入信息源文件在下一步中,你可以点击自动从源文件头文件名自动填充,使用你的源文件中包含的信息。

  3. 定义的源文件源文件代码信息选项卡。验证您的自定义代码可以被解析并建立成功,点击验证自定义代码

    自定义代码部分的模拟目标窗格中模型配置参数对话框。代码信息选项卡并突出显示源文件字段。以下文本输入的字段:data_array.c

    请注意

    使用一个C函数块在每个子系统或连续采样时间,或优化使用块在条件输入分支执行,所有自定义代码功能由块调用必须是确定的,也就是说,总是产生同样的输出相同的输入。识别哪些定制代码使用的函数是确定的确定的功能指定的功能参数模拟目标窗格。如果全局变量引用任何自定义代码块,确定的功能必须设置为所有为了阻止为每个子系统中使用,在条件输入分支执行,或连续采样时间。

    显示一个例子C函数块为每个子系统,明白了在每个子系统中使用C函数块

  4. 输出代码面板的C函数块参数对话框中,写在仿真执行的代码块。在这个例子中,外部C函数计算一笔。在输出代码窗格中,编写代码调用data_array.c函数来计算,然后计算平均值。

    / *声明结构体dataArr * / DataArray dataArr;/ *长度和数据存储在* / dataArr从输入端口。pData =与数据[0];dataArr。长度=长度;/ *从外部代码调用该函数来计算和* /和= data_sum (dataArr);/ *计算平均* /平均=总和/长度;

    您可以指定代码运行的模拟和仿真的结束开始代码终止代码窗格。

  5. 使用符号表定义中使用的符号代码块。添加或删除一个符号使用添加删除按钮。定义中使用的符号输出代码,开始代码,初始化条件代码,终止代码窗格以确保港口正确显示。

    符号表,用于块中的代码的每个符号,定义的名字,范围,标签,类型,大小,港口,如适当。

    关闭块参数对话框。填写表中的数据后,C函数块现在有一个输入端和两个输出端口与表中指定的标签。

  6. 添加一个常数块的仿真软件画布的输入金宝appC函数块。在常数块,与100年创建一个随机行数组元素。显示结果,将显示块的输出C函数块。

指定模拟或代码生成代码

您可以指定不同输出代码为模拟和代码生成C函数块定义MATLAB_MEX_FILE。例如,指定代码,只有在建模仿真运行,使用以下。

# ifdef MATLAB_MEX_FILE / *输入仿真代码* /其他# / * * / # endif输入代码生成代码

为代码生成指定申报有针对性的功能

用于代码生成,如果没有外部的头文件和函数的声明(如有针对性的设备驱动程序),你想要的电话C函数块,可以包括一个声明与正确的签名输出代码窗格的块。此操作创建一个函数调用时预期的功能代码生成,如以下示例:

的ifndef MATLAB_MEX_FILE走读生空白driverFcnCall (int16_T, int16_T *);driverFcnCall(阻塞、封网);# endif

另请参阅

功能

对象

相关的话题