DESKTOP-Kang hace 6 años
padre
commit
c46c4387a8

+ 2 - 1
Dev/OHV/OHV.Common/Events/MessageEventArgs.cs

@@ -178,6 +178,7 @@ namespace OHV.Common.Events
             DriveON,
             DriveOFF,
             JOG,
+            VehicleState,
 
         }
 
@@ -195,7 +196,7 @@ namespace OHV.Common.Events
 
         
         public double CurrentPosition { get; set; }
-        public string PositionTag { get; set; }
+        public int TargetRouteID { get; set; }
 
         public eJogMoveDir JogDir { get; set; }
         public eEventDir EventDir { get; set; }

+ 4 - 3
Dev/OHV/OHV.Common/Model/VehicleState.cs

@@ -9,8 +9,9 @@ namespace OHV.Common.Model
     public class VehicleState
     {
         public string VehicleID { get; set; }
-        public int CurrentTag { get; set; }
-        public double CurrentScale { get; set; }
-
+        public string CurrentTag { get; set; }
+        public double CurrentPosition { get; set; }
+        public double CurrentSpeed { get; set; }
+        public double CurrentTorque { get; set; }
     }
 }

+ 2 - 2
Dev/OHV/OHV.Module.Interactivity/PopUp/DriveServoView.xaml

@@ -196,8 +196,8 @@
                     <TextBlock><Run Text="{Binding DifferenceDrive, StringFormat=0.000, FallbackValue=0.000}"/></TextBlock>
                 </Button>
                     
-                <StackPanel Grid.Column="2" Grid.Row="1" Grid.ColumnSpan="3" Grid.RowSpan="3"  Orientation="Horizontal" HorizontalAlignment="Center" Margin="102,52,102,31" >
-                    <Button Margin="0,30" Width="150"
+                <StackPanel Grid.Column="2" Grid.Row="1" Grid.ColumnSpan="3" Grid.RowSpan="3"  Orientation="Horizontal" HorizontalAlignment="Center" Margin="82,52,43,31" Width="379"  >
+                    <Button Margin="20,30" Width="150"
                         HorizontalAlignment="Stretch" 
                         Height="Auto" 
                         BorderBrush="{Binding SteeringLeftBrushProperty}" 

+ 17 - 5
Dev/OHV/OHV.Module.Interactivity/PopUp/DriveServoViewModel.cs

@@ -182,6 +182,7 @@ namespace OHV.Module.Interactivity.PopUp
                         case "CurrentPosition":
                             {
                                 var v = CastTo<double>.From<object>(obj.Args);
+                                this.CurrentDrive = v;
                             }
                             break;
                         default:
@@ -231,12 +232,21 @@ namespace OHV.Module.Interactivity.PopUp
                         break;
                     case DriveControlEventArgs.eControlKind.JOG:
                         break;
+                    case DriveControlEventArgs.eControlKind.VehicleState:
+                        ResponseVehicleState(args);
+                        break;
                     default:
                         break;
                 }
             }
         }
 
+        private void ResponseVehicleState(DriveControlEventArgs args)
+        {
+            var state = CastTo<VehicleState>.From<object>(args.Args);
+            this.CurrentDrive = state.CurrentPosition;
+        }
+
         private void ResponseMove( DriveControlEventArgs args )
         {
             var msg = string.Empty;
@@ -446,15 +456,17 @@ namespace OHV.Module.Interactivity.PopUp
 
         private void ExecuteMoveToCommand()
         {
-            this.messageController.ShowConfirmationPopupView( "Move To Pos ?" , r =>
+            this.messageController.ShowConfirmationPopupView( "Move To Selected Position ?" , r =>
             {
                 if ( r.Result == ButtonResult.OK )
                 {
+                    var ll = this.RouteList.Where(x => x.IsSelected).FirstOrDefault();
+
                     var msg = new DriveControlEventArgs
                     {
-                        EventDir = DriveControlEventArgs.eEventDir.ToBack ,
-                        ControlKind = DriveControlEventArgs.eControlKind.MOVE ,
-                        //PositionTag = 
+                        EventDir = DriveControlEventArgs.eEventDir.ToBack,
+                        ControlKind = DriveControlEventArgs.eControlKind.MOVE,
+                        TargetRouteID = ll.Id,
                     };
 
                     this.PublishEvent( msg );
@@ -490,7 +502,7 @@ namespace OHV.Module.Interactivity.PopUp
             };
             this.PublishEvent(msg);
 
-            this.eventAggregator.GetEvent<DriveControlPubSubEvent>().Publish( new DriveControlEventArgs { EventDir = DriveControlEventArgs.eEventDir.ToBack , ControlKind = DriveControlEventArgs.eControlKind.ReqCurrentPos } );
+            this.eventAggregator.GetEvent<DriveControlPubSubEvent>().Publish( new DriveControlEventArgs { EventDir = DriveControlEventArgs.eEventDir.ToBack , ControlKind = DriveControlEventArgs.eControlKind.VehicleState } );
         }
 
         private void CloseDialog(string parameter)

+ 14 - 14
Dev/OHV/VehicleControlSystem/ControlLayer/Motion/GSIMotion.cs

@@ -21,10 +21,10 @@ namespace VehicleControlSystem.ControlLayer.Motion
         private string currentTag;
         public string CurrentTag { get { return currentTag; } set { SetField(ref this.currentTag, value); } }
 
-        private double currentSpeed;
+        private double currentSpeed = 0;
         public double CurrentSpeed { get { return currentSpeed; } set { SetField(ref this.currentSpeed, value); } }
 
-        private double currentTorque;
+        private double currentTorque = 0;
         public double CurrentTorque { get { return currentTorque; } set { SetField(ref this.currentTorque, value); } }
 
         public bool IsErrorOn { get; set; }
@@ -43,18 +43,18 @@ namespace VehicleControlSystem.ControlLayer.Motion
 
         public bool MoveToPoint(string point, double velocity)
         {
-            var task = Task.Factory.StartNew(() =>
-            {
-                int index = 0;
-                while (true)
-                {
-                    LockUtils.Wait(500);
-                    this.CurrentPos = index++;
-
-                    if (CurrentPos > 20)
-                        break;
-                }
-            });
+            //var task = Task.Factory.StartNew(() =>
+            //{
+            //    int index = 0;
+            //    while (true)
+            //    {
+            //        LockUtils.Wait(500);
+            //        this.CurrentPos = index++;
+
+            //        if (CurrentPos > 20)
+            //            break;
+            //    }
+            //});
 
             return true;
         }

+ 32 - 9
Dev/OHV/VehicleControlSystem/ControlLayer/Vehicle.cs

@@ -261,11 +261,11 @@ namespace VehicleControlSystem.ControlLayer
                         }
                         break;
                     case DriveControlEventArgs.eControlKind.ReqCurrentPos:
-                        this.ReqCurrentPos();
+                        //this.ReqCurrentPos();
                         break;
                     case DriveControlEventArgs.eControlKind.ReqStopCurrentPos:
-                        this.taskCancel.Cancel();
-                        this.taskCancel.WaitAll();
+                        //this.taskCancel.Cancel();
+                        //this.taskCancel.WaitAll();
                         break;
                     case DriveControlEventArgs.eControlKind.FaultReset:
                         this.ReqFaultReset(_args);
@@ -279,6 +279,9 @@ namespace VehicleControlSystem.ControlLayer
                     case DriveControlEventArgs.eControlKind.JOG:
                         this.ReqJog(_args);
                         break;
+                    case DriveControlEventArgs.eControlKind.VehicleState:
+                        ReqVehicleState(_args);
+                        break;
                     default:
                         break;
                 }
@@ -325,18 +328,38 @@ namespace VehicleControlSystem.ControlLayer
 
         #region Request Method
 
+        private void ReqVehicleState(DriveControlEventArgs args)
+        {
+            VehicleState state = new VehicleState();
+            state.CurrentPosition = this.CurrentPosition;
+            state.CurrentSpeed = this.CurrentSpeed;
+            state.CurrentTag = this.CurrentTag;
+            state.CurrentTorque = this.CurrentTorque;
+
+            var msg = new DriveControlEventArgs();
+            msg.ControlKind = args.ControlKind;
+            msg.Args = state;
+
+            DriveControlEventPublish(msg);
+        }
+
         private void ReqMoveToPos( DriveControlEventArgs args )
         {
-            var drive = 0;
             //var result = drive.Move( args.PositionTag );
+            var reply = new DriveControlEventArgs();
 
-            var msg = new DriveControlEventArgs
+            int targetTag = args.TargetRouteID;
+            var route = sql.RouteDal.GetK(targetTag);
+            if ( route == null)
             {
-                ControlKind = DriveControlEventArgs.eControlKind.FaultReset
-            };
+                reply.Result = Results.Fail("Not Found Route");
+                this.DriveControlEventPublish(reply);
+                return;
+            }
 
-            msg.Result = Results.Ok( "Position Move" );
-            this.DriveControlEventPublish( msg );
+            this.MoveTo(route.Name);
+            reply.Result = Results.Ok( "Position Move" );
+            this.DriveControlEventPublish(reply);
         }
 
         void ReqFaultReset(DriveControlEventArgs _args)

+ 1 - 1
Dev/OHV/VehicleControlSystem/VehicleControlSystem.csproj

@@ -18,7 +18,7 @@
     <DebugType>full</DebugType>
     <Optimize>false</Optimize>
     <OutputPath>bin\Debug\</OutputPath>
-    <DefineConstants>TRACE;DEBUG;SIMULATION</DefineConstants>
+    <DefineConstants>TRACE;DEBUG</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
   </PropertyGroup>