金宝appSimulink.importExternalCTypes
生成金宝app由C或c++代码定义的自定义数据类型的表示
语法
描述
解析C或c++头文件(importInfo
= 金宝appSimulink.importExternalCTypes (headerFiles
).h
或. hpp
)编号为headerFiles
为类型定义
,结构体
,枚举
类型定义,并生成Simulink金宝app®类型的表示形式。输出,importInfo
,标识成功导入和不成功导入的类型。
您可以使用Simulink表示来金宝app:
重用现有的算法C代码,并通过模拟测试其与Simulink控制算法的交互。金宝app有关显示如何使用遗留代码工具的示例,请参见集成C函数,其参数是指向结构的指针.
生成代码(金宝app仿真软件编码器™),重用现有代码定义的类型和数据。然后,您可以将生成的代码和现有代码集成并编译到单个应用程序中。有关示例,请参见在生成的代码和外部代码之间交换结构化和枚举数据(嵌入式编码).
通过使用组织在C代码中定义的标准数据类型,在模型中创建和组织数据(信号、参数和状态)。
要在Simulink中创建信号结构,请使用非虚拟总线。金宝app看到将信号线分组为虚拟总线.
要创建参数结构,请使用MATLAB®结构和
金宝app仿真软件。参数
对象。看到在结构中组织相关块参数定义.要创建枚举数据,请参见在Simulink模型中使用枚举数据金宝app.
要匹配一个原语
类型定义
语句,使用金宝app仿真软件。AliasType
对象来设置模型中的参数和信号数据类型。
默认情况下,函数为:
通过生成派生枚举类的脚本文件来导入枚举类型
金宝app仿真软件。在tEnumType
,详见定义Simul金宝appink枚举.如果需要,您可以编辑类定义以自定义它(例如,通过实现addClassNameToEnumNames
方法)。类来导入结构类型
金宝app仿真软件。公共汽车
基本工作区中的对象。导入原语
类型定义
语句,生成金宝app仿真软件。AliasType
基本工作区中的对象。解释泛型C数据类型,例如
int
或短
,根据主机的字长。例如,对于大多数现代机器,int
具有32位字长,因此该函数表示int
结构字段作为使用Simulink数据类型的总线元素金宝appint32
.属性标识目标硬件板,以覆盖此默认行为
HardwareImplementation
对参数。
有关默认行为的其他信息,请参见提示.
通过分析您所识别的模金宝app型,生成自定义C数据类型的Simulink表示importInfo
= 金宝appSimulink.importExternalCTypes (modelName
)modelName
.当你使用模拟目标模型中的配置参数用于识别模拟期间要包含的头文件,使用此语法导入类型,以便在主机计算机上模拟模型。该函数根据主机的字长解释通用C数据类型。
使用此语法时,不要使用对参数,例如HardwareImplementation
,这可能与目标模型的配置参数冲突。当您以这种语法使用此类对参数时,该函数将生成一个警告。
使用一个或多个名称-值对参数指定其他选项。你可以使用这个语法:importInfo
= 金宝appSimulink.importExternalCTypes (___、名称、值)
属性指定要导入的类型的名称
的名字
对参数。控制Simulink存储导入类型的方式,例金宝app如,通过在Simulink数据字典中生成类型。使用
MATFile
而且DataDictionary
对参数。控制函数解释泛型C数据类型的方式。使用
HardwareImplementation
对参数。通过尝试再次导入更新后的c代码定义,保持c代码定义与Simulink表示之间的同步。金宝app您可以选择是否覆盖现有的Simulink表示。金宝app使用
覆盖
而且详细的
对参数。
例子
输入参数
输出参数
限制
该函数不支持:金宝app
与Simulink支持的类型不对应的C数据类型。金宝app金宝app例如,Simulink不识金宝app别等价的For
长两倍
.有关Simulink支持的数据类型的信息,请参见金宝app金宝appSimulink支持的金宝app数据类型金宝app.指针类型,例如定义值为指针或指针的字段的结构
类型定义
基类型为指针类型的语句。结构,定义值具有多个维度的字段。
如果字段值是1-D数组,则该函数创建一个表示向量而不是矩阵的总线元素。
工会。
如果结构字段表示定点数据,或者如果
类型定义
语句映射到定点基类型,函数设置相应总线元素或的数据类型金宝app仿真软件。AliasType
对象设置为相关的Simulink整数类型(例如金宝appint16
).导入器无法通过解析C代码来确定定点缩放。类的基类型或总线元素的数据类型金宝app仿真软件。AliasType
对象,使用fixdt
函数。
提示
如果一个MATLAB函数block或statflow®图表在模型中使用导入的枚举或结构类型,则配置模型配置参数以包括(
# include
)外部头文件中的类型定义。看到控件导入的总线和枚举类型定义(MATLAB函数块),在状态流程图中访问自定义代码变量和函数(Stateflow)而且在状态流程图中集成自定义结构(Stateflow)(图表)。默认情况下:
对于导入的枚举,因为Simulink枚举类派生自金宝app
金宝app仿真软件。在tEnumType
,当从模型模拟或生成代码时,枚举使用目标硬件本机的整数大小。您可以使用模型配置参数来指定目标硬件的特征,例如生产设备厂商及类型而且生产硬件中的本机字大小.对于导入的结构类型:
只有当结构字段使用相应的结构字段之一时,函数才将该结构字段导入为数值复杂的结构字段金宝app仿真软件编码器结构类型作为数据类型。例如,如果外部代码中的结构字段使用数据类型
cint8_T
,函数将字段作为总线元素导入(金宝app仿真软件。公共汽车Element
对象),其数据类型为int8
和谁的复杂性
属性设置为“复杂”
.对于嵌套结构,函数为每个唯一的结构类型生成一个总线对象。
对于导入的结构或枚举类型,如果外部代码使用
类型定义
语句来命名类型,则生成的总线对象或Simulink枚举类的名称将匹配金宝app类型定义
的名字。如果您的代码没有使用类型定义
语句来命名类型时,对象或类的名称就是类型的标记名,除非该名称与类中定义的类型名冲突类型定义
语句,在这种情况下,该类型不会导入到Simulink中。金宝app如果未指定标记名称或应用类型定义
名称,Sim金宝appulink为对象或类生成任意名称。请注意
类中未命名的类型
类型定义
语句中,模型配置参数导入自定义代码必须选中。该函数将生成的Simulink表示配置为用于模拟和代码生成的目的。金宝app例如,对于总线对象,该函数设置
DataScope
财产“进口”
和HeaderFile
属性设置为外部头文件的名称。要从使用这些Simulink表示之一的模型模拟或生成代码,必须使您的头文件对模型可用。金宝app
指定文件时
金宝appSimulink.importExternalCTypes
使用或生成,例如通过使用DataDictionary
对论点:如果要使用的现有文件位于当前文件夹或MATLAB路径中,则不需要指定文件路径。您可以自行指定文件名。
要控制生成文件的文件夹位置,可以指定路径和文件名。你也可以使用
OutputDir
对参数。