فهرست منبع

Auto/Manual Mode Change Message Add

unque781 6 سال پیش
والد
کامیت
95719838e4

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

@@ -23,6 +23,7 @@ namespace OHV.Common.Events
             RspAutoModeChange,
             RspManualModeChange,
             RspAlarmReset,
+            RspVehicleModeChange,
         }
 
         public eGUIMessageKind Kind { get; set; }
@@ -55,10 +56,11 @@ namespace OHV.Common.Events
             ReqAutoModeChange,
             ReqManualModeChange,
             ReqAlarmReset,
+            ReqVehicleModeChange,
         }
 
         public eVCSMessageKind Kind { get; set; }
-        public int MessageKey { get; set; }
+        public string MessageKey { get; set; }
         public string MessageText { get; set; }
         public Command Command { get; set; }
         public Dictionary<string, object> Args { get; set; }

+ 2 - 0
Dev/OHV/OHV.Common/Shareds/ConstString.cs

@@ -29,5 +29,7 @@ namespace OHV.Common.Shareds
     public class MessageKey
     {
         public const string Alarm = "Alarm";
+        public const string AutoMode = "AutoMode";
+        public const string ManualMode = "ManualMode";
     }
 }

+ 1 - 0
Dev/OHV/OHV.Vehicle/Concept/D_MainWindow.xaml.cs

@@ -51,6 +51,7 @@ namespace OHV.Vehicle.Concept
         {
             //throw new NotImplementedException();
             WindowExternal.MaximizeToFirstMonitor(this);
+            this.Activate();
 
             App.splashScreen.AddMessage("Done !");
             App.splashScreen.LoadComplete();

+ 41 - 11
Dev/OHV/OHV.Vehicle/Concept/D_MainWindowViewModel.cs

@@ -259,11 +259,10 @@ namespace OHV.Vehicle.Concept
                 {
                     var msg = new VCSMessageEventArgs
                     {
-                        Kind = VCSMessageEventArgs.eVCSMessageKind.ReqManualModeChange,
+                        Kind = VCSMessageEventArgs.eVCSMessageKind.ReqVehicleModeChange,
+                        MessageKey = MessageKey.ManualMode,
                     };
 
-                    this.StartEnable = true;
-                    this.StopEnable = false;
                     vcsMessagePublisher.Publish(msg);
                 }
             });
@@ -277,10 +276,9 @@ namespace OHV.Vehicle.Concept
                 {
                     var msg = new VCSMessageEventArgs
                     {
-                        Kind = VCSMessageEventArgs.eVCSMessageKind.ReqAutoModeChange,
+                        Kind = VCSMessageEventArgs.eVCSMessageKind.ReqVehicleModeChange,
+                        MessageKey = MessageKey.AutoMode,
                     };
-                    this.StartEnable = false;
-                    this.StopEnable = true;
                     vcsMessagePublisher.Publish(msg);
                 }
             });
@@ -317,6 +315,20 @@ namespace OHV.Vehicle.Concept
                 regionManager.RequestNavigate("MainView", selectItem);
         }
 
+        void VehicleModeChang(bool isAutoMode)
+        {
+            if (isAutoMode)
+            {
+                this.StartEnable = false;
+                this.StopEnable = true;
+            }
+            else
+            {
+                this.StartEnable = true;
+                this.StopEnable = false;
+            }
+        }
+
         private void UICallbackCommunication(GUIMessageEventArgs obj)
         {
             switch (obj.Kind)
@@ -334,11 +346,29 @@ namespace OHV.Vehicle.Concept
                     break;
                 case GUIMessageEventArgs.eGUIMessageKind.RspManualModeChange:
                     break;
+                case GUIMessageEventArgs.eGUIMessageKind.RspAlarmReset:
+                    break;
+                case GUIMessageEventArgs.eGUIMessageKind.RspVehicleModeChange:
+                    this.RspVehicleModeChange(obj);
+                    break;
                 default:
                     break;
             }
         }
 
+        private void RspVehicleModeChange(GUIMessageEventArgs obj)
+        {
+            if ( obj.Result.IsSuccess)
+            {
+                if (obj.MessageKey.Equals(MessageKey.AutoMode)) { this.VehicleModeChang(true); }
+                if (obj.MessageKey.Equals(MessageKey.ManualMode)) { this.VehicleModeChang(false); }
+            }
+            else
+            {
+
+            }
+        }
+
         void UICallBackModelPropertyChange(GUIMessageEventArgs args)
         {
             if (args.MessageKey.Equals(MessageKey.Alarm))
@@ -350,12 +380,12 @@ namespace OHV.Vehicle.Concept
 
         private void ExecuteTextCommand()
         {
-            var m = new VCSMessageEventArgs();
-            m.MessageKey = 1234;
-            m.MessageText = "Test Message";
-            m.Command = new Common.Model.Command() { CommandID = "TestCommand123", Type = Common.Shareds.eCommandType.Move };
+            //var m = new VCSMessageEventArgs();
+            //m.MessageKey = 1234;
+            //m.MessageText = "Test Message";
+            //m.Command = new Common.Model.Command() { CommandID = "TestCommand123", Type = Common.Shareds.eCommandType.Move };
 
-            this.eventAggregator.GetEvent<VCSMessagePubSubEvent>().Publish(m);
+            //this.eventAggregator.GetEvent<VCSMessagePubSubEvent>().Publish(m);
         }
 
 

+ 5 - 5
Dev/OHV/OHV.Vehicle/MainWindowViewModel.cs

@@ -145,12 +145,12 @@ namespace OHV.Vehicle
 
         private void ExecuteTextCommand()
         {
-            var m = new VCSMessageEventArgs();
-            m.MessageKey = 1234;
-            m.MessageText = "Test Message";
-            m.Command = new Common.Model.Command() { CommandID = "TestCommand123", Type = Common.Shareds.eCommandType.Move };
+            //var m = new VCSMessageEventArgs();
+            //m.MessageKey = 1234;
+            //m.MessageText = "Test Message";
+            //m.Command = new Common.Model.Command() { CommandID = "TestCommand123", Type = Common.Shareds.eCommandType.Move };
 
-            this.eventAggregator.GetEvent<VCSMessagePubSubEvent>().Publish(m);
+            //this.eventAggregator.GetEvent<VCSMessagePubSubEvent>().Publish(m);
         }
 
 

+ 4 - 0
Dev/OHV/OHV.Vehicle/OHV.Vehicle.csproj

@@ -62,6 +62,10 @@
     <Reference Include="EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
       <HintPath>..\packages\EntityFramework.6.3.0\lib\net45\EntityFramework.SqlServer.dll</HintPath>
     </Reference>
+    <Reference Include="FluentResults, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\Assambly\FluentResults.dll</HintPath>
+    </Reference>
     <Reference Include="GSG.NET">
       <HintPath>..\Assambly\GSG.NET.dll</HintPath>
     </Reference>

+ 6 - 2
Dev/OHV/VehicleControlSystem/ControlLayer/IO/EzIO.cs

@@ -432,6 +432,7 @@ namespace VehicleControlSystem.ControlLayer.IO
                     logger.E($"Exception [EzIO IORead Thread] - {ex.StackTrace}");
                 }
             }
+            logger.D("[EzIO] - Dispose");
         }
 
         void ReadBoardIO()
@@ -545,7 +546,7 @@ namespace VehicleControlSystem.ControlLayer.IO
 
         void PullQueueThread()
         {
-            for (; ; )
+            while(IsThreadAlive)
             {
                 try
                 {
@@ -564,12 +565,15 @@ namespace VehicleControlSystem.ControlLayer.IO
                     else
                         Assert.Fail("Unk Object {0}", o);
                 }
-                catch (ThreadAbortException) { }
+                catch (ThreadAbortException) 
+                {
+                }
                 catch (Exception e)
                 {
                     logger.E(e);
                 }
             }
+            logger.D("[EzIO] - PullQueue Thread Dispose");
         }
         #endregion
 

+ 1 - 0
Dev/OHV/VehicleControlSystem/Managers/AutoManager.cs

@@ -189,6 +189,7 @@ namespace VehicleControlSystem.Managers
                     logger.E($"{GetType().Name} - Thread Exception : {ex.StackTrace}");
                 }
             }
+            logger.D("[AutoManager] - Work Thread Dispose");
         }
 
 

+ 1 - 0
Dev/OHV/VehicleControlSystem/Managers/Scheduler.cs

@@ -135,6 +135,7 @@ namespace VehicleControlSystem.Managers
                     logger.E( ex );
                 }
             }
+            logger.D("[Scheduler] - Command Thread Dispose");
         }
 
         private void DoWork( Command cmd )

+ 34 - 2
Dev/OHV/VehicleControlSystem/VCSystem.cs

@@ -9,6 +9,7 @@ using GSG.NET.ObjectBase;
 using GSG.NET.Quartz;
 using OHV.Common.Events;
 using OHV.Common.Model;
+using OHV.Common.Shareds;
 using OHV.SqliteDAL;
 using Prism.Events;
 using Prism.Ioc;
@@ -101,16 +102,47 @@ namespace VehicleControlSystem
                 case VCSMessageEventArgs.eVCSMessageKind.ReqCommandList:
                     break;
                 case VCSMessageEventArgs.eVCSMessageKind.ReqAutoModeChange:
-                    RspAutoModeChange(true);
                     break;
                 case VCSMessageEventArgs.eVCSMessageKind.ReqManualModeChange:
-                    RspAutoModeChange(false);
+                    break;
+                case VCSMessageEventArgs.eVCSMessageKind.ModelPropertyChange:
+                    break;
+                case VCSMessageEventArgs.eVCSMessageKind.ReqAlarmReset:
+                    break;
+                case VCSMessageEventArgs.eVCSMessageKind.ReqVehicleModeChange:
+                    this.ReqVehicleModeChange(msg);
                     break;
                 default:
                     break;
             }
         }
 
+        private void ReqVehicleModeChange(VCSMessageEventArgs msg)
+        {
+            GUIMessageEventArgs reply;
+
+            if (msg.MessageKey.Equals(MessageKey.AutoMode))
+            {
+                int result = vehicle.InitializationVehicle();
+                if (result != 0)
+                {
+                    this.autoManager.ProcessAlarm(result); //Alarm 내용을 UI로 전달 해주니까 Reply 가 필요 없다.
+                    return;
+                }
+
+                this.autoManager.OperationModeProperty = OHV.Common.Shareds.eOperatationMode.AutoMode;
+                this.autoManager.AutoModeStateProperty = OHV.Common.Shareds.eAutoModeState.StartRun;
+                reply = new GUIMessageEventArgs { Kind = GUIMessageEventArgs.eGUIMessageKind.RspVehicleModeChange, Result = FluentResults.Results.Ok(), MessageKey = MessageKey.AutoMode };
+            }
+            else
+            {
+                this.autoManager.AutoModeStateProperty = OHV.Common.Shareds.eAutoModeState.WaitStop;
+                reply = new GUIMessageEventArgs { Kind = GUIMessageEventArgs.eGUIMessageKind.RspVehicleModeChange, Result = FluentResults.Results.Ok(), MessageKey = MessageKey.ManualMode };
+            }
+
+            GUIMessageEventPublish(reply);
+        }
+
         void RspIOObjectMessage()
         {
             var rspMsg = new GUIMessageEventArgs { Kind = GUIMessageEventArgs.eGUIMessageKind.RspIOObject, Args = this.IO };