protected override void ExecuteCore(CarSignalInfo signalInfo) { if (CurrentLightRule == null) { StopCore(); return; } var result = CurrentLightRule.Check(signalInfo); switch (result) { case RuleExecutionResult.Continue: return; case RuleExecutionResult.Break: case RuleExecutionResult.Finish: ////获取下一个项目 //var next = ActivedRules.OfType<ILightRule>().SkipWhile(x => x != CurrentLightRule).Skip(1).FirstOrDefault(); //SetCurrentLightRule(next); //获取下一个灯光规则 currentLightRuleIndex++; SetCurrentLightRule(currentLightRuleIndex); return; case RuleExecutionResult.FinishExamItem: break; } }
protected override void ExecuteCore(CarSignalInfo signalInfo) { if (CurrentLightRule == null) { StopCore(); return; } var result = CurrentLightRule.Check(signalInfo); switch (result) { case RuleExecutionResult.Continue: return; case RuleExecutionResult.Break: case RuleExecutionResult.Finish: if (currentLightRuleIndex == 0) { //其实只需要判断客户当前停留的灯光是在近光还是远光 //如果客户开的是近光 if (signalInfo.Sensor.HighBeam) { var NextLightRule = CurrentActiviedRules[currentLightRuleIndex + 1]; Logger.Info("SimulationLightss HighBeam", NextLightRule.LightRuleType); //表示远光 if (NextLightRule.LightRuleType.Contains("HighBeamLightRule")) { currentLightRuleIndex++; } } } else if (signalInfo.Sensor.LowBeam) { //var NextLightRule = CurrentActiviedRules[currentLightRuleIndex + 1]; ////表示是近光 Logger.Info("SimulationLightss LowBeam"); //if (NextLightRule.LightRuleType.Contains("LowBeamLightRule")) //{ // currentLightRuleIndex++; //} } else { Logger.Info("SimulationLightss Default", "Default"); } //获取下一个灯光规则 currentLightRuleIndex++; SetCurrentLightRule(currentLightRuleIndex); return; case RuleExecutionResult.FinishExamItem: break; } }
private void SetCurrentLightRule(int index) { var DataService = Singleton.GetDataService; if (currentLightRuleIndex >= 0) { if (CurrentActiviedRules.Count() > index) { //处理下如果是第一条 CurrentLightRule = CreateLightRule(CurrentActiviedRules[index]); CurrentLightRule.ExamItem = this; CurrentLightRule.Reset(); Logger.InfoFormat("灯光模拟:设置规则:{0}", CurrentLightRule.VoiceFile); return; } } CurrentLightRule = null; }
private void SetCurrentLightRule(int index) { //这里面就是直接从预先加载好的灯光规则里面取出来 //这点其实也可以直接马上进行加载 var rules = ActivedRules.OfType <ILightRule>().ToArray(); if (currentLightRuleIndex >= 0) { if (rules.Count() > index) { CurrentLightRule = rules.ToArray()[index]; CurrentLightRule.Reset(); Logger.InfoFormat("灯光模拟:设置规则:{0}", CurrentLightRule.VoiceFile); return; } } CurrentLightRule = null; }
protected override void ExecuteCore(CarSignalInfo signalInfo) { if (CurrentLightRule == null) { StopCore(); return; } var result = CurrentLightRule.Check(signalInfo); switch (result) { case RuleExecutionResult.Continue: return; case RuleExecutionResult.Break: case RuleExecutionResult.Finish: ////获取下一个项目 //var next = ActivedRules.OfType<ILightRule>().SkipWhile(x => x != CurrentLightRule).Skip(1).FirstOrDefault(); // SetCurrentLightRule(next); // SetC //获取下一个灯光规则 //TODO:龙泉的比较特殊,考虑到易操作性所以在这点加了一个条件判断, if (DataBase.VersionNumber.Contains("龙泉") && CurrentLightRule.RuleCode == DeductionRuleCodes.RC41603) { //怎么判断那一句灯光规则是远近交替 //怎么判断是不是龙泉版本不太好判断 if (signalInfo.Sensor.HighBeam) { BreakRule(DeductionRuleCodes.RC41603); } } currentLightRuleIndex++; SetCurrentLightRule(currentLightRuleIndex); return; case RuleExecutionResult.FinishExamItem: //发送考试完成消息 //考试完成消息 //发送考试完成消息 Messenger.Send <LightFinishMessage>(new LightFinishMessage()); break; } }
protected override void ExecuteCore(CarSignalInfo signalInfo) { if (CurrentLightRule == null) { StopCore(); return; } var result = CurrentLightRule.Check(signalInfo); switch (result) { case RuleExecutionResult.Continue: return; case RuleExecutionResult.Break: case RuleExecutionResult.Finish: //如果是远近光交替则需要停留在近光 if (CurrentLightRule.RuleCode == DeductionRuleCodes.RC41603) { //怎么判断那一句灯光规则是远近交替 //怎么判断是不是龙泉版本不太好判断 if (signalInfo.Sensor.HighBeam) { BreakRule(DeductionRuleCodes.RC41603); } } currentLightRuleIndex++; SetCurrentLightRule(currentLightRuleIndex); return; case RuleExecutionResult.FinishExamItem: break; } }