0

我一直在尝试开发一个 AUTOSAR 4.2.1 模块来使用 Xpand/Xtend 生成代码。我正在使用 arttext 演示器 1.6.0。但是我的疑问是,当我在演示器中创建一个新的 Ecu 平台项目时,在 PDF(ECUConfigurationParameters.arxml) 中没有找到定义变化点的概念(或者我可能不熟悉如何查找)。

默认情况下,我能够从 arxml 中获取参数值。但是,当在不同的构建后变体条件中定义的参数有多个值时,我只会得到第一个值。例如,如果 arxml 包含这个

<ECUC-NUMERICAL-PARAM-VALUE>
<DEFINITION-REF DEST="ECUC-BOOLEAN-PARAM-DEF"> /AUTOSAR/EcucDefs/Com/ComConfig/ComIPdu/ComIPduCancellationSuppo rt</DEFINITION-REF>
<VARIATION-POINT>
<POST-BUILD-VARIANT-CONDITIONS>
<POST-BUILD-VARIANT-CONDITION>
<MATCHING-CRITERION-REF DEST="POST-BUILD-VARIANT-CRITERION">/EcucDemo/PostBuildConfigSet</MATCHING-CRITERION-REF>
<VALUE>1</VALUE>
</POST-BUILD-VARIANT-CONDITION>
</POST-BUILD-VARIANT-CONDITIONS>
</VARIATION-POINT>
<VALUE>1</VALUE>
</ECUC-NUMERICAL-PARAM-VALUE>
<ECUC-NUMERICAL-PARAM-VALUE>
<DEFINITION-REF DEST="ECUC-BOOLEAN-PARAM-DEF"> /AUTOSAR/EcucDefs/Com/ComConfig/ComIPdu/ComIPduCancellationSuppo rt</DEFINITION-REF>
<VARIATION-POINT>
<POST-BUILD-VARIANT-CONDITIONS>
<POST-BUILD-VARIANT-CONDITION>
<MATCHING-CRITERION-REF DEST="POST-BUILD-VARIANT-CRITERION">/EcucDemo/PostBuildConfigSet</MATCHING-CRITERION-REF>
<VALUE>2</VALUE>
</POST-BUILD-VARIANT-CONDITION>
</POST-BUILD-VARIANT-CONDITIONS>
</VARIATION-POINT>
<VALUE>0</VALUE>
</ECUC-NUMERICAL-PARAM-VALUE>

如果我这样做,它会给我在 Xpand 中的“真实”价值Com.ComConfig.ComIpdus.ComIPduCancellationSupport。我无法访问第二个值“false”。

如何根据构建后的变体条件继续获取参数值?

我正在尝试执行以下操作:

«DEFINE Gen1 FOR varianthandling::VariationPoint»
    «EXPAND Gen1::GetThings»
«ENDDEFINE»

«DEFINE GenMain FOR AUTOSAR::EcucDefs::Com»
        «EXPAND Gen1 FOR varianthandling::VariationPoint»
«ENDDEFINE»

这给了我一个错误,因为“找不到 xpand2::Type 类型的定义 ComOtherVarGen ”。我如何实现上述目标?请注意,我没有尝试向“MainObj”模板添加/修改任何功能,因此“AROUND”不是我想要的。

任何帮助是极大的赞赏。

4

1 回答 1

0

您用于创建模型的工具(由 PDF 文件 + EcuC 值文件创建)必须能够构建与构建后兼容的模型。

如果您确定,这已经完成 - 然后尝试以下方法

Com.ComConfig.ComIpdus.ComIPduCancellationSupport更改为

<FOREACH Com.ComConfig.ComIpdus.ComIPduCancellationSupport AS ele>
<ele>
<ENDFOREACH>

或者

Com.ComConfig.ComIpdus.ComIPduCancellationSupport.get(0) Com.ComConfig.ComIpdus.ComIPduCancellationSupport.get(1)

于 2015-07-24T06:47:22.320 回答