提问人:Stefan Jacobs 提问时间:8/22/2023 最后编辑:Geert BellekensStefan Jacobs 更新时间:8/22/2023 访问量:30
状态机码生成问题
Problem with state machine code generation
问:
我正在 v 15.2 中为包含子状态的状态机测试 EA 代码生成。 我使用“示例模型/模型仿真/状态机模型/嵌套跟踪”作为C++代码生成的eaxmple。 当我从“ExampleClass”生成代码时,我得到了不同数量的状态,激活了“使用新 Sate 机器 Tamplate”复选框。
“新建状态机模板”导致
enum StateEnum
{
NOSTATE,
ExampleClass_VIRTUAL_SUBMACHINESTATE,
ExampleClass_ENUM_NESTEDTRACES_B,
ExampleClass_ENUM_NESTEDTRACES_FINAL_2904,
ExampleClass_ENUM_NESTEDTRACES_C,
ExampleClass_ENUM_NESTEDTRACES_A,
ExampleClass_ENUM_NESTEDTRACES_D,
ExampleClass_ENUM_NESTEDTRACES_B_B2,
ExampleClass_ENUM_NESTEDTRACES_B_B1,
ExampleClass_ENUM_NESTEDTRACES_C_C1,
ExampleClass_ENUM_NESTEDTRACES_C_C2
};
我可以找到所有状态和子状态(例如 A、B、B1、B2 等)
但是“旧状态机模板”导致
enum StateType
{
Nested Traces_B,
Nested Traces_C,
Nested Traces_Final,
Nested Traces_D,
Nested Traces_A,
ST_NOSTATE
};
在那里我只能找到所有主要状态(例如 A、B、C、...
代码生成器模板“Statemachine”中使用的列表是
$sStates = %EASLList="StateEnumerate" @separator=",\n" @indent="\t" @owner=$StateMachineGUID @collection="AllStates"%
它应该提供包括子州在内的“AllStates”集合。EA 用户指南说“状态机内的所有状态,包括子机状态内的状态”。
为了解决这个问题,我尝试访问超纵坐标状态的子机。
检查“HasSubMachine”标志返回“true”,但“SubMachine”ID 为空。
我喜欢使用“旧状态机模板”,因为可以针对现有的状态机结构进行代码生成。
如何访问子州或完成州列表?
答: 暂无答案
评论