为什么内部数据类型的定义不是在“Rte_Type生成。当使用AUTOSAR h”?

84(30天)
我的仿万博1manbetx真软件模型包含一个内部数据类型的定义没有被出口到“Rte_Type.h”。为我与AUTOSAR模型生成代码时,我得到以下错误生成的代码编译时SIL测试:
错误:未知类型名字“myEnumType”
我定义的数据类型是一个枚举通过执行下面的代码在MATLAB中,设置头文件“Rte_type.h”:
万博1manbetxSimulink.defineIntEnumType (“myEnumType”,
{“一个”,“b”,“c”},
(0 1 2),
“DefaultValue”,“一个”,
“StorageType”,“uint8”,
“HeaderFile”,“Rte_Type.h”,
“AddClassNameToEnumNames”,真正的);
我怎样才能解决这个错误呢?

接受的答案

MathWorks支万博1manbetx持团队
MathWorks支万博1manbetx持团队 2023年4月25日下午4
编辑:MathWorks支万博1manbetx持团队 2023年5月1日3点
问题的根源:
  • 编译中的错误是指内部数据类型的定义并不是在“Rte_type生成。h”(我们定义数据类型作为内部时,不使用任何接口RTE)。
  • 不建议“Rte_type内部类型。h”设置为头文件,除非你想出口这些类型IncludedDataTypeSets在ARXML可以共享,由多个软件组件使用。
  • 相反,让他们在一个头文件对应的本地具体SWC将提供一个更干净的代码的分区。
推荐的解决方法:
我看出你正在定义枚举数据类型万博1manbetxSimulink.defineIntEnumType:
  • 目前,我看到“HeaderFile”设置为“Rte_type。h”,但没有设置“DataScope”定义枚举类型时提供。
  • 默认情况下,根据文档,当有一个HeaderFile但不是DataScope财产,仿真软件预计类型万博1manbetx进口从“Rte_type。h”,因此错误消息。
根据您的用例中,有两个推荐的方法:
1。自顶向下的流程:
  • 在这种情况下,你可以:\ n
    • 添加一个“HeaderFile”属性,你选择一个头文件,和“DataScope”设置为“出口”(这种方式这个内部类型的定义将生成特定头文件),或
    • 只是不设置任何值“HeaderFile”和“DataScope”的特性。在这种情况下,将出口到“modelname_types.h”类型。
作为一个例子使用枚举数据类型的两个选项,你上面显示:
1。选择HeaderFile和DataScope设置为“出口”(数据类型定义将生成“myheaderfile.h”):
万博1manbetxSimulink.defineIntEnumType (“myEnumType”,
{“一个”,“b”,“c”},
(0 1 2),
“DefaultValue”,“一个”,
“StorageType”,“uint8”,
“HeaderFile”,“myheaderfile.h”,
“DataScope”,“出口”,
“AddClassNameToEnumNames”,真正的);
2。不添加任何HeaderFile或DataScope(数据类型定义默认情况下生成的“modelname_types.h”):
万博1manbetxSimulink.defineIntEnumType (“myEnumType”,{' a ', ' b ', ' c '},…[0 1 2],…' DefaultValue ', ' ',……“StorageType”、“uint8’,……“AddClassNameToEnumNames”,真正的);
2。自底向上流程:(从MATLAB R2020b发布)
  • 如果您正在使用仿真软件作为AUTO万博1manbetxSAR创作工具和需要中定义的所有数据类型生成的代码,您可以使用此功能从MATLAB R2020b释放
  • 使用这个新特性,您可以导出内部类型的定义,并为您的特定用例,您可以选择内部类型出口“Rte_type.h”。
  • 为此,您可以选择“Rte_type。作为HeaderFile h”,设置DataScope属性“出口”,如下:
万博1manbetxSimulink.defineIntEnumType (“myEnumType”,{' a ', ' b ', ' c '},…[0 1 2],…' DefaultValue ', ' ',……“StorageType”、“uint8’,……“HeaderFile”、“Rte_type。h’,……“DataScope”、“出口”,……“AddClassNameToEnumNames”,真正的);
这将使“myEnumType”生成的定义“Rte_type.h”。
1评论
博学黄
博学黄 2022年12月7日
编辑:博学黄 2022年12月7日
设置option1和错误如下:
  • 枚举类型的头文件的XXXXXXXXXXXXX必须设置为“Rte_Type.h”。要修复这个错误,更新getHeaderFile枚举类型的方法返回“Rte_Type.h”。
  • 枚举类型的DataScope XXXXXXXXXXXXX,不应该被设置为“出口”。要修复这个错误,更新getDataScope枚举类型的方法返回一个“出口”以外的有效值
设置option2和错误如下:
  • 枚举类型的头文件的XXXXXXXXXXXXX必须设置为“Rte_Type.h”。要修复这个错误,更新getHeaderFile枚举类型的方法返回“Rte_Type.h”。
MATLAB (R2021b)
万博1manbetx仿真软件(R2021b)

登录置评。

更多的答案(0)

类别

找到更多的在AUTOSAR Blockset帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!

翻译的