yongsunghwang 5 rokov pred
rodič
commit
1cddff3560

+ 147 - 11
Dev/OHV/VehicleControlSystem/ControlLayer/MQ/ZmqManager.cs

@@ -197,6 +197,61 @@ namespace VehicleControlSystem.ControlLayer.MQ
             set { SetField(ref this.isCanStanbyLocation, value); }
         }
 
+        private double linearSpeed;
+
+        public double LinearSpeed
+        {
+            get { return linearSpeed; }
+            set { SetField(ref this.linearSpeed, value); }
+        }
+
+        private double curveSpeed;
+
+        public double CurveSpeed
+        {
+            get { return curveSpeed; }
+            set { SetField(ref this.curveSpeed, value); }
+        }
+
+        private double accelSpeed;
+
+        public double AccelSpeed
+        {
+            get { return accelSpeed; }
+            set { SetField(ref this.accelSpeed, value); }
+        }
+
+        private double decelSpeed;
+
+        public double DecelSpeed
+        {
+            get { return decelSpeed; }
+            set { SetField(ref this.decelSpeed, value); }
+        }
+
+        private double creepSpeed;
+
+        public double CreepSpeed
+        {
+            get { return creepSpeed; }
+            set { SetField(ref this.creepSpeed, value); }
+        }
+
+        private double creepDistance;
+
+        public double CreepDistance
+        {
+            get { return creepDistance; }
+            set { SetField(ref this.creepDistance, value); }
+        }
+
+        private double jogSpeed;
+
+        public double JogSPeed
+        {
+            get { return jogSpeed; }
+            set { SetField(ref this.jogSpeed, value); }
+        }
         #endregion
 
         public ZmqManager( BMUManager bMU, Steering steering )
@@ -225,9 +280,7 @@ namespace VehicleControlSystem.ControlLayer.MQ
             this.monitor = new NetMQMonitor( req, "inproc://rep.inproc", SocketEvents.Disconnected | SocketEvents.Connected );
             this.monitor.Connected += ( s, a ) =>
             {
-                this.IsReqConnected = true;
-                CurrentPointNo = GetCurrentPointNo();
-                SetCurrentSteeringState( this.steering.GetSteeringState() );
+                this.SynchronizedParmeter();
             };
 
             this.monitor.Disconnected += ( s, a ) => { this.IsReqConnected = false; };
@@ -243,6 +296,22 @@ namespace VehicleControlSystem.ControlLayer.MQ
             this.bMUManager.OnChangedReceivedData += BMUManager_OnChangedReceivedData;
         }
 
+        private void SynchronizedParmeter()
+        {
+            this.IsReqConnected = true;
+
+            CurrentPointNo = GetCurrentPointNo();
+            SetCurrentSteeringState(this.steering.GetSteeringState());
+
+            this.LinearSpeed = this.GetDriveLinerSpeed();
+            this.CurveSpeed = this.GetDriveCurveSpeed();
+            this.JogSPeed = this.GetJogSpeed();
+            this.AccelSpeed = this.GetAccelSpeed();
+            this.DecelSpeed = this.GetDecelSpeed();
+            this.CreepSpeed = this.GetCreepSpeed();
+            this.CreepDistance = this.GetCreepDistance();
+        }
+
         private void BMUManager_OnChangedReceivedData( Serial.DataModel.ReceivedData obj )
         {
             try
@@ -1008,19 +1077,21 @@ namespace VehicleControlSystem.ControlLayer.MQ
         /// 전진 후진 동시에 같은 값으로 설정.
         /// </summary>
         /// <param name="speed"></param>
-        internal void SetJogSpeed( double speed )
+        internal bool SetJogSpeed( double speed )
         {
             var rll = this.RequestDrive( "setm", $"4053/{speed}/{speed}" );
             if ( rll.Count == 0 )
             {
                 logger.E( $"[Set Drive Speed] - Drive Speed Time Out" );
-                return;
+                return false;
             }
 
             //if ( !this.SetRequest( "6105", "1" ) )
             //    logger.E( $"[Set Safety Bumper] - Bumper is Pushed Time Out" );
 
             logger.D( $"[Set Jog Speed] - Set Jog Speed {speed}" );
+
+            return true;
         }
 
         internal double GetDriveLinerSpeed()
@@ -1052,34 +1123,99 @@ namespace VehicleControlSystem.ControlLayer.MQ
             return ret;
         }
 
-        internal void SetDriveSpeed( string liner, string curve )
+        internal double GetAccelSpeed()
+        {
+            var rll = this.RequestDrive("getm", "9999");
+            if(rll.Count == 0)
+            {
+                logger.E($"[Get Accel Speed] - Accel Speed Time Out");
+                return 0d;
+            }
+
+            var ret = 0d;
+            double.TryParse(rll[1], out ret);
+
+            return ret;
+        }
+
+        internal double GetDecelSpeed()
+        {
+            var rll = this.RequestDrive("getm", "9999");
+            if (rll.Count == 0)
+            {
+                logger.E($"[Get Decel Speed] - Decel Speed Time Out");
+                return 0d;
+            }
+
+            var ret = 0d;
+            double.TryParse(rll[1], out ret);
+
+            return ret;
+        }
+
+        internal double GetCreepSpeed()
         {
-            var rll = this.RequestDrive( "setm", $"3016/{liner}/{curve}" );
+            var rll = this.RequestDrive("getm", "9999");
+            if (rll.Count == 0)
+            {
+                logger.E($"[Get Creep Speed] - Creep Speed Time Out");
+                return 0d;
+            }
+
+            var ret = 0d;
+            double.TryParse(rll[1], out ret);
+
+            return ret;
+        }
+
+        internal double GetCreepDistance()
+        {
+            var rll = this.RequestDrive("getm", "9999");
+            if (rll.Count == 0)
+            {
+                logger.E($"[Get Creep Distance] - Creep Distance Time Out");
+                return 0d;
+            }
+
+            var ret = 0d;
+            double.TryParse(rll[1], out ret);
+
+            return ret;
+        }
+
+        internal bool SetDriveSpeed( string linear, string curve )
+        {
+            var rll = this.RequestDrive("setm", $"3016/{linear}/{curve}");
+            
             if ( rll.Count == 0 )
             {
                 logger.E( $"[Set Drive Speed] - Drive Speed Time Out" );
-                return;
+                return false;
             }
 
             //if ( !this.SetRequest( "6105", "1" ) )
             //    logger.E( $"[Set Safety Bumper] - Bumper is Pushed Time Out" );
 
-            logger.D( $"[Set Drive Speed] - Set Drive Speed Liner{liner}, Curve{curve}" );
+            logger.D( $"[Set Drive Speed] - Set Drive Speed Liner{linear}, Curve{curve}" );
+
+            return true;
         }
 
-        internal void SetDriveSpeedProfile( string accel, string decel, string creep, string creepDistance )
+        internal bool SetDriveSpeedProfile( string accel, string decel, string creep, string creepDistance )
         {
             var rll = this.RequestDrive( "setm", $"3013/{accel}/{decel}/{creep}/{creepDistance}" );
             if ( rll.Count == 0 )
             {
                 logger.E( $"[Set Drive Speed] - Drive Speed Time Out" );
-                return;
+                return false;
             }
 
             //if ( !this.SetRequest( "6105", "1" ) )
             //    logger.E( $"[Set Safety Bumper] - Bumper is Pushed Time Out" );
 
             logger.D( $"[Set Drive Speed] - Set Drive Speed Accel {accel}, Decel {decel}, Creep{creep}/{creepDistance}" );
+
+            return true;
         }
 
 #endregion