|
|
@@ -1,5 +1,6 @@
|
|
|
using GSG.NET.Extensions;
|
|
|
using OHV.Common.Events;
|
|
|
+using OHV.Common.Model;
|
|
|
using OHV.Common.Shareds;
|
|
|
using Prism.Commands;
|
|
|
using Prism.Events;
|
|
|
@@ -11,6 +12,10 @@ using System.Linq;
|
|
|
using System.Text;
|
|
|
using System.Threading.Tasks;
|
|
|
using System.Windows.Input;
|
|
|
+<<<<<<< HEAD
|
|
|
+=======
|
|
|
+using System.Windows.Media;
|
|
|
+>>>>>>> eef332823de9e5e1c309ffa9e4d055ac4e281980
|
|
|
using VehicleControlSystem;
|
|
|
using VehicleControlSystem.ControlLayer.IO;
|
|
|
using static OHV.Common.Events.AxisControlEventArgs;
|
|
|
@@ -36,6 +41,68 @@ namespace OHV.Module.Interactivity.PopUp
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ #region Brushes
|
|
|
+ private Brush _cvError = Brushes.Gray;
|
|
|
+ public Brush CvError { get { return _cvError; } set { SetProperty( ref _cvError , value ); } }
|
|
|
+
|
|
|
+ private Brush _cvStop = Brushes.Gray;
|
|
|
+ public Brush CvStop { get { return _cvStop; } set { SetProperty( ref _cvStop , value ); } }
|
|
|
+
|
|
|
+ private Brush _cvSlowStop = Brushes.Gray;
|
|
|
+ public Brush CvSlowStop { get { return _cvSlowStop; } set { SetProperty( ref _cvSlowStop , value ); } }
|
|
|
+
|
|
|
+ private Brush _cvEntryIn = Brushes.Gray;
|
|
|
+ public Brush CvEntryIn { get { return _cvEntryIn; } set { SetProperty( ref _cvEntryIn , value ); } }
|
|
|
+ private Brush _cvRun = Brushes.Gray;
|
|
|
+ public Brush CvRun { get { return _cvRun; } set { SetProperty( ref _cvRun , value ); } }
|
|
|
+
|
|
|
+ private Brush _cvCW = Brushes.Gray;
|
|
|
+ public Brush CvCW { get { return _cvCW; } set { SetProperty( ref _cvCW , value ); } }
|
|
|
+
|
|
|
+ private Brush _cvCCW = Brushes.Gray;
|
|
|
+ public Brush CvCCW { get { return _cvCCW; } set { SetProperty( ref _cvCCW , value ); } }
|
|
|
+
|
|
|
+ private Brush _axisLeftIsOrg = Brushes.Red;
|
|
|
+ private Brush _axisLeftAmpFault = Brushes.Gray;
|
|
|
+
|
|
|
+ private Brush _axisRightIsOrg = Brushes.Red;
|
|
|
+ private Brush _axisRightAmpFault = Brushes.Gray;
|
|
|
+
|
|
|
+ public Brush AxisLeftIsOrg
|
|
|
+ {
|
|
|
+ get { return _axisLeftIsOrg; }
|
|
|
+ set
|
|
|
+ {
|
|
|
+ SetProperty( ref _axisLeftIsOrg , value );
|
|
|
+ }
|
|
|
+ }
|
|
|
+ public Brush AxisLeftAmpFault
|
|
|
+ {
|
|
|
+ get { return _axisLeftAmpFault; }
|
|
|
+ set
|
|
|
+ {
|
|
|
+ SetProperty( ref _axisLeftAmpFault , value );
|
|
|
+ }
|
|
|
+ }
|
|
|
+ public Brush AxisRightIsOrg
|
|
|
+ {
|
|
|
+ get { return _axisRightIsOrg; }
|
|
|
+ set
|
|
|
+ {
|
|
|
+ SetProperty( ref _axisRightIsOrg , value );
|
|
|
+ }
|
|
|
+ }
|
|
|
+ public Brush AxisRightAmpFault
|
|
|
+ {
|
|
|
+ get { return _axisRightAmpFault; }
|
|
|
+ set
|
|
|
+ {
|
|
|
+ SetProperty( ref _axisRightAmpFault , value );
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ #endregion
|
|
|
+
|
|
|
public ICommand ConveyorRunCommand { get; set; }
|
|
|
public ICommand PosMoveCommand { get; set; }
|
|
|
|
|
|
@@ -44,17 +111,25 @@ namespace OHV.Module.Interactivity.PopUp
|
|
|
|
|
|
List<BitBlock> allIOList = new List<BitBlock>();
|
|
|
|
|
|
+<<<<<<< HEAD
|
|
|
EzIO iO = null;
|
|
|
|
|
|
public ConveyorControlViewModel( IEventAggregator _ea , MessageController _msg, VCSystem vcSystem)
|
|
|
+=======
|
|
|
+ VCSystem VCSystem;
|
|
|
+ EzIO IO = null;
|
|
|
+
|
|
|
+ public ConveyorControlViewModel( IEventAggregator _ea , MessageController _msg, VCSystem _vcSystem)
|
|
|
+>>>>>>> eef332823de9e5e1c309ffa9e4d055ac4e281980
|
|
|
{
|
|
|
this.iO = vcSystem.IO as EzIO;
|
|
|
this.iO.OnChangedIO += IO_OnChangedIO;
|
|
|
this.eventAggregator = _ea;
|
|
|
|
|
|
- /*IO Publish Event*/
|
|
|
- //this.eventAggregator.GetEvent<IOControlPubSubEvent>().Unsubscribe( UICallbackCommunivation );
|
|
|
- //this.eventAggregator.GetEvent<IOControlPubSubEvent>().Subscribe( UICallbackCommunivation , ThreadOption.UIThread );
|
|
|
+ this.VCSystem = _vcSystem;
|
|
|
+ this.IO = VCSystem.IO as EzIO;
|
|
|
+ this.IO.OnChangedIO += IO_OnChangedIO;
|
|
|
+ this.GetSensorState(this.IO);
|
|
|
|
|
|
/*Lock&UnLock Publish Event*/
|
|
|
this.eventAggregator.GetEvent<AxisControlPubSubEvent>().Unsubscribe( AxisUICallbackCommunication );
|
|
|
@@ -70,14 +145,83 @@ namespace OHV.Module.Interactivity.PopUp
|
|
|
this.PosMoveCommand = new DelegateCommand<object>( ExecutePosMoveCommand );
|
|
|
}
|
|
|
|
|
|
+<<<<<<< HEAD
|
|
|
private void IO_OnChangedIO( BitBlock bit )
|
|
|
{
|
|
|
throw new NotImplementedException();
|
|
|
+=======
|
|
|
+ private void GetSensorState( EzIO _iO )
|
|
|
+ {
|
|
|
+ //IO_OnChangedIO 중복됨 어쩌지
|
|
|
+ if ( _iO.IsOn( "IN_CV_ERROR" ) )
|
|
|
+ this.CvError = Brushes.LimeGreen;
|
|
|
+
|
|
|
+ if(_iO.IsOn( "IN_CV_DETECT_00" ) )
|
|
|
+ this.CvEntryIn = Brushes.LimeGreen;
|
|
|
+
|
|
|
+ if ( _iO.IsOn( "IN_CV_DETECT_01" ) )
|
|
|
+ this.CvSlowStop = Brushes.LimeGreen;
|
|
|
+
|
|
|
+ if ( _iO.IsOn( "IN_CV_DETECT_02" ) )
|
|
|
+ this.CvStop = Brushes.LimeGreen;
|
|
|
+
|
|
|
+ if ( _iO.IsOn( "OUT_CV_RUN" , false ) )
|
|
|
+ this.CvRun = Brushes.LimeGreen;
|
|
|
+
|
|
|
+ if(_iO.IsOn( "OUT_CV_CWCCW", false ) )
|
|
|
+ {
|
|
|
+ this.CvCW = Brushes.LimeGreen;
|
|
|
+ this.CvCCW = Brushes.Gray;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ this.CvCW = Brushes.Gray;
|
|
|
+ this.CvCCW = Brushes.LimeGreen;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void IO_OnChangedIO( BitBlock bit )
|
|
|
+ {
|
|
|
+ if ( bit.Tag.Equals( "IN_CV_ERROR" ) )
|
|
|
+ this.CvError = Brushes.LimeGreen;
|
|
|
+ else
|
|
|
+ this.CvError = Brushes.Gray;
|
|
|
+
|
|
|
+ if ( bit.Tag.Equals( "IN_CV_DETECT_00" ) )
|
|
|
+ this.CvEntryIn = Brushes.LimeGreen;
|
|
|
+ else
|
|
|
+ this.CvEntryIn = Brushes.Gray;
|
|
|
+
|
|
|
+ if ( bit.Tag.Equals( "IN_CV_DETECT_01" ) )
|
|
|
+ this.CvSlowStop = Brushes.LimeGreen;
|
|
|
+ else
|
|
|
+ this.CvSlowStop = Brushes.Gray;
|
|
|
+
|
|
|
+ if ( bit.Tag.Equals( "IN_CV_DETECT_02" ) )
|
|
|
+ this.CvStop = Brushes.LimeGreen;
|
|
|
+ else
|
|
|
+ this.CvStop = Brushes.Gray;
|
|
|
+
|
|
|
+ if ( bit.Tag.Equals( "OUT_CV_CWCCW" ) )
|
|
|
+ {
|
|
|
+ this.CvCW = Brushes.LimeGreen;
|
|
|
+ this.CvCCW = Brushes.Gray;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ this.CvCW = Brushes.Gray;
|
|
|
+ this.CvCCW = Brushes.LimeGreen;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void RspIOState( VCSMessageEventArgs args )
|
|
|
+ {
|
|
|
+ //var ioAll = args.Args as EzIO;
|
|
|
+>>>>>>> eef332823de9e5e1c309ffa9e4d055ac4e281980
|
|
|
}
|
|
|
|
|
|
private void UICallbackCommunication( GUIMessageEventArgs _args )
|
|
|
{
|
|
|
- //TODO:[20/03/20 ys-hwang] Conveyor 에서 Vehicle 상태를 쓸 항목이 있으런지? 쓴다면 State만??
|
|
|
if( _args.Kind == GUIMessageEventArgs.eGUIMessageKind.ModelPropertyChange)
|
|
|
{
|
|
|
if( _args.MessageKey.Equals(MessageKey.Vehicle))
|
|
|
@@ -93,30 +237,6 @@ namespace OHV.Module.Interactivity.PopUp
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- switch ( _args.Kind )
|
|
|
- {
|
|
|
- case GUIMessageEventArgs.eGUIMessageKind.ModelPropertyChange:
|
|
|
- break;
|
|
|
- case GUIMessageEventArgs.eGUIMessageKind.RspIOObject:
|
|
|
- break;
|
|
|
- case GUIMessageEventArgs.eGUIMessageKind.RspIOMapList:
|
|
|
- break;
|
|
|
- case GUIMessageEventArgs.eGUIMessageKind.RspCommandList:
|
|
|
- break;
|
|
|
- case GUIMessageEventArgs.eGUIMessageKind.RspAutoModeChange:
|
|
|
- break;
|
|
|
- case GUIMessageEventArgs.eGUIMessageKind.RspManualModeChange:
|
|
|
- break;
|
|
|
- case GUIMessageEventArgs.eGUIMessageKind.RspAlarmReset:
|
|
|
- break;
|
|
|
- case GUIMessageEventArgs.eGUIMessageKind.RspVehicleModeChange:
|
|
|
- break;
|
|
|
- case GUIMessageEventArgs.eGUIMessageKind.RspEStop:
|
|
|
- break;
|
|
|
- case GUIMessageEventArgs.eGUIMessageKind.RspVihicleState:
|
|
|
- break;
|
|
|
- }
|
|
|
}
|
|
|
|
|
|
private void ChangeObstacleState( eObstacleState _reply )
|
|
|
@@ -135,7 +255,7 @@ namespace OHV.Module.Interactivity.PopUp
|
|
|
var msg = new AxisControlEventArgs
|
|
|
{
|
|
|
Dir = AxisControlEventArgs.eEventDir.ToBack ,
|
|
|
- Kind = AxisControlEventArgs.eAxisControlKind.Move ,
|
|
|
+ Kind = AxisControlEventArgs.eAxisControlKind.SyncMove ,
|
|
|
};
|
|
|
|
|
|
switch ( selectedPos )
|
|
|
@@ -173,8 +293,7 @@ namespace OHV.Module.Interactivity.PopUp
|
|
|
case AxisControlEventArgs.eAxisControlKind.EStop:
|
|
|
break;
|
|
|
case AxisControlEventArgs.eAxisControlKind.Move:
|
|
|
- //Sync Move Success Return
|
|
|
-
|
|
|
+ ResponseMove( _args );
|
|
|
break;
|
|
|
case AxisControlEventArgs.eAxisControlKind.Jog:
|
|
|
break;
|
|
|
@@ -191,74 +310,93 @@ namespace OHV.Module.Interactivity.PopUp
|
|
|
case AxisControlEventArgs.eAxisControlKind.AxisState:
|
|
|
AxisState( _args );
|
|
|
break;
|
|
|
+ case eAxisControlKind.SyncMove:
|
|
|
+ if ( _args.Result.IsSuccess )
|
|
|
+ this.messageController.ShowNotificationView( "Success" );
|
|
|
+ else
|
|
|
+ this.messageController.ShowNotificationView( "Fail" );
|
|
|
+ break;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private void AxisState( AxisControlEventArgs args )
|
|
|
+ private void ResponseMove( AxisControlEventArgs _args )
|
|
|
{
|
|
|
- var left = args.Args[ "Left" ] as AxisState;
|
|
|
- var right = args.Args[ "Right" ] as AxisState;
|
|
|
+ var msg = string.Empty;
|
|
|
|
|
|
- //this.IsLeftServoOn = left.IsServoOn;
|
|
|
- //this.IsLeftServoOriginReturn = left.IsOriginReturn;
|
|
|
- //this.IsLeftServoFault = left.IsAmpFault;
|
|
|
- //this.CurrentLockLeft = left.CurrentPosition;
|
|
|
+ if ( _args.Result.IsSuccess )
|
|
|
+ msg = ( "Move Success" );
|
|
|
+ else
|
|
|
+ {
|
|
|
+ var error = _args.Result.Errors.FirstOrDefault();
|
|
|
+ var alarm = error.Metadata[ "Alarm" ] as Alarm;
|
|
|
+ msg = alarm.Name + " " + alarm.Text;
|
|
|
+ }
|
|
|
|
|
|
- //this.IsRightServoOn = right.IsServoOn;
|
|
|
- //this.IsRightServoOriginReturn = right.IsOriginReturn;
|
|
|
- //this.IsRightServoFault = right.IsAmpFault;
|
|
|
- //this.CurrentLockRight = right.CurrentPosition;
|
|
|
+ this.messageController.ShowNotificationView( msg );
|
|
|
}
|
|
|
|
|
|
- private void UICallbackCommunivation( IOControlEventArgs _args )
|
|
|
+ private void AxisState( AxisControlEventArgs args )
|
|
|
{
|
|
|
- if ( _args.EventDir == IOControlEventArgs.eEventDir.ToBack )
|
|
|
- {
|
|
|
- switch ( _args.ControlKind )
|
|
|
- {
|
|
|
- case IOControlEventArgs.eControlKind.USE:
|
|
|
- break;
|
|
|
- case IOControlEventArgs.eControlKind.ON:
|
|
|
- break;
|
|
|
- case IOControlEventArgs.eControlKind.OFF:
|
|
|
- break;
|
|
|
- case IOControlEventArgs.eControlKind.STATE:
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
+ var left = args.Args[ "Left" ] as AxisState;
|
|
|
+ var right = args.Args[ "Right" ] as AxisState;
|
|
|
+
|
|
|
+ if ( left.IsOriginReturn )
|
|
|
+ this.AxisLeftIsOrg = Brushes.LimeGreen;
|
|
|
+ else
|
|
|
+ this.AxisLeftIsOrg = Brushes.Red;
|
|
|
+
|
|
|
+ if ( left.IsAmpFault )
|
|
|
+ this.AxisLeftAmpFault = Brushes.Red;
|
|
|
+ else
|
|
|
+ this.AxisLeftAmpFault = Brushes.Gray;
|
|
|
+
|
|
|
+ if ( right.IsOriginReturn )
|
|
|
+ this.AxisRightIsOrg = Brushes.LimeGreen;
|
|
|
+ else
|
|
|
+ this.AxisRightIsOrg = Brushes.Red;
|
|
|
+
|
|
|
+ if ( right.IsAmpFault )
|
|
|
+ this.AxisRightAmpFault = Brushes.Red;
|
|
|
+ else
|
|
|
+ this.AxisRightAmpFault = Brushes.Gray;
|
|
|
}
|
|
|
|
|
|
private void ExecuteCvCommand( object _obj )
|
|
|
{
|
|
|
var type = _obj.ToString();
|
|
|
- var order = string.Empty;
|
|
|
+ DriveControlEventArgs.eCvDir dir = DriveControlEventArgs.eCvDir.NONE;
|
|
|
|
|
|
- switch(type)
|
|
|
+ switch ( type )
|
|
|
{
|
|
|
case "CW":
|
|
|
- order = "OUT_CV_CWCCW";
|
|
|
+ dir = DriveControlEventArgs.eCvDir.CW;
|
|
|
break;
|
|
|
case "CCW":
|
|
|
- order = "OUT_CV_CWCCW";
|
|
|
+ dir = DriveControlEventArgs.eCvDir.CCW;
|
|
|
break;
|
|
|
case "STOP":
|
|
|
- order = "STOP";
|
|
|
+ dir = DriveControlEventArgs.eCvDir.STOP;
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
- var msg = new IOControlEventArgs
|
|
|
+ var msg = new DriveControlEventArgs
|
|
|
{
|
|
|
- EventDir = IOControlEventArgs.eEventDir.ToBack,
|
|
|
- OutPutTag = order.ToString()
|
|
|
+ EventDir = DriveControlEventArgs.eEventDir.ToBack ,
|
|
|
+ ControlKind = DriveControlEventArgs.eControlKind.Conveyor ,
|
|
|
+ CvDir = dir
|
|
|
};
|
|
|
-
|
|
|
this.PublishEvent( msg );
|
|
|
}
|
|
|
|
|
|
- private void PublishEvent( IOControlEventArgs _args )
|
|
|
+ private void PublishEvent( DriveControlEventArgs _args )
|
|
|
+ {
|
|
|
+ this.eventAggregator.GetEvent<DriveControlPubSubEvent>().Publish( _args );
|
|
|
+ }
|
|
|
+
|
|
|
+ private void IOPublish( VCSMessageEventArgs _args )
|
|
|
{
|
|
|
- this.eventAggregator.GetEvent<IOControlPubSubEvent>().Publish( _args );
|
|
|
+ this.eventAggregator.GetEvent<VCSMessagePubSubEvent>().Publish( _args );
|
|
|
}
|
|
|
|
|
|
#region Dialog
|
|
|
@@ -269,42 +407,37 @@ namespace OHV.Module.Interactivity.PopUp
|
|
|
|
|
|
public void OnDialogClosed( )
|
|
|
{
|
|
|
- this.eventAggregator.GetEvent<IOControlPubSubEvent>().Publish( new IOControlEventArgs { EventDir = IOControlEventArgs.eEventDir.ToBack } );
|
|
|
- this.eventAggregator.GetEvent<IOControlPubSubEvent>().Unsubscribe( UICallbackCommunivation );
|
|
|
-
|
|
|
- //TODO:[03-14 ys-hwang] - Closed 해제 처리해줄때 Kind == OriginReturn 값이 들어와버림 그래서 NONE 생성
|
|
|
this.eventAggregator.GetEvent<AxisControlPubSubEvent>().Publish( new AxisControlEventArgs
|
|
|
{
|
|
|
Dir = AxisControlEventArgs.eEventDir.ToBack,
|
|
|
Kind = AxisControlEventArgs.eAxisControlKind.NONE
|
|
|
} );
|
|
|
this.eventAggregator.GetEvent<AxisControlPubSubEvent>().Unsubscribe( AxisUICallbackCommunication );
|
|
|
+
|
|
|
+ this.eventAggregator.GetEvent<DriveControlPubSubEvent>().Publish( new DriveControlEventArgs { EventDir = DriveControlEventArgs.eEventDir.ToBack , ControlKind = DriveControlEventArgs.eControlKind.ReqStopCurrentPos } );
|
|
|
+ //this.eventAggregator.GetEvent<DriveControlPubSubEvent>().Unsubscribe( DriveControlCallBack );
|
|
|
+
|
|
|
+ this.eventAggregator.GetEvent<GUIMessagePubSubEvent>().Unsubscribe( UICallbackCommunication );
|
|
|
}
|
|
|
|
|
|
public void OnDialogOpened( IDialogParameters parameters )
|
|
|
{
|
|
|
/*IO*/
|
|
|
- var ioMsg = new IOControlEventArgs
|
|
|
- {
|
|
|
- EventDir = IOControlEventArgs.eEventDir.ToBack ,
|
|
|
- ControlKind = IOControlEventArgs.eControlKind.STATE
|
|
|
- };
|
|
|
- this.PublishEvent( ioMsg );
|
|
|
-
|
|
|
- this.eventAggregator.GetEvent<IOControlPubSubEvent>().Publish( new IOControlEventArgs { EventDir = IOControlEventArgs.eEventDir.ToBack } );
|
|
|
+ var msg = new VCSMessageEventArgs() { Kind = VCSMessageEventArgs.eVCSMessageKind.ReqIOObject };
|
|
|
+ this.eventAggregator.GetEvent<VCSMessagePubSubEvent>().Publish( msg );
|
|
|
|
|
|
/*Lock Axis*/
|
|
|
- var axisMsg = new AxisControlEventArgs
|
|
|
- {
|
|
|
- Dir = AxisControlEventArgs.eEventDir.ToBack ,
|
|
|
- Kind = AxisControlEventArgs.eAxisControlKind.NONE
|
|
|
- };
|
|
|
-
|
|
|
- this.AxisPublishEvent(axisMsg);
|
|
|
-
|
|
|
- this.eventAggregator.GetEvent<AxisControlPubSubEvent>().Publish( new AxisControlEventArgs { Dir = AxisControlEventArgs.eEventDir.ToBack , Kind = AxisControlEventArgs.eAxisControlKind.NONE } );
|
|
|
+ //var axisMsg = new AxisControlEventArgs
|
|
|
+ //{
|
|
|
+ // Dir = AxisControlEventArgs.eEventDir.ToBack ,
|
|
|
+ // Kind = AxisControlEventArgs.eAxisControlKind.NONE
|
|
|
+ //};
|
|
|
+ //this.AxisPublishEvent(axisMsg);
|
|
|
+
|
|
|
+ this.eventAggregator.GetEvent<AxisControlPubSubEvent>().Publish( new AxisControlEventArgs { Dir = AxisControlEventArgs.eEventDir.ToBack , Kind = AxisControlEventArgs.eAxisControlKind.ReqCurrentPosition } );
|
|
|
}
|
|
|
|
|
|
+
|
|
|
private void CloseDialog( string parameter )
|
|
|
{
|
|
|
ButtonResult result = ButtonResult.None;
|