|
|
@@ -38,6 +38,8 @@ namespace VehicleControlSystem.ControlLayer
|
|
|
public ZmqManager ZmqManager { get; set; }
|
|
|
public List<Alarm> Alarms { get; set; }
|
|
|
public HostManager HostManager { get; set; }
|
|
|
+ public SqliteManager Sqlite { get; set; }
|
|
|
+ public AutoManager AutoManager { get; set; }
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
@@ -74,9 +76,9 @@ namespace VehicleControlSystem.ControlLayer
|
|
|
{
|
|
|
if ( SetField( ref this.currentTag, value ) )
|
|
|
{
|
|
|
- var info = sql.VehicleInfoDAL.GetAll().FirstOrDefault();
|
|
|
+ var info = this.refObjects.Sqlite.VehicleInfoDAL.GetAll().FirstOrDefault();
|
|
|
info.CurrentTag = value.ToString();
|
|
|
- sql.VehicleInfoDAL.Update( info );
|
|
|
+ this.refObjects.Sqlite.VehicleInfoDAL.Update( info );
|
|
|
|
|
|
this.OnCurrentTagChanged?.Invoke( value );
|
|
|
}
|
|
|
@@ -168,9 +170,9 @@ namespace VehicleControlSystem.ControlLayer
|
|
|
{
|
|
|
if ( SetField( ref this.vehicleState, value ) )
|
|
|
{
|
|
|
- var info = sql.VehicleInfoDAL.GetAll().FirstOrDefault();
|
|
|
+ var info = this.refObjects.Sqlite.VehicleInfoDAL.GetAll().FirstOrDefault();
|
|
|
info.VehicleState = value;
|
|
|
- sql.VehicleInfoDAL.Update( info );
|
|
|
+ this.refObjects.Sqlite.VehicleInfoDAL.Update( info );
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -183,9 +185,9 @@ namespace VehicleControlSystem.ControlLayer
|
|
|
{
|
|
|
if ( SetField( ref this.machineMode, value ) )
|
|
|
{
|
|
|
- var info = sql.VehicleInfoDAL.GetAll().FirstOrDefault();
|
|
|
+ var info = this.refObjects.Sqlite.VehicleInfoDAL.GetAll().FirstOrDefault();
|
|
|
info.MachineMode = value;
|
|
|
- sql.VehicleInfoDAL.Update( info );
|
|
|
+ this.refObjects.Sqlite.VehicleInfoDAL.Update( info );
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -438,8 +440,8 @@ namespace VehicleControlSystem.ControlLayer
|
|
|
|
|
|
VehicleRefObjects refObjects = null;
|
|
|
|
|
|
- SqliteManager sql = null;
|
|
|
- AutoManager autoManager = null;
|
|
|
+ //SqliteManager sql = null;
|
|
|
+ //AutoManager autoManager = null;
|
|
|
|
|
|
ThreadCancel cancel = new ThreadCancel();
|
|
|
TaskCancel taskCancel = new TaskCancel();
|
|
|
@@ -447,9 +449,29 @@ namespace VehicleControlSystem.ControlLayer
|
|
|
|
|
|
IEventAggregator eventAggregator;
|
|
|
|
|
|
- public Vehicle( VehicleRefObjects vehicleRef, IIO io, SqliteManager sqliteManager, IEventAggregator ea, AutoManager auto )
|
|
|
+ public Vehicle( IEventAggregator ea )
|
|
|
{
|
|
|
- this.refObjects = vehicleRef;
|
|
|
+ this.obstacleBitList.AddRange( new string[]
|
|
|
+ {
|
|
|
+ "OUT_OBSTRUCTION_PATTERN_00",
|
|
|
+ "OUT_OBSTRUCTION_PATTERN_01",
|
|
|
+ "OUT_OBSTRUCTION_PATTERN_02",
|
|
|
+ "OUT_OBSTRUCTION_PATTERN_03",
|
|
|
+ "OUT_OBSTRUCTION_PATTERN_04",
|
|
|
+ } );
|
|
|
+
|
|
|
+ this.eventAggregator = ea;
|
|
|
+
|
|
|
+ this.eventAggregator.GetEvent<DriveControlPubSubEvent>().Unsubscribe( ReceiveDriveControlEvent );
|
|
|
+ this.eventAggregator.GetEvent<DriveControlPubSubEvent>().Subscribe( ReceiveDriveControlEvent );
|
|
|
+
|
|
|
+ this.eventAggregator.GetEvent<ObstacleControlPubSubEvent>().Unsubscribe( ObstacleReceiveEvent );
|
|
|
+ this.eventAggregator.GetEvent<ObstacleControlPubSubEvent>().Subscribe( ObstacleReceiveEvent );
|
|
|
+ }
|
|
|
+
|
|
|
+ public void DependencyInjection( VehicleRefObjects vehicleRefObjects )
|
|
|
+ {
|
|
|
+ this.refObjects = vehicleRefObjects;
|
|
|
|
|
|
this.refObjects.IO.OnChangedIO += IO_OnChangedIO;
|
|
|
|
|
|
@@ -467,33 +489,13 @@ namespace VehicleControlSystem.ControlLayer
|
|
|
|
|
|
this.refObjects.ZmqManager.PropertyChanged += ZmqManager_PropertyChanged;
|
|
|
|
|
|
-
|
|
|
- this.sql = sqliteManager;
|
|
|
- this.autoManager = auto;
|
|
|
- this.autoManager.OnOperationModeChanged += AutoManager_OnOperationModeChanged;
|
|
|
-
|
|
|
- this.obstacleBitList.AddRange( new string[]
|
|
|
- {
|
|
|
- "OUT_OBSTRUCTION_PATTERN_00",
|
|
|
- "OUT_OBSTRUCTION_PATTERN_01",
|
|
|
- "OUT_OBSTRUCTION_PATTERN_02",
|
|
|
- "OUT_OBSTRUCTION_PATTERN_03",
|
|
|
- "OUT_OBSTRUCTION_PATTERN_04",
|
|
|
- } );
|
|
|
-
|
|
|
- this.eventAggregator = ea;
|
|
|
-
|
|
|
- this.eventAggregator.GetEvent<DriveControlPubSubEvent>().Unsubscribe( ReceiveDriveControlEvent );
|
|
|
- this.eventAggregator.GetEvent<DriveControlPubSubEvent>().Subscribe( ReceiveDriveControlEvent );
|
|
|
-
|
|
|
- this.eventAggregator.GetEvent<ObstacleControlPubSubEvent>().Unsubscribe( ObstacleReceiveEvent );
|
|
|
- this.eventAggregator.GetEvent<ObstacleControlPubSubEvent>().Subscribe( ObstacleReceiveEvent );
|
|
|
+ this.refObjects.AutoManager.OnOperationModeChanged += AutoManager_OnOperationModeChanged;
|
|
|
}
|
|
|
|
|
|
|
|
|
private void ObstacleReceiveEvent( ObstacleControlEventArgs obj )
|
|
|
{
|
|
|
- if ( this.autoManager.OperationModeProperty != eOperatationMode.ManualMode )
|
|
|
+ if ( this.refObjects.AutoManager.OperationModeProperty != eOperatationMode.ManualMode )
|
|
|
return;
|
|
|
|
|
|
if ( obj.EventDir == ObstacleControlEventArgs.eEventDir.ToBack )
|
|
|
@@ -640,19 +642,17 @@ namespace VehicleControlSystem.ControlLayer
|
|
|
this.eventAggregator.GetEvent<DriveControlPubSubEvent>().Publish( args );
|
|
|
}
|
|
|
|
|
|
- public void Init( HostManager host )
|
|
|
+ public void Init()
|
|
|
{
|
|
|
ThreadStart();
|
|
|
|
|
|
- this.refObjects.HostManager = host;
|
|
|
-
|
|
|
//TimerUtils.Once(5000, () => { this.CurrentPosition = 1000; });
|
|
|
- var v = sql.VehicleInfoDAL.GetAll().FirstOrDefault();
|
|
|
+ var v = refObjects.Sqlite.VehicleInfoDAL.GetAll().FirstOrDefault();
|
|
|
v.CurrentTag = "0000";
|
|
|
v.VehicleState = eVehicleState.None;
|
|
|
v.MachineMode = eMachineMode.LocalMode;
|
|
|
|
|
|
- sql.VehicleInfoDAL.Update( v );
|
|
|
+ refObjects.Sqlite.VehicleInfoDAL.Update( v );
|
|
|
}
|
|
|
|
|
|
public int InitializationVehicle()
|
|
|
@@ -728,7 +728,7 @@ namespace VehicleControlSystem.ControlLayer
|
|
|
var reply = new DriveControlEventArgs();
|
|
|
|
|
|
int targetTag = args.TargetRouteID;
|
|
|
- var route = sql.RouteDal.Get( x => x.Name.Equals( targetTag ) ).FirstOrDefault();
|
|
|
+ var route = this.refObjects.Sqlite.RouteDal.Get( x => x.Name.Equals( targetTag ) ).FirstOrDefault();
|
|
|
if ( route == null )
|
|
|
{
|
|
|
reply.Result = Results.Fail( "Not Found Route" );
|
|
|
@@ -869,18 +869,18 @@ namespace VehicleControlSystem.ControlLayer
|
|
|
if ( this.ObstacleStateProperty != eObstacleState.Normal ) //장애물 감지 상태 시 조그 동작만 가능하게.
|
|
|
continue;
|
|
|
|
|
|
- if ( this.autoManager.AutoModeStateProperty != eAutoModeState.Run ) //
|
|
|
+ if ( this.refObjects.AutoManager.AutoModeStateProperty != eAutoModeState.Run ) //
|
|
|
continue;
|
|
|
|
|
|
|
|
|
- var subCmd = sql.SubCmdDAL.GetAll().FirstOrDefault();
|
|
|
+ var subCmd = this.refObjects.Sqlite.SubCmdDAL.GetAll().FirstOrDefault();
|
|
|
if ( subCmd == null ) continue;
|
|
|
|
|
|
- if ( !sql.CommandDAL.GetAll().Any( x => x.CommandID.Equals( subCmd.CmdID ) ) )
|
|
|
+ if ( !this.refObjects.Sqlite.CommandDAL.GetAll().Any( x => x.CommandID.Equals( subCmd.CmdID ) ) )
|
|
|
{
|
|
|
if ( subCmd.CmdType == SubCmd.eCmdType.Auto ) //자동 명령중 Main Command 가 없으면 삭제.
|
|
|
{
|
|
|
- sql.SubCmdDAL.Delete( subCmd.ID );
|
|
|
+ this.refObjects.Sqlite.SubCmdDAL.Delete( subCmd.ID );
|
|
|
logger.I( $"SubCmd Deleted - ID={subCmd.ID}, CommandID={subCmd.CmdID}" );
|
|
|
}
|
|
|
}
|
|
|
@@ -930,10 +930,10 @@ namespace VehicleControlSystem.ControlLayer
|
|
|
{
|
|
|
this.refObjects.Drive.CancelCommand( subCmd );
|
|
|
|
|
|
- var cmd = sql.CommandDAL.GetById( subCmd.CmdID );
|
|
|
+ var cmd = this.refObjects.Sqlite.CommandDAL.GetById( subCmd.CmdID );
|
|
|
cmd.State = eCommandState.Complete;
|
|
|
- sql.CommandDAL.Update( cmd );
|
|
|
- sql.SubCmdDAL.Clean();
|
|
|
+ this.refObjects.Sqlite.CommandDAL.Update( cmd );
|
|
|
+ this.refObjects.Sqlite.SubCmdDAL.Clean();
|
|
|
|
|
|
logger.D( $"[Cancel Command] {cmd.TargetID} / {cmd.Type}" );
|
|
|
}
|
|
|
@@ -978,7 +978,7 @@ namespace VehicleControlSystem.ControlLayer
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- sql.SubCmdDAL.Clean();
|
|
|
+ this.refObjects.Sqlite.SubCmdDAL.Clean();
|
|
|
|
|
|
this.taskMoveCancel.Cancel();
|
|
|
this.taskMoveCancel.WaitAll();
|
|
|
@@ -994,7 +994,7 @@ namespace VehicleControlSystem.ControlLayer
|
|
|
{
|
|
|
this.OnMoveReady?.Invoke();
|
|
|
|
|
|
- var moveReadyBuzzerTime = Convert.ToInt32( sql.ConfigDal.GetById( ConstString.BuzzerStartReadyTime ).Value );
|
|
|
+ var moveReadyBuzzerTime = Convert.ToInt32( this.refObjects.Sqlite.ConfigDal.GetById( ConstString.BuzzerStartReadyTime ).Value );
|
|
|
Thread.Sleep( moveReadyBuzzerTime );
|
|
|
|
|
|
this.VehicleStateProperty = eVehicleState.Move;
|
|
|
@@ -1047,10 +1047,10 @@ namespace VehicleControlSystem.ControlLayer
|
|
|
|
|
|
//Todo: 이동중 명령이 삭제 되면 처리 할일들.
|
|
|
//이동중 메인 명력이 없어진다면 정지 후
|
|
|
- if ( null == sql.CommandDAL.GetById( this.CurrentSubCommand.CmdID ) )
|
|
|
+ if ( null == this.refObjects.Sqlite.CommandDAL.GetById( this.CurrentSubCommand.CmdID ) )
|
|
|
{
|
|
|
logger.D( "[Wait Move Done] - 메인 명령 사라짐" );
|
|
|
- var cmd = sql.CommandDAL.GetAll();
|
|
|
+ var cmd = this.refObjects.Sqlite.CommandDAL.GetAll();
|
|
|
if ( cmd == null )
|
|
|
{
|
|
|
logger.D( "[Wait Move Done] - Main Command not Exist Motion Stop" );
|
|
|
@@ -1118,12 +1118,12 @@ namespace VehicleControlSystem.ControlLayer
|
|
|
|
|
|
//Load, Unload 가 끝나면 메인 Command 를 완료 했다고 판단.
|
|
|
logger.I( $"[SubCommand Complete] - Target : {sub.TargetID} / Type : {sub.Type}" );
|
|
|
- sql.SubCmdDAL.Clean();
|
|
|
- var cmd = sql.CommandDAL.GetById( sub.CmdID );
|
|
|
+ this.refObjects.Sqlite.SubCmdDAL.Clean();
|
|
|
+ var cmd = this.refObjects.Sqlite.CommandDAL.GetById( sub.CmdID );
|
|
|
if ( cmd != null )
|
|
|
{
|
|
|
cmd.State = eCommandState.Complete;
|
|
|
- sql.CommandDAL.Update( cmd );
|
|
|
+ this.refObjects.Sqlite.CommandDAL.Update( cmd );
|
|
|
}
|
|
|
|
|
|
TimerUtils.Once( 1000, this.OnLoadComplete );
|
|
|
@@ -1176,12 +1176,12 @@ namespace VehicleControlSystem.ControlLayer
|
|
|
this.PIOSensorOff();
|
|
|
|
|
|
logger.I( $"[SubCommand Complete] - Target : {sub.TargetID} / Type : {sub.Type}" );
|
|
|
- sql.SubCmdDAL.Clean();
|
|
|
- var cmd = sql.CommandDAL.GetById( sub.CmdID );
|
|
|
+ this.refObjects.Sqlite.SubCmdDAL.Clean();
|
|
|
+ var cmd = this.refObjects.Sqlite.CommandDAL.GetById( sub.CmdID );
|
|
|
if ( cmd != null )
|
|
|
{
|
|
|
cmd.State = eCommandState.Complete;
|
|
|
- sql.CommandDAL.Update( cmd );
|
|
|
+ this.refObjects.Sqlite.CommandDAL.Update( cmd );
|
|
|
}
|
|
|
|
|
|
TimerUtils.Once( 1000, this.OnUnloadComplete );
|
|
|
@@ -1200,14 +1200,14 @@ namespace VehicleControlSystem.ControlLayer
|
|
|
if ( result != ConstInt.EXECUTE_SUCCESS )
|
|
|
this.OccurVehicleAlarm( result );
|
|
|
|
|
|
- sql.SubCmdDAL.Clean();
|
|
|
+ this.refObjects.Sqlite.SubCmdDAL.Clean();
|
|
|
|
|
|
- var cmd = sql.CommandDAL.GetById( subCmd.CmdID );
|
|
|
+ var cmd = this.refObjects.Sqlite.CommandDAL.GetById( subCmd.CmdID );
|
|
|
if ( cmd == null )
|
|
|
return;
|
|
|
|
|
|
cmd.State = eCommandState.Complete;
|
|
|
- sql.CommandDAL.Update( cmd );
|
|
|
+ this.refObjects.Sqlite.CommandDAL.Update( cmd );
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
@@ -1218,7 +1218,7 @@ namespace VehicleControlSystem.ControlLayer
|
|
|
/// <returns></returns>
|
|
|
int PIOBatteryCharge( SubCmd sub )
|
|
|
{
|
|
|
- var route = sql.RouteDal.GetById( sub.TargetID );
|
|
|
+ var route = this.refObjects.Sqlite.RouteDal.GetById( sub.TargetID );
|
|
|
|
|
|
if ( !CorrectPosition( route, this.CurrentPosition ) )
|
|
|
{
|
|
|
@@ -1226,7 +1226,7 @@ namespace VehicleControlSystem.ControlLayer
|
|
|
return 0; //Alarm
|
|
|
}
|
|
|
|
|
|
- var pioTimeout = CastTo<int>.From<string>( sql.ConfigDal.GetById( ConstString.PIOTimeOut ).Value );
|
|
|
+ var pioTimeout = CastTo<int>.From<string>( this.refObjects.Sqlite.ConfigDal.GetById( ConstString.PIOTimeOut ).Value );
|
|
|
|
|
|
PIOClear();
|
|
|
loggerPIO.I( $"Start Charge PIO - [{sub.TargetID}]" );
|
|
|
@@ -1259,7 +1259,7 @@ namespace VehicleControlSystem.ControlLayer
|
|
|
if ( !this.refObjects.IO.IsOn( "IN_PIO_READY" ) || this.refObjects.IO.IsOn( "IN_PIO_RECEIVE_RUN" ) )
|
|
|
break;
|
|
|
|
|
|
- if ( null == sql.CommandDAL.GetById( this.CurrentSubCommand.CmdID ) )
|
|
|
+ if ( null == this.refObjects.Sqlite.CommandDAL.GetById( this.CurrentSubCommand.CmdID ) )
|
|
|
{
|
|
|
PIOClear();
|
|
|
logger.D( "[Wait Charging] - 메인 명령 사라짐" );
|
|
|
@@ -1328,7 +1328,7 @@ namespace VehicleControlSystem.ControlLayer
|
|
|
this.PIOSensorOn();
|
|
|
LockUtils.Wait( 500 );
|
|
|
|
|
|
- var pioTimeout = Convert.ToInt32( sql.ConfigDal.GetById( ConstString.PIOTimeOut ).Value );
|
|
|
+ var pioTimeout = Convert.ToInt32( this.refObjects.Sqlite.ConfigDal.GetById( ConstString.PIOTimeOut ).Value );
|
|
|
|
|
|
PIOClear();
|
|
|
loggerPIO.I( $"Start Battery Charge PIO" );
|
|
|
@@ -1396,7 +1396,7 @@ namespace VehicleControlSystem.ControlLayer
|
|
|
#else
|
|
|
loggerPIO.I( $"Stop Battery Charge PIO" );
|
|
|
|
|
|
- var pioTimeout = Convert.ToInt32( sql.ConfigDal.GetById( ConstString.PIOTimeOut ).Value );
|
|
|
+ var pioTimeout = Convert.ToInt32( this.refObjects.Sqlite.ConfigDal.GetById( ConstString.PIOTimeOut ).Value );
|
|
|
|
|
|
this.PIOClear();
|
|
|
|
|
|
@@ -1547,7 +1547,7 @@ namespace VehicleControlSystem.ControlLayer
|
|
|
LockUtils.Wait( 500 );
|
|
|
|
|
|
int result = 0;
|
|
|
- var pioTimeout = Convert.ToInt32( sql.ConfigDal.GetById( ConstString.PIOTimeOut ).Value );
|
|
|
+ var pioTimeout = Convert.ToInt32( this.refObjects.Sqlite.ConfigDal.GetById( ConstString.PIOTimeOut ).Value );
|
|
|
|
|
|
result = this.refObjects.Clamp.Unlock_Sync();
|
|
|
if ( result != 0 )
|
|
|
@@ -1719,7 +1719,7 @@ namespace VehicleControlSystem.ControlLayer
|
|
|
|
|
|
int result = 0;
|
|
|
|
|
|
- var pioTimeout = Convert.ToInt32( sql.ConfigDal.GetById( ConstString.PIOTimeOut ).Value );
|
|
|
+ var pioTimeout = Convert.ToInt32( this.refObjects.Sqlite.ConfigDal.GetById( ConstString.PIOTimeOut ).Value );
|
|
|
|
|
|
if ( this.refObjects.Conveyor.IsInverterError() )
|
|
|
return 16;
|
|
|
@@ -2017,7 +2017,7 @@ namespace VehicleControlSystem.ControlLayer
|
|
|
hisAlarm.Solution = alarm.Solution;
|
|
|
|
|
|
var clone = ObjectCopyUtils.DeepClone<Alarm>( alarm );
|
|
|
- sql.HisAlarmDAL.Insert( hisAlarm );
|
|
|
+ this.refObjects.Sqlite.HisAlarmDAL.Insert( hisAlarm );
|
|
|
|
|
|
return;
|
|
|
}
|
|
|
@@ -2027,7 +2027,7 @@ namespace VehicleControlSystem.ControlLayer
|
|
|
this.VehicleStateProperty = eVehicleState.Abnormal;
|
|
|
this.ConveyorOff();
|
|
|
|
|
|
- this.autoManager.ProcessAlarm( alarmID );
|
|
|
+ this.refObjects.AutoManager.ProcessAlarm( alarmID );
|
|
|
}
|
|
|
|
|
|
public void SetObstaclePattern( ObstacleControlEventArgs.eControlKind state, int value )
|
|
|
@@ -2097,19 +2097,6 @@ namespace VehicleControlSystem.ControlLayer
|
|
|
|
|
|
case eDataKind.SOC:
|
|
|
this.BatteryStateOfCharge = (double)obj.Value;
|
|
|
- //if ( this.BatteryStateOfCharge >= 78 )
|
|
|
- //{
|
|
|
- // if ( this.autoManager.AutoModeStateProperty != eAutoModeState.Run )
|
|
|
- // return;
|
|
|
-
|
|
|
- // if ( this.VehicleStateProperty == eVehicleState.Charge || this.CheckBatteryCharge() || this.BatteryChargeState )
|
|
|
- // {
|
|
|
- // int result = ConstInt.EXECUTE_SUCCESS;
|
|
|
- // result = this.StopBatteryCharge();
|
|
|
- // if ( result != ConstInt.EXECUTE_SUCCESS )
|
|
|
- // this.OccurVehicleAlarm( result );
|
|
|
- // }
|
|
|
- //}
|
|
|
break;
|
|
|
|
|
|
case eDataKind.SOH:
|