You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vector CANoe 15.1 DEMO版ignition为0/1时onTimer不工作故障咨询

问题根因
  • 逻辑结构错误:ignition为0/1分支下的两个if判断是独立执行的,当开启危险报警灯时(hazardWarning=1,此时turnlights=0),每次50ms调用fMain()时都会先触发第一个if分支,将flag3重置为0
  • 定时器被反复重置:紧接着第二个if判断hazardWarning == 1 && flag3==0条件满足,会反复执行setTimer(HazardCyclic,1000),导致危险报警灯定时器永远无法触发1s的溢出事件,同时每次都会强制将左右信号灯设为1,最终表现为LED常亮
  • else分支逻辑错误:原有else分支会在flag3=1时直接关闭所有灯并取消定时器,进一步破坏闪烁逻辑
修复方案

把ignition为0/1的分支逻辑改为互斥的if-else结构,优先判断危险报警灯状态,避免重复重置标志和定时器,完全符合「ignition为0/1时仅开启危险报警灯功能」的需求,修改后的代码段如下:

if (ignition == 0 || ignition == 1)
{
  if (hazardWarning == 1)
  {
    // 危险报警灯开启时仅执行闪烁逻辑
    if (flag3 == 0)
    {
      @IPC::LeftSignal=1;
      @IPC::RightSignal=1;
      setTimer(HazardCyclic,1000);
      flag1=0;
      flag2=0;
      flag3=1;
      cancelTimer(TurnLeftCyclic);
      cancelTimer(TurnRightCyclic);
    }
  }
  else
  {
    // 危险报警灯关闭时所有灯熄灭,清空状态
    @IPC::LeftSignal=0;
    @IPC::RightSignal=0;
    flag1=0;
    flag2=0;
    flag3=0;
    cancelTimer(TurnLeftCyclic);
    cancelTimer(TurnRightCyclic);
    cancelTimer(HazardCyclic);
  }
}

内容的提问来源于stack exchange,提问作者PerryMOFO

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 20:36:01