问题描述
扩展多路复用中,m0M 表示一个信号同时具有两种角色:
- 它属于上一级选择器的分支
0
- 它本身还是下一级选择器
DbcGenerator 当前会先调用 MultiplexingInfo() 解析标记,然后只根据 Role 和 Group 重新生成标记。
由于 m0M 被解析为普通 Multiplexed,生成结果只保留 m0,末尾的 M 丢失。
确认环境:
- 分支:
master
- 提交:
a736f3b850bb454268093b8c1a409627649393e8
- 文件:
EasyDbc/Generators/DbcGenerator.cs
最小复现内容
BO_ 1 Example: 8 ECU
SG_ Root M : 0|4@1+ (1,0) [0|15] "" ECU
SG_ Nested m0M : 8|4@1+ (1,0) [0|15] "" ECU
复现步骤
- 解析包含
SG_ Nested m0M 的 DBC。
- 使用
DbcGenerator 重新生成 DBC。
- 检查
Nested 信号的标记。
实际结果
生成器输出:
M 被删除,信号不再表示下一级选择器。
期望结果
生成器应保留:
一轮解析和生成不应改变多路复用拓扑。
建议修复方式
如果 Signal.Multiplexing 已由解析器验证,生成器可以直接保留原始标记:
string multiplexorIndicator =
string.IsNullOrWhiteSpace(signal.Multiplexing)
? string.Empty
: $" {signal.Multiplexing}";
同时建议增加以下往返测试:
M
m0
m0M
SG_MUL_VAL_ 扩展范围
问题描述
扩展多路复用中,
m0M表示一个信号同时具有两种角色:0DbcGenerator当前会先调用MultiplexingInfo()解析标记,然后只根据Role和Group重新生成标记。由于
m0M被解析为普通Multiplexed,生成结果只保留m0,末尾的M丢失。确认环境:
mastera736f3b850bb454268093b8c1a409627649393e8EasyDbc/Generators/DbcGenerator.cs最小复现内容
复现步骤
SG_ Nested m0M的 DBC。DbcGenerator重新生成 DBC。Nested信号的标记。实际结果
生成器输出:
M被删除,信号不再表示下一级选择器。期望结果
生成器应保留:
一轮解析和生成不应改变多路复用拓扑。
建议修复方式
如果
Signal.Multiplexing已由解析器验证,生成器可以直接保留原始标记:同时建议增加以下往返测试:
Mm0m0MSG_MUL_VAL_扩展范围