|
@@ -12,6 +12,7 @@ using VehicleControlSystem.ControlLayer;
|
|
|
using GSG.NET.Utils;
|
|
using GSG.NET.Utils;
|
|
|
using System.Collections.Generic;
|
|
using System.Collections.Generic;
|
|
|
using System.Linq;
|
|
using System.Linq;
|
|
|
|
|
+using GSG.NET.LINQ;
|
|
|
|
|
|
|
|
namespace VehicleControlSystem.Managers
|
|
namespace VehicleControlSystem.Managers
|
|
|
{
|
|
{
|
|
@@ -36,26 +37,27 @@ namespace VehicleControlSystem.Managers
|
|
|
//if (this.isErrorProcessing == value) return;
|
|
//if (this.isErrorProcessing == value) return;
|
|
|
this.isErrorProcessing = value;
|
|
this.isErrorProcessing = value;
|
|
|
|
|
|
|
|
- if ( value )
|
|
|
|
|
|
|
+ if (value)
|
|
|
{
|
|
{
|
|
|
//if ( this.activeAlarm == null ) return;
|
|
//if ( this.activeAlarm == null ) return;
|
|
|
//this.OnOccurAlarm?.BeginInvoke( this.activeAlarm.AlarmId, null, null );
|
|
//this.OnOccurAlarm?.BeginInvoke( this.activeAlarm.AlarmId, null, null );
|
|
|
}
|
|
}
|
|
|
else
|
|
else
|
|
|
{
|
|
{
|
|
|
- this.ActiveAlarms.ForEach( x =>
|
|
|
|
|
- {
|
|
|
|
|
- this.OnClearAlarm?.Invoke( x.AlarmId );
|
|
|
|
|
-
|
|
|
|
|
- var al = ObjectCopyUtils.DeepClone<Alarm>( x );
|
|
|
|
|
- var args = new ActiveAlarmEventArgs( al, false );
|
|
|
|
|
- this.eventAggregator.GetEvent<ActiveAlarmPubSubEvent>().Publish( args );
|
|
|
|
|
- } );
|
|
|
|
|
|
|
+ this.ActiveAlarms.ForEach(x =>
|
|
|
|
|
+ {
|
|
|
|
|
+ if (x.AlarmId != 45)
|
|
|
|
|
+ this.OnClearAlarm?.Invoke(x.AlarmId);
|
|
|
|
|
+
|
|
|
|
|
+ var al = ObjectCopyUtils.DeepClone<Alarm>(x);
|
|
|
|
|
+ var args = new ActiveAlarmEventArgs(al, false);
|
|
|
|
|
+ this.eventAggregator.GetEvent<ActiveAlarmPubSubEvent>().Publish(args);
|
|
|
|
|
+ });
|
|
|
this.ActiveAlarms.Clear();
|
|
this.ActiveAlarms.Clear();
|
|
|
//if ( this.activeAlarm == null ) return;
|
|
//if ( this.activeAlarm == null ) return;
|
|
|
//this.OnClearAlarm?.BeginInvoke( this.activeAlarm.AlarmId, null, null );
|
|
//this.OnClearAlarm?.BeginInvoke( this.activeAlarm.AlarmId, null, null );
|
|
|
//this.activeAlarm = null;
|
|
//this.activeAlarm = null;
|
|
|
- this.BuzzerOnOff( false );
|
|
|
|
|
|
|
+ this.BuzzerOnOff(false);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -101,17 +103,17 @@ namespace VehicleControlSystem.Managers
|
|
|
get { return operationMode; }
|
|
get { return operationMode; }
|
|
|
set
|
|
set
|
|
|
{
|
|
{
|
|
|
- if ( operationMode == value ) return;
|
|
|
|
|
|
|
+ if (operationMode == value) return;
|
|
|
|
|
|
|
|
operationMode = value;
|
|
operationMode = value;
|
|
|
- logger.D( $"[AutoManager] OperationMode - {value}" );
|
|
|
|
|
|
|
+ logger.D($"[AutoManager] OperationMode - {value}");
|
|
|
|
|
|
|
|
- this.OnOperationModeChanged?.Invoke( value );
|
|
|
|
|
|
|
+ this.OnOperationModeChanged?.Invoke(value);
|
|
|
|
|
|
|
|
- if ( value == eOperatationMode.AutoMode )
|
|
|
|
|
- this.iO.OutputOff( "OUT_TEACH_MODE" );
|
|
|
|
|
|
|
+ if (value == eOperatationMode.AutoMode)
|
|
|
|
|
+ this.iO.OutputOff("OUT_TEACH_MODE");
|
|
|
else
|
|
else
|
|
|
- this.iO.OutputOn( "OUT_TEACH_MODE" );
|
|
|
|
|
|
|
+ this.iO.OutputOn("OUT_TEACH_MODE");
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
public event Action<eOperatationMode> OnOperationModeChanged;
|
|
public event Action<eOperatationMode> OnOperationModeChanged;
|
|
@@ -122,11 +124,11 @@ namespace VehicleControlSystem.Managers
|
|
|
get { return autoModeState; }
|
|
get { return autoModeState; }
|
|
|
set
|
|
set
|
|
|
{
|
|
{
|
|
|
- if ( autoModeState == value ) return;
|
|
|
|
|
|
|
+ if (autoModeState == value) return;
|
|
|
|
|
|
|
|
autoModeState = value;
|
|
autoModeState = value;
|
|
|
- logger.D( $"[AutoManager] AutoModeState - {value}" );
|
|
|
|
|
- switch ( value )
|
|
|
|
|
|
|
+ logger.D($"[AutoManager] AutoModeState - {value}");
|
|
|
|
|
+ switch (value)
|
|
|
{
|
|
{
|
|
|
case eAutoModeState.ErrorStop:
|
|
case eAutoModeState.ErrorStop:
|
|
|
this.LampStateProperty = eLampState.Alarm;
|
|
this.LampStateProperty = eLampState.Alarm;
|
|
@@ -155,10 +157,10 @@ namespace VehicleControlSystem.Managers
|
|
|
get { return lampState; }
|
|
get { return lampState; }
|
|
|
set
|
|
set
|
|
|
{
|
|
{
|
|
|
- if ( lampState == value ) return;
|
|
|
|
|
|
|
+ if (lampState == value) return;
|
|
|
|
|
|
|
|
lampState = value;
|
|
lampState = value;
|
|
|
- this.LampStateChange( value );
|
|
|
|
|
|
|
+ this.LampStateChange(value);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -170,7 +172,7 @@ namespace VehicleControlSystem.Managers
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
Vehicle vehicle = null;
|
|
Vehicle vehicle = null;
|
|
|
- public AutoManager( IIO io, IEventAggregator ea, SqliteManager sql, List<Alarm> al )
|
|
|
|
|
|
|
+ public AutoManager(IIO io, IEventAggregator ea, SqliteManager sql, List<Alarm> al)
|
|
|
{
|
|
{
|
|
|
this.iO = io;
|
|
this.iO = io;
|
|
|
this.eventAggregator = ea;
|
|
this.eventAggregator = ea;
|
|
@@ -183,43 +185,43 @@ namespace VehicleControlSystem.Managers
|
|
|
#region Vehicle Events
|
|
#region Vehicle Events
|
|
|
private void Vehicle_OnChargingFull()
|
|
private void Vehicle_OnChargingFull()
|
|
|
{
|
|
{
|
|
|
- if ( this.OperationModeProperty == eOperatationMode.AutoMode )
|
|
|
|
|
- LampStateChange( eLampState.AutoRunNChargingFull );
|
|
|
|
|
|
|
+ if (this.OperationModeProperty == eOperatationMode.AutoMode)
|
|
|
|
|
+ LampStateChange(eLampState.AutoRunNChargingFull);
|
|
|
else
|
|
else
|
|
|
- LampStateChange( eLampState.Manual );
|
|
|
|
|
|
|
+ LampStateChange(eLampState.Manual);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
private void Vehicle_OnCharging()
|
|
private void Vehicle_OnCharging()
|
|
|
{
|
|
{
|
|
|
- LampStateChange( eLampState.Charging );
|
|
|
|
|
|
|
+ LampStateChange(eLampState.Charging);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
private void Vehicle_OnMoveFinish()
|
|
private void Vehicle_OnMoveFinish()
|
|
|
{
|
|
{
|
|
|
- BuzzerOnOff( false );
|
|
|
|
|
- logger.D( "Vehicle Move Finish" );
|
|
|
|
|
|
|
+ BuzzerOnOff(false);
|
|
|
|
|
+ logger.D("Vehicle Move Finish");
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
private void Vehicle_OnMoving()
|
|
private void Vehicle_OnMoving()
|
|
|
{
|
|
{
|
|
|
- BuzzerOnOff( true, eBuzzerKind.Moving );
|
|
|
|
|
- logger.D( "Vehicle Moving" );
|
|
|
|
|
|
|
+ BuzzerOnOff(true, eBuzzerKind.Moving);
|
|
|
|
|
+ logger.D("Vehicle Moving");
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
private void Vehicle_OnMoveReady()
|
|
private void Vehicle_OnMoveReady()
|
|
|
{
|
|
{
|
|
|
- BuzzerOnOff( true, eBuzzerKind.StartWarn );
|
|
|
|
|
- logger.D( "Vehicle Move Ready" );
|
|
|
|
|
|
|
+ BuzzerOnOff(true, eBuzzerKind.StartWarn);
|
|
|
|
|
+ logger.D("Vehicle Move Ready");
|
|
|
}
|
|
}
|
|
|
#endregion
|
|
#endregion
|
|
|
|
|
|
|
|
- public void Init( Vehicle vehicle )
|
|
|
|
|
|
|
+ public void Init(Vehicle vehicle)
|
|
|
{
|
|
{
|
|
|
this.OperationModeProperty = eOperatationMode.ManualMode;
|
|
this.OperationModeProperty = eOperatationMode.ManualMode;
|
|
|
this.AutoModeStateProperty = eAutoModeState.Stop;
|
|
this.AutoModeStateProperty = eAutoModeState.Stop;
|
|
|
|
|
|
|
|
this.isThreadAlive = true;
|
|
this.isThreadAlive = true;
|
|
|
- this.threadWorker = ThreadUtils.Invoke( this.ThreadWork );
|
|
|
|
|
|
|
+ this.threadWorker = ThreadUtils.Invoke(this.ThreadWork);
|
|
|
|
|
|
|
|
this.vehicle = vehicle;
|
|
this.vehicle = vehicle;
|
|
|
this.vehicle.OnMoveReady += Vehicle_OnMoveReady;
|
|
this.vehicle.OnMoveReady += Vehicle_OnMoveReady;
|
|
@@ -230,25 +232,25 @@ namespace VehicleControlSystem.Managers
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
#region Lamp & Buzzer
|
|
#region Lamp & Buzzer
|
|
|
- void LampStateChange( eLampState state )
|
|
|
|
|
|
|
+ void LampStateChange(eLampState state)
|
|
|
{
|
|
{
|
|
|
- this.iO.OutputOff( "OUT_TOWER_LAMP_RED" );
|
|
|
|
|
- this.iO.OutputOff( "OUT_TOWER_LAMP_GREEN" );
|
|
|
|
|
|
|
+ this.iO.OutputOff("OUT_TOWER_LAMP_RED");
|
|
|
|
|
+ this.iO.OutputOff("OUT_TOWER_LAMP_GREEN");
|
|
|
|
|
|
|
|
- switch ( state )
|
|
|
|
|
|
|
+ switch (state)
|
|
|
{
|
|
{
|
|
|
case eLampState.Manual:
|
|
case eLampState.Manual:
|
|
|
case eLampState.Alarm:
|
|
case eLampState.Alarm:
|
|
|
- this.iO.OutputOn( "OUT_TOWER_LAMP_RED" );
|
|
|
|
|
|
|
+ this.iO.OutputOn("OUT_TOWER_LAMP_RED");
|
|
|
break;
|
|
break;
|
|
|
case eLampState.Charging:
|
|
case eLampState.Charging:
|
|
|
- this.iO.OutputOn( "OUT_TOWER_LAMP_RED" );
|
|
|
|
|
- this.iO.OutputOn( "OUT_TOWER_LAMP_GREEN" );
|
|
|
|
|
|
|
+ this.iO.OutputOn("OUT_TOWER_LAMP_RED");
|
|
|
|
|
+ this.iO.OutputOn("OUT_TOWER_LAMP_GREEN");
|
|
|
break;
|
|
break;
|
|
|
case eLampState.AutoRunNChargingFull:
|
|
case eLampState.AutoRunNChargingFull:
|
|
|
- this.iO.OutputOn( "OUT_TOWER_LAMP_GREEN" );
|
|
|
|
|
|
|
+ this.iO.OutputOn("OUT_TOWER_LAMP_GREEN");
|
|
|
break;
|
|
break;
|
|
|
- case eLampState.Blocked : //210812 Kkm 진행 막혀있는 상태 시 Buzzer 및 Lamp 상태 변경
|
|
|
|
|
|
|
+ case eLampState.Blocked: //210812 Kkm 진행 막혀있는 상태 시 Buzzer 및 Lamp 상태 변경
|
|
|
this.iO.OutputOn("OUT_TOWER_LAMP_RED");
|
|
this.iO.OutputOn("OUT_TOWER_LAMP_RED");
|
|
|
this.iO.OutputOn("OUT_TOWER_LAMP_GREEN");
|
|
this.iO.OutputOn("OUT_TOWER_LAMP_GREEN");
|
|
|
break;
|
|
break;
|
|
@@ -257,25 +259,36 @@ namespace VehicleControlSystem.Managers
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- void BuzzerOnOff( bool isOn, eBuzzerKind kind = eBuzzerKind.Alarm )
|
|
|
|
|
|
|
+ void BuzzerOnOff(bool isOn, eBuzzerKind kind = eBuzzerKind.Alarm)
|
|
|
{
|
|
{
|
|
|
- this.iO.OutputOff( "OUT_BUZZER_00" );
|
|
|
|
|
- this.iO.OutputOff( "OUT_BUZZER_01" );
|
|
|
|
|
- this.iO.OutputOff( "OUT_BUZZER_02" );
|
|
|
|
|
|
|
+ this.iO.OutputOff("OUT_BUZZER_00");
|
|
|
|
|
+ this.iO.OutputOff("OUT_BUZZER_01");
|
|
|
|
|
+ this.iO.OutputOff("OUT_BUZZER_02");
|
|
|
|
|
|
|
|
- if ( !isOn )
|
|
|
|
|
|
|
+ if (!isOn)
|
|
|
return;
|
|
return;
|
|
|
|
|
|
|
|
- switch ( kind )
|
|
|
|
|
|
|
+ //21.09.16. Kang. 주행중 Buzzer 사용 선택.
|
|
|
|
|
+ if (kind == eBuzzerKind.Moving)
|
|
|
|
|
+ {
|
|
|
|
|
+ var useMovingBuzzer = sql.ConfigDal.Get(_ => _.ID.Equals(ConstString.UseMovingBuzzer)).FirstOrDefault();
|
|
|
|
|
+ if (useMovingBuzzer != null)
|
|
|
|
|
+ {
|
|
|
|
|
+ if (useMovingBuzzer.Value.FwIntOf() <= 0)
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ switch (kind)
|
|
|
{
|
|
{
|
|
|
case eBuzzerKind.Alarm:
|
|
case eBuzzerKind.Alarm:
|
|
|
- this.iO.OutputOn( "OUT_BUZZER_00" );
|
|
|
|
|
|
|
+ this.iO.OutputOn("OUT_BUZZER_00");
|
|
|
break;
|
|
break;
|
|
|
case eBuzzerKind.StartWarn:
|
|
case eBuzzerKind.StartWarn:
|
|
|
- this.iO.OutputOn( "OUT_BUZZER_01" );
|
|
|
|
|
|
|
+ this.iO.OutputOn("OUT_BUZZER_01");
|
|
|
break;
|
|
break;
|
|
|
case eBuzzerKind.Moving:
|
|
case eBuzzerKind.Moving:
|
|
|
- this.iO.OutputOn( "OUT_BUZZER_02" );
|
|
|
|
|
|
|
+ this.iO.OutputOn("OUT_BUZZER_02");
|
|
|
break;
|
|
break;
|
|
|
//case eBuzzerKind.Blocked: //210812 Kkm 진행 막혀있는 상태 시 Buzzer 및 Lamp 상태 변경
|
|
//case eBuzzerKind.Blocked: //210812 Kkm 진행 막혀있는 상태 시 Buzzer 및 Lamp 상태 변경
|
|
|
// break;
|
|
// break;
|
|
@@ -289,31 +302,31 @@ namespace VehicleControlSystem.Managers
|
|
|
{
|
|
{
|
|
|
Thread.CurrentThread.Name = $"{this.GetType().Name}-Work";
|
|
Thread.CurrentThread.Name = $"{this.GetType().Name}-Work";
|
|
|
|
|
|
|
|
- while ( this.isThreadAlive )
|
|
|
|
|
|
|
+ while (this.isThreadAlive)
|
|
|
{
|
|
{
|
|
|
try
|
|
try
|
|
|
{
|
|
{
|
|
|
- Thread.Sleep( 100 );
|
|
|
|
|
|
|
+ Thread.Sleep(100);
|
|
|
|
|
|
|
|
DoWork();
|
|
DoWork();
|
|
|
}
|
|
}
|
|
|
- catch ( Exception ex )
|
|
|
|
|
|
|
+ catch (Exception ex)
|
|
|
{
|
|
{
|
|
|
- logger.E( $"{GetType().Name} - Thread Exception : {ex.StackTrace}" );
|
|
|
|
|
|
|
+ logger.E($"{GetType().Name} - Thread Exception : {ex.StackTrace}");
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- logger.D( "[AutoManager] - Work Thread Dispose" );
|
|
|
|
|
|
|
+ logger.D("[AutoManager] - Work Thread Dispose");
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public void DoWork()
|
|
public void DoWork()
|
|
|
{
|
|
{
|
|
|
- switch ( this.OperationModeProperty )
|
|
|
|
|
|
|
+ switch (this.OperationModeProperty)
|
|
|
{
|
|
{
|
|
|
case eOperatationMode.ManualMode:
|
|
case eOperatationMode.ManualMode:
|
|
|
break;
|
|
break;
|
|
|
|
|
|
|
|
case eOperatationMode.AutoMode:
|
|
case eOperatationMode.AutoMode:
|
|
|
- switch ( this.AutoModeStateProperty )
|
|
|
|
|
|
|
+ switch (this.AutoModeStateProperty)
|
|
|
{
|
|
{
|
|
|
case eAutoModeState.ErrorStop:
|
|
case eAutoModeState.ErrorStop:
|
|
|
this.AutoModeStateProperty = eAutoModeState.WaitStop;
|
|
this.AutoModeStateProperty = eAutoModeState.WaitStop;
|
|
@@ -324,7 +337,7 @@ namespace VehicleControlSystem.Managers
|
|
|
break;
|
|
break;
|
|
|
|
|
|
|
|
case eAutoModeState.Stop:
|
|
case eAutoModeState.Stop:
|
|
|
- if ( IsAllProcessStop() )
|
|
|
|
|
|
|
+ if (IsAllProcessStop())
|
|
|
{
|
|
{
|
|
|
//TODO: 여기서 메인명령을 정리하자.
|
|
//TODO: 여기서 메인명령을 정리하자.
|
|
|
this.sql.SubCmdDAL.Clean();
|
|
this.sql.SubCmdDAL.Clean();
|
|
@@ -336,7 +349,7 @@ namespace VehicleControlSystem.Managers
|
|
|
break;
|
|
break;
|
|
|
|
|
|
|
|
case eAutoModeState.StartRun:
|
|
case eAutoModeState.StartRun:
|
|
|
- if ( IsAllProcessStart() )
|
|
|
|
|
|
|
+ if (IsAllProcessStart())
|
|
|
this.AutoModeStateProperty = eAutoModeState.Run;
|
|
this.AutoModeStateProperty = eAutoModeState.Run;
|
|
|
break;
|
|
break;
|
|
|
|
|
|
|
@@ -356,11 +369,11 @@ namespace VehicleControlSystem.Managers
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- public void ProcessAlarm( int alarmID )
|
|
|
|
|
|
|
+ public void ProcessAlarm(int alarmID)
|
|
|
{
|
|
{
|
|
|
HisAlarm hisAlarm = new HisAlarm();
|
|
HisAlarm hisAlarm = new HisAlarm();
|
|
|
- var alarm = this.Alarms.Where( x => x.AlarmId == alarmID ).FirstOrDefault();
|
|
|
|
|
- if ( alarm == null )
|
|
|
|
|
|
|
+ var alarm = this.Alarms.Where(x => x.AlarmId == alarmID).FirstOrDefault();
|
|
|
|
|
+ if (alarm == null)
|
|
|
{
|
|
{
|
|
|
hisAlarm.AlarmId = alarmID;
|
|
hisAlarm.AlarmId = alarmID;
|
|
|
hisAlarm.Text = "Not Define Alarm";
|
|
hisAlarm.Text = "Not Define Alarm";
|
|
@@ -370,7 +383,7 @@ namespace VehicleControlSystem.Managers
|
|
|
alarm.Level = eAlarmLevel.Fault;
|
|
alarm.Level = eAlarmLevel.Fault;
|
|
|
alarm.Text = "Not Define Alarm";
|
|
alarm.Text = "Not Define Alarm";
|
|
|
|
|
|
|
|
- logger.E( $"[{this.GetType().Name}] - Alarm Process / Not Define Alarm No {alarmID}" );
|
|
|
|
|
|
|
+ logger.E($"[{this.GetType().Name}] - Alarm Process / Not Define Alarm No {alarmID}");
|
|
|
}
|
|
}
|
|
|
else
|
|
else
|
|
|
{
|
|
{
|
|
@@ -379,39 +392,40 @@ namespace VehicleControlSystem.Managers
|
|
|
hisAlarm.Solution = alarm.Solution;
|
|
hisAlarm.Solution = alarm.Solution;
|
|
|
}
|
|
}
|
|
|
//Add History
|
|
//Add History
|
|
|
- sql.HisAlarmDAL.Insert( hisAlarm );
|
|
|
|
|
- logger.I( $"[Alarm Occur] - ID : {alarmID} / Text : {hisAlarm.Text}" );
|
|
|
|
|
|
|
+ sql.HisAlarmDAL.Insert(hisAlarm);
|
|
|
|
|
+ logger.I($"[Alarm Occur] - ID : {alarmID} / Text : {hisAlarm.Text}");
|
|
|
|
|
|
|
|
- if ( this.ActiveAlarms == null )
|
|
|
|
|
|
|
+ if (this.ActiveAlarms == null)
|
|
|
return;
|
|
return;
|
|
|
|
|
|
|
|
- if ( !this.ActiveAlarms.Any( x => x.AlarmId == alarmID ) )
|
|
|
|
|
|
|
+ if (!this.ActiveAlarms.Any(x => x.AlarmId == alarmID))
|
|
|
{
|
|
{
|
|
|
//OCS Report
|
|
//OCS Report
|
|
|
- this.OnOccurAlarm?.Invoke( alarm.AlarmId );
|
|
|
|
|
|
|
+ if (alarm.AlarmId != 45) //2021.09.13 Kang Servo Fault 알람은 제거 요청(나성권B)
|
|
|
|
|
+ this.OnOccurAlarm?.Invoke(alarm.AlarmId);
|
|
|
|
|
|
|
|
- var cloneAlarm = ObjectCopyUtils.DeepClone<Alarm>( alarm );
|
|
|
|
|
|
|
+ var cloneAlarm = ObjectCopyUtils.DeepClone<Alarm>(alarm);
|
|
|
this.activeAlarm = cloneAlarm;
|
|
this.activeAlarm = cloneAlarm;
|
|
|
- this.ActiveAlarms.Add( cloneAlarm ); //Clear 보고를 위한 List Add
|
|
|
|
|
|
|
+ this.ActiveAlarms.Add(cloneAlarm); //Clear 보고를 위한 List Add
|
|
|
|
|
|
|
|
- var args = new ActiveAlarmEventArgs( cloneAlarm );
|
|
|
|
|
- this.eventAggregator.GetEvent<ActiveAlarmPubSubEvent>().Publish( args );
|
|
|
|
|
|
|
+ var args = new ActiveAlarmEventArgs(cloneAlarm);
|
|
|
|
|
+ this.eventAggregator.GetEvent<ActiveAlarmPubSubEvent>().Publish(args);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- if ( alarm.Level == eAlarmLevel.Warn )
|
|
|
|
|
|
|
+ if (alarm.Level == eAlarmLevel.Warn)
|
|
|
return;
|
|
return;
|
|
|
|
|
|
|
|
this.AutoModeStateProperty = eAutoModeState.ErrorStop;
|
|
this.AutoModeStateProperty = eAutoModeState.ErrorStop;
|
|
|
this.LampStateProperty = eLampState.Alarm;
|
|
this.LampStateProperty = eLampState.Alarm;
|
|
|
this.BuzzerStateProperty = eBuzzerKind.Alarm;
|
|
this.BuzzerStateProperty = eBuzzerKind.Alarm;
|
|
|
|
|
|
|
|
- this.BuzzerOnOff( true, eBuzzerKind.Alarm );
|
|
|
|
|
|
|
+ this.BuzzerOnOff(true, eBuzzerKind.Alarm);
|
|
|
|
|
|
|
|
this.sql.CommandDAL.Clean();
|
|
this.sql.CommandDAL.Clean();
|
|
|
this.sql.SubCmdDAL.Clean();
|
|
this.sql.SubCmdDAL.Clean();
|
|
|
|
|
|
|
|
//UI 로는 처음 발생한 Error 만 전송한다.
|
|
//UI 로는 처음 발생한 Error 만 전송한다.
|
|
|
- if ( IsErrorProcessing )
|
|
|
|
|
|
|
+ if (IsErrorProcessing)
|
|
|
return;
|
|
return;
|
|
|
IsErrorProcessing = true;
|
|
IsErrorProcessing = true;
|
|
|
|
|
|
|
@@ -422,23 +436,24 @@ namespace VehicleControlSystem.Managers
|
|
|
MessageText = hisAlarm.Text,
|
|
MessageText = hisAlarm.Text,
|
|
|
Args = hisAlarm,
|
|
Args = hisAlarm,
|
|
|
};
|
|
};
|
|
|
- this.eventAggregator.GetEvent<GUIMessagePubSubEvent>().Publish( msg );
|
|
|
|
|
|
|
+ this.eventAggregator.GetEvent<GUIMessagePubSubEvent>().Publish(msg);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// <summary>
|
|
|
/// Alarm Clear 를 여기서 모아서 하자.
|
|
/// Alarm Clear 를 여기서 모아서 하자.
|
|
|
/// </summary>
|
|
/// </summary>
|
|
|
/// <param name="alarmID"></param>
|
|
/// <param name="alarmID"></param>
|
|
|
- public void ClearAlarm( int alarmID )
|
|
|
|
|
|
|
+ public void ClearAlarm(int alarmID)
|
|
|
{
|
|
{
|
|
|
var alarm = this.ActiveAlarms.FirstOrDefault(x => x.AlarmId == alarmID);
|
|
var alarm = this.ActiveAlarms.FirstOrDefault(x => x.AlarmId == alarmID);
|
|
|
- if ( alarm == null)
|
|
|
|
|
|
|
+ if (alarm == null)
|
|
|
return;
|
|
return;
|
|
|
|
|
|
|
|
this.ActiveAlarms.Remove(alarm);
|
|
this.ActiveAlarms.Remove(alarm);
|
|
|
logger.I($"[{this.GetType().Name}] - Alarm Clear [{alarmID}]");
|
|
logger.I($"[{this.GetType().Name}] - Alarm Clear [{alarmID}]");
|
|
|
|
|
|
|
|
- this.OnClearAlarm?.Invoke(alarm.AlarmId);
|
|
|
|
|
|
|
+ if (alarm.AlarmId != 45) //2021.09.13 Kang Servo Fault 알람은 제거 요청(나성권B)
|
|
|
|
|
+ this.OnClearAlarm?.Invoke(alarm.AlarmId);
|
|
|
|
|
|
|
|
var al = ObjectCopyUtils.DeepClone<Alarm>(alarm);
|
|
var al = ObjectCopyUtils.DeepClone<Alarm>(alarm);
|
|
|
var args = new ActiveAlarmEventArgs(al, false);
|
|
var args = new ActiveAlarmEventArgs(al, false);
|
|
@@ -447,7 +462,7 @@ namespace VehicleControlSystem.Managers
|
|
|
|
|
|
|
|
bool IsAllProcessStop()
|
|
bool IsAllProcessStop()
|
|
|
{
|
|
{
|
|
|
- if ( vehicle.IsAutoRun )
|
|
|
|
|
|
|
+ if (vehicle.IsAutoRun)
|
|
|
return false;
|
|
return false;
|
|
|
|
|
|
|
|
return true;
|
|
return true;
|
|
@@ -461,16 +476,16 @@ namespace VehicleControlSystem.Managers
|
|
|
#region IDisposable Support
|
|
#region IDisposable Support
|
|
|
private bool disposedValue = false; // 중복 호출을 검색하려면
|
|
private bool disposedValue = false; // 중복 호출을 검색하려면
|
|
|
|
|
|
|
|
- protected virtual void Dispose( bool disposing )
|
|
|
|
|
|
|
+ protected virtual void Dispose(bool disposing)
|
|
|
{
|
|
{
|
|
|
- if ( !disposedValue )
|
|
|
|
|
|
|
+ if (!disposedValue)
|
|
|
{
|
|
{
|
|
|
- if ( disposing )
|
|
|
|
|
|
|
+ if (disposing)
|
|
|
{
|
|
{
|
|
|
// TODO: 관리되는 상태(관리되는 개체)를 삭제합니다.
|
|
// TODO: 관리되는 상태(관리되는 개체)를 삭제합니다.
|
|
|
this.isThreadAlive = false;
|
|
this.isThreadAlive = false;
|
|
|
- if ( !this.threadWorker.Join( 3000 ) )
|
|
|
|
|
- ThreadUtils.Kill( this.threadWorker );
|
|
|
|
|
|
|
+ if (!this.threadWorker.Join(3000))
|
|
|
|
|
+ ThreadUtils.Kill(this.threadWorker);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// TODO: 관리되지 않는 리소스(관리되지 않는 개체)를 해제하고 아래의 종료자를 재정의합니다.
|
|
// TODO: 관리되지 않는 리소스(관리되지 않는 개체)를 해제하고 아래의 종료자를 재정의합니다.
|
|
@@ -491,7 +506,7 @@ namespace VehicleControlSystem.Managers
|
|
|
public void Dispose()
|
|
public void Dispose()
|
|
|
{
|
|
{
|
|
|
// 이 코드를 변경하지 마세요. 위의 Dispose(bool disposing)에 정리 코드를 입력하세요.
|
|
// 이 코드를 변경하지 마세요. 위의 Dispose(bool disposing)에 정리 코드를 입력하세요.
|
|
|
- Dispose( true );
|
|
|
|
|
|
|
+ Dispose(true);
|
|
|
// TODO: 위의 종료자가 재정의된 경우 다음 코드 줄의 주석 처리를 제거합니다.
|
|
// TODO: 위의 종료자가 재정의된 경우 다음 코드 줄의 주석 처리를 제거합니다.
|
|
|
// GC.SuppressFinalize(this);
|
|
// GC.SuppressFinalize(this);
|
|
|
}
|
|
}
|