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