我一直在尝试使用Xpand / Xtend开发AUTOSAR 4.2.1模块来生成代码。我正在使用artext示例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>
它给了我价值,因为&#39;真实&#39;在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»
这给了我一个错误,因为&#39; 无法找到类型为xpand2 :: Type &#39;的定义ComOtherVarGen。我如何实现上述目标? 请注意,我不是要在“MainObj”的模板中添加/修改任何功能。所以&#39; AROUND&#39;不是我想要的。
非常感谢任何帮助。
答案 0 :(得分:0)
您用来创建模型的工具(从PDF文件+ EcuC Values文件创建)必须能够构建一个与构建后兼容的模型。
如果您确定,这样做 - 然后尝试以下方法
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)