Browse Source

병합충돌
Merge branch 'master' of http://unque781.synology.me:3000/GSI/OHV

# Conflicts:
# Dev/OHV/OHV.Common/OHV.Common.csproj
# Dev/OHV/OHV.Module.Interactivity/PopUp/DriveServoViewModel.cs
# Dev/OHV/VehicleControlSystem/ControlLayer/Vehicle.cs

ys-hwang 6 years ago
parent
commit
21cd18454c

+ 1 - 1
Dev/OHV/OHV.Common/Model/VehicleState.cs

@@ -6,7 +6,7 @@ using System.Threading.Tasks;
 
 namespace OHV.Common.Model
 {
-    public class VehicleState
+    public class VehicleInfo
     {
         public string VehicleID { get; set; }
         public string CurrentTag { get; set; }

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

@@ -79,7 +79,11 @@
     <Compile Include="Model\SelectionItem.cs" />
     <Compile Include="Model\SelectionList.cs" />
     <Compile Include="Model\SubCmd.cs" />
+<<<<<<< HEAD
     <Compile Include="Model\VehicleState.cs" />
+=======
+    <Compile Include="Model\VehicleInfo.cs" />
+>>>>>>> 06cd50a7615cca64bd11a5a71d408533b013704d
     <Compile Include="Properties\AssemblyInfo.cs" />
     <Compile Include="Shareds\ConstString.cs" />
     <Compile Include="Shareds\SharedEnumType.cs" />

+ 106 - 0
Dev/OHV/OHV.Common/OHV.Common.csproj.orig

@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="..\packages\EntityFramework.6.4.0\build\EntityFramework.props" Condition="Exists('..\packages\EntityFramework.6.4.0\build\EntityFramework.props')" />
+  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProjectGuid>{0D1F7FBC-BFB0-4EE4-852D-E2A8D62C5708}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>OHV.Common</RootNamespace>
+    <AssemblyName>OHV.Common</AssemblyName>
+    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <Deterministic>true</Deterministic>
+    <NuGetPackageImportStamp>
+    </NuGetPackageImportStamp>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
+      <HintPath>..\packages\EntityFramework.6.4.0\lib\net45\EntityFramework.dll</HintPath>
+    </Reference>
+    <Reference Include="EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
+      <HintPath>..\packages\EntityFramework.6.4.0\lib\net45\EntityFramework.SqlServer.dll</HintPath>
+    </Reference>
+    <Reference Include="FluentResults">
+      <HintPath>..\Assambly\FluentResults.dll</HintPath>
+    </Reference>
+    <Reference Include="Prism, Version=7.2.0.1422, Culture=neutral, PublicKeyToken=40ee6c3a2184dc59, processorArchitecture=MSIL">
+      <HintPath>..\packages\Prism.Core.7.2.0.1422\lib\net45\Prism.dll</HintPath>
+    </Reference>
+    <Reference Include="SQLite.CodeFirst, Version=1.5.3.29, Culture=neutral, PublicKeyToken=eb96ba0a78d831a7, processorArchitecture=MSIL">
+      <HintPath>..\packages\SQLite.CodeFirst.1.5.3.29\lib\net45\SQLite.CodeFirst.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+    <Reference Include="System.ComponentModel.DataAnnotations" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
+      <HintPath>..\packages\System.ValueTuple.4.5.0\lib\netstandard1.0\System.ValueTuple.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Xml.Linq" />
+    <Reference Include="System.Data.DataSetExtensions" />
+    <Reference Include="Microsoft.CSharp" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Net.Http" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Events\MessageEventArgs.cs" />
+    <Compile Include="Events\PubSubEvent.cs" />
+    <Compile Include="Interfaces\IModelBase.cs" />
+    <Compile Include="Interfaces\ISqlManager.cs" />
+    <Compile Include="Interfaces\IVehicle.cs" />
+    <Compile Include="Model\Alarm.cs" />
+    <Compile Include="Model\AxisConfig.cs" />
+    <Compile Include="Model\AxisPositionData.cs" />
+    <Compile Include="Model\AxisVelocityData.cs" />
+    <Compile Include="Model\Command.cs" />
+    <Compile Include="Model\Config.cs" />
+    <Compile Include="Model\HisAlarm.cs" />
+    <Compile Include="Model\Route.cs" />
+    <Compile Include="Model\SelectionItem.cs" />
+    <Compile Include="Model\SelectionList.cs" />
+    <Compile Include="Model\SubCmd.cs" />
+<<<<<<< HEAD
+    <Compile Include="Model\VehicleState.cs" />
+=======
+    <Compile Include="Model\VehicleInfo.cs" />
+>>>>>>> 06cd50a7615cca64bd11a5a71d408533b013704d
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="Shareds\ConstString.cs" />
+    <Compile Include="Shareds\SharedEnumType.cs" />
+    <Compile Include="Shareds\RegionNames.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="App.config" />
+    <None Include="packages.config" />
+  </ItemGroup>
+  <ItemGroup />
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
+    <PropertyGroup>
+      <ErrorText>이 프로젝트는 이 컴퓨터에 없는 NuGet 패키지를 참조합니다. 해당 패키지를 다운로드하려면 NuGet 패키지 복원을 사용하십시오. 자세한 내용은 http://go.microsoft.com/fwlink/?LinkID=322105를 참조하십시오. 누락된 파일은 {0}입니다.</ErrorText>
+    </PropertyGroup>
+    <Error Condition="!Exists('..\packages\EntityFramework.6.4.0\build\EntityFramework.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\EntityFramework.6.4.0\build\EntityFramework.props'))" />
+    <Error Condition="!Exists('..\packages\EntityFramework.6.4.0\build\EntityFramework.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\EntityFramework.6.4.0\build\EntityFramework.targets'))" />
+  </Target>
+  <Import Project="..\packages\EntityFramework.6.4.0\build\EntityFramework.targets" Condition="Exists('..\packages\EntityFramework.6.4.0\build\EntityFramework.targets')" />
+</Project>

+ 4 - 0
Dev/OHV/OHV.Module.Interactivity/PopUp/DriveServoViewModel.cs

@@ -296,7 +296,11 @@ namespace OHV.Module.Interactivity.PopUp
 
         private void ResponseVehicleState(DriveControlEventArgs args)
         {
+<<<<<<< HEAD
             var state = CastTo<VehicleState>.From<object>( args.Args );
+=======
+            var state = CastTo<VehicleInfo>.From<object>(args.Args);
+>>>>>>> 06cd50a7615cca64bd11a5a71d408533b013704d
             this.CurrentDrive = state.CurrentPosition;
         }
 

+ 4 - 2
Dev/OHV/OHV.Vehicle/Concept/D_MainWindow.xaml

@@ -12,6 +12,8 @@
         Title="D_MainWindow" Height="1080" Width="1920"
         xmlns:OHVCommonShareds="clr-namespace:OHV.Common.Shareds;assembly=OHV.Common"
         Background="{x:Null}" WindowStartupLocation="CenterScreen"
+        xmlns:c ="clr-namespace:GSG.NET.WPF.CalcBinding;assembly=GSG.NET.WPF"
+        xmlns:media ="clr-namespace:System.Windows.Media;assembly=PresentationCore"
         >
 
     <Grid x:Name="GridMain" Background="{x:Null}">
@@ -210,9 +212,9 @@
                     <Border Margin="5" BorderBrush="#FF00FFD3" BorderThickness="2">
                     </Border>
                     <StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center">
-                        <Button Margin="5" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Height="60" Width="250" Command="{Binding AlarmResetCommand}">
+                        <Button Margin="5" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Height="60" Width="250" Command="{Binding AlarmResetCommand}" Background="{c:Binding 'IsVehicleAlarm ? media:Brushes.Red : media:Brushes.DodgerBlue'}" >
                             <StackPanel Orientation="Horizontal">
-                                <materialDesign:PackIcon Kind="CircleArrows" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Height="40" Width="auto" Margin="0,0,10,0" Background="DarkRed"/>
+                                <materialDesign:PackIcon Kind="CircleArrows" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Height="40" Width="auto" Margin="0,0,10,0"/>
                                 <TextBlock Text="Alarm Reset" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="30"/>
                             </StackPanel>
                         </Button>

+ 101 - 74
Dev/OHV/OHV.Vehicle/Concept/D_MainWindowViewModel.cs

@@ -1,4 +1,6 @@
 using CommonServiceLocator;
+using GSG.NET.Extensions;
+using GSG.NET.Logging;
 using GSG.NET.Utils;
 using OHV.Common.Events;
 using OHV.Common.Model;
@@ -27,6 +29,9 @@ namespace OHV.Vehicle.Concept
 {
     class D_MainWindowViewModel : BindableBase
     {
+        Logger loggerRemote = Logger.GetLogger("RemoteLogger");
+
+        #region Properties
         private string _title = "Prism Unity Application";
         public string Title
         {
@@ -88,15 +93,62 @@ namespace OHV.Vehicle.Concept
         public string VehicleIP
         {
             get { return this._vehicleIP; }
-            set { this.SetProperty( ref this._vehicleIP , value ); }
+            set { this.SetProperty(ref this._vehicleIP, value); }
         }
         private string _ocsIP;
         public string OcsIP
         {
             get { return this._ocsIP; }
-            set { this.SetProperty( ref this._ocsIP , value ); }
+            set { this.SetProperty(ref this._ocsIP, value); }
+        }
+
+        private string _swVersion;
+        public string SwVersion
+        {
+            get { return this._swVersion; }
+            set { this.SetProperty(ref this._swVersion, value); }
         }
 
+        bool _startEnable = true;
+        public bool StartEnable
+        {
+            get { return this._startEnable; }
+            set { this.SetProperty(ref this._startEnable, value); }
+        }
+
+        bool _stopEnable = false;
+        public bool StopEnable
+        {
+            get { return this._stopEnable; }
+            set { this.SetProperty(ref this._stopEnable, value); }
+        }
+
+        private DateTime _lastBuildedTime;
+        public DateTime LastBuildedTime
+        {
+            get { return this._lastBuildedTime; }
+            set { this.SetProperty(ref this._lastBuildedTime, value); }
+        }
+
+        private bool isManualMode = true;
+
+        public bool IsManualMode
+        {
+            get { return isManualMode; }
+            set { SetProperty(ref isManualMode, value); }
+        }
+
+        private bool isVehicleAlarm = false;
+
+        public bool IsVehicleAlarm
+        {
+            get { return isVehicleAlarm; }
+            set { SetProperty(ref this.isVehicleAlarm, value); }
+        }
+
+        #endregion
+
+        #region Brushes
         private Brush _ocsBrush;// = Brushes.Gray;
         private Brush _batteryBrush;// = Brushes.Gray;
         private Brush _laserBrush;// = Brushes.Gray;
@@ -126,39 +178,7 @@ namespace OHV.Vehicle.Concept
             }
         }
 
-        private string _swVersion;
-        public string SwVersion
-        {
-            get { return this._swVersion; }
-            set { this.SetProperty(ref this._swVersion, value); }
-        }
-
-        private DateTime _lastBuildedTime;
-        public DateTime LastBuildedTime
-        {
-            get { return this._lastBuildedTime; }
-            set { this.SetProperty(ref this._lastBuildedTime, value); }
-        }
-
-        bool _startEnable = true;
-        public bool StartEnable
-        {
-            get { return this._startEnable; }
-            set { this.SetProperty( ref this._startEnable , value ); }
-        }
-
-        bool _stopEnable = false;
-        public bool StopEnable
-        {
-            get { return this._stopEnable; }
-            set { this.SetProperty( ref this._stopEnable , value ); }
-        }
-
-        IEventAggregator eventAggregator = null;
-        VCSystem VCSystem = null;
-        MessageController messageController;
-
-        VCSMessagePubSubEvent vcsMessagePublisher;
+        #endregion
 
         #region Commands
         public ICommand TestCommand { get; set; }
@@ -169,32 +189,22 @@ namespace OHV.Vehicle.Concept
         public ICommand StartCommand { get; set; }
         public ICommand StopCommand { get; set; }
         public ICommand AlarmResetCommand { get; set; }
+        public ICommand ChangeLanguage { get; set; }
         #endregion
 
-        #region Properties
-        private bool isManualMode = true;
+        IEventAggregator eventAggregator = null;
+        VCSystem VCSystem = null;
+        MessageController messageController;
 
-        public bool IsManualMode
-        {
-            get { return isManualMode; }
-            set { SetProperty(ref isManualMode, value); }
-        }
+        VCSMessagePubSubEvent vcsMessagePublisher;
 
-        #endregion
         IRegionManager regionManager;
         public Common.Events.HostConnectedEventArgs.eConnectedState State { get; set; }
 
         private DeskTopInfo dti = new DeskTopInfo();
-
-        public ICommand ChangeLanguage { get; set; }
-
-        private void Execte_ChangeLanguage()
-        {
-            //LanguageHalper.LanguagesSelcter.ChangLanguage(LanguageHalper.eLanguageType.Chinese);
-        }
-
         SqliteManager sql;
 
+
         public D_MainWindowViewModel( IEventAggregator _ea , VCSystem cSystem , IRegionManager _regionManager , MessageController _msgController, SqliteManager _sql )
         {
             this.regionManager = _regionManager;
@@ -230,34 +240,12 @@ namespace OHV.Vehicle.Concept
             dateTimer.Interval = TimeSpan.FromMilliseconds(500);
             dateTimer.Start();
 
-            //DispatcherTimer deskTopTimer = new DispatcherTimer();
-            //deskTopTimer.Tick += (object sender, EventArgs e) =>
-            //{
-            //    this.CPU = dti.GetCpuUsage();
-            //    this.UsageCPU = (int)dti.GetCpuUsage();
-            //    this.RAM = dti.GetRamUsage();
-            //};
-            //deskTopTimer.Interval = TimeSpan.FromMilliseconds(1000);
-            //deskTopTimer.Start();
-
-            //this._totalCPU = dti.cpuResult;
-            //this._cDrive = dti.GetCDrive();
-
             this.SwVersion = AssemblyUtils.GetVersion();
             this.LastBuildedTime = new Helpler.AssemblyInfo().Get_BuildDateTime();
 
             GSG.NET.Quartz.QuartzUtils.Invoke("RESOURCE_CHECK", GSG.NET.Quartz.QuartzUtils.GetExpnSecond(1), QuzOnResourceUsage);
         }
 
-        private void ExecuteEStop()
-        {
-            var msg = new VCSMessageEventArgs
-            {
-                Kind = VCSMessageEventArgs.eVCSMessageKind.ReqEStop,
-            };
-            vcsMessagePublisher.Publish(msg);
-        }
-
         void QuzOnResourceUsage()
         {
             this.CPU = GSG.NET.OSView.Mgnt.CpuUseRate();
@@ -267,8 +255,35 @@ namespace OHV.Vehicle.Concept
             this.CDrive = ll.FirstOrDefault().AvailableFreeSpace / ConstUtils.ONE_GIGA_BYTES;
         }
 
+        private void Execte_ChangeLanguage()
+        {
+            //LanguageHalper.LanguagesSelcter.ChangLanguage(LanguageHalper.eLanguageType.Chinese);
+        }
+
+        private void ExecuteEStop()
+        {
+            var msg = new VCSMessageEventArgs
+            {
+                Kind = VCSMessageEventArgs.eVCSMessageKind.ReqEStop,
+            };
+            vcsMessagePublisher.Publish(msg);
+        }
+
         private void ExecuteAlarmResetCommand( )
         {
+            loggerRemote.I("123214wefsadfsdafsd");
+            this.messageController.ShowConfirmationPopupView(" Alarm Reset ? ", r =>
+            {
+                if (r.Result == ButtonResult.OK)
+                {
+                    var msg = new VCSMessageEventArgs
+                    {
+                        Kind = VCSMessageEventArgs.eVCSMessageKind.ReqAlarmReset,
+                    };
+
+                    vcsMessagePublisher.Publish(msg);
+                }
+            });
         }
 
         private void ExecuteStopCommand()
@@ -398,6 +413,19 @@ namespace OHV.Vehicle.Concept
             {
                 var hisAlarm = args.Args as HisAlarm;
                 this.messageController.ShowNotificationView(args.MessageText);
+                this.VehicleModeChang(false);//알람이 발생하면 자동으로 Manual Mode 로 변경됨
+            }
+
+            if (args.MessageKey.Equals(MessageKey.Vehicle))
+            {
+                if (args.ModelPropertyName.Equals("VehicleStateProperty"))
+                {
+                    var vehicleState = CastTo<eVehicleState>.From<object>(args.Args);
+                    if (vehicleState == eVehicleState.Abnormal)
+                        this.IsVehicleAlarm = true;
+                    else
+                        this.IsVehicleAlarm = false;
+                }
             }
         }
 
@@ -411,7 +439,6 @@ namespace OHV.Vehicle.Concept
             //this.eventAggregator.GetEvent<VCSMessagePubSubEvent>().Publish(m);
         }
 
-
         public void InitViewModel()
         {
             //VCSystem.Instance.Init();

+ 22 - 2
Dev/OHV/OHV.Vehicle/Config/log4net.xml

@@ -17,7 +17,11 @@
 		<appender-ref ref="PIOAppender" />
 	</logger>
 
-	<!--
+  <logger name="RemoteLogger" additivity="false">
+    <appender-ref ref="remotingAppender" />
+  </logger>
+
+  <!--
 	ALL    DEBUG   INFO    WARN    ERROR   FATAL   OFF
 	•All
 	•DEBUG  •DEBUG
@@ -93,7 +97,23 @@
 		</layout>
 	</appender>
 
-	<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender"   >
+  <appender name="remotingAppender" type="log4net.Appender.RemotingAppender">
+    <!-- The remoting URL to the remoting server object -->
+    <sink value="tcp://172.20.0.197:8085/Log4netRemotingServerService"/>
+    <!-- Send all events, do not discard events when the buffer is full -->
+    <lossy value="false"/>
+    <!-- The number of events to buffer before sending -->
+    <bufferSize value="10"/>
+    <!-- Do not store event data that is slow to generate -->
+    <onlyFixPartialEventData value="true"/>
+    <!-- Specify an evaluator to send the events immediately under certain conditions, e.g. when an error event ocurrs -->
+    <evaluator type="log4net.Core.LevelEvaluator">
+      <threshold value="WARN"/>
+    </evaluator>
+  </appender>
+
+
+  <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender"   >
 		<layout type="log4net.Layout.PatternLayout">
 			<param name="ConversionPattern" value="%d %m%n" />
 		</layout>

+ 60 - 31
Dev/OHV/VehicleControlSystem/ControlLayer/Vehicle.cs

@@ -103,6 +103,27 @@ namespace VehicleControlSystem.ControlLayer
             set { SetField(ref this.steeringState, value); }
         }
 
+        private eObstacleState obstacleState = eObstacleState.Normal;
+        public eObstacleState ObstacleStateProperty
+        {
+            get { return obstacleState; }
+            set 
+            { 
+                if (SetField(ref this.obstacleState, value))
+                {
+                    if (value == eObstacleState.Blocked)
+                        this.VehicleStateProperty = eVehicleState.Blocked;
+                }
+            }
+        }
+
+        private eVehicleState vehicleState;
+        public eVehicleState VehicleStateProperty
+        {
+            get { return vehicleState; }
+            set { SetField(ref this.vehicleState, value); }
+        }
+
         //이동
         public bool Busy
         {
@@ -147,6 +168,12 @@ namespace VehicleControlSystem.ControlLayer
         public event Action<eFailCode> OnFailReport;
         #endregion
 
+        #region List.
+        List<ICylinder> cylinders = new List<ICylinder>();
+
+        List<string> obstacleBitList = new List<string>();
+        #endregion
+
         EzIO iO = null;
         GSIMotion motion = null;
         SqliteManager sql = null;
@@ -154,29 +181,9 @@ namespace VehicleControlSystem.ControlLayer
         Steering steering = null;
         AutoManager autoManager = null;
 
-        #region List.
-        List<ICylinder> cylinders = new List<ICylinder>();
-
-        List<string> obstacleBitList = new List<string>();
-        #endregion
-
         ThreadCancel cancel = new ThreadCancel();
         TaskCancel taskCancel = new TaskCancel();
 
-        private eObstacleState obstacleState = eObstacleState.Normal;
-        public eObstacleState ObstacleStateProperty
-        {
-            get { return obstacleState; }
-            set { SetField(ref this.obstacleState, value); }
-        }
-
-        private eVehicleState vehicleState;
-        public eVehicleState VehicleStateProperty
-        {
-            get { return vehicleState; }
-            set { SetField(ref this.vehicleState, value); }
-        }
-
         IEventAggregator eventAggregator;
 
         public Vehicle(IIO io, SqliteManager sqliteManager, IEventAggregator ea, AutoManager auto)
@@ -288,8 +295,6 @@ namespace VehicleControlSystem.ControlLayer
             }
         }
 
-        //private void DriveControlEventPublish( DriveControlEventArgs args ) { }
-
         private void DriveControlEventPublish(DriveControlEventArgs args)
         {
             args.EventDir = DriveControlEventArgs.eEventDir.ToFront;
@@ -331,6 +336,7 @@ namespace VehicleControlSystem.ControlLayer
 
         private void ReqVehicleState(DriveControlEventArgs args)
         {
+<<<<<<< HEAD
             //TODO:[20/03/20 ys-hwang] VehicleState Class Not Assign
 
             VehicleState state = new VehicleState
@@ -340,6 +346,13 @@ namespace VehicleControlSystem.ControlLayer
                 CurrentTag = this.CurrentTag ,
                 CurrentTorque = this.CurrentTorque
             };
+=======
+            VehicleInfo state = new VehicleInfo();
+            state.CurrentPosition = this.CurrentPosition;
+            state.CurrentSpeed = this.CurrentSpeed;
+            state.CurrentTag = this.CurrentTag;
+            state.CurrentTorque = this.CurrentTorque;
+>>>>>>> 06cd50a7615cca64bd11a5a71d408533b013704d
 
             var msg = new DriveControlEventArgs();
             msg.ControlKind = args.ControlKind;
@@ -556,7 +569,7 @@ namespace VehicleControlSystem.ControlLayer
             this.clamp.ClampEStop();
             this.motion.EStop();
 
-            this.autoManager.ProcessAlarm(23);
+            this.OccurVehicleAlarm(23);
         }
 
         void Move(SubCmd sub)
@@ -579,6 +592,7 @@ namespace VehicleControlSystem.ControlLayer
             ////TimerUtils.Once(3000, BuzzerOnOff, false, eBuzzerKind.StartWarn );
             //Thread.Sleep(3000);
             //this.BuzzerOnOff(false);
+            this.VehicleStateProperty = eVehicleState.Move;
 
             this.OnMoveReady?.Invoke();
 
@@ -596,6 +610,8 @@ namespace VehicleControlSystem.ControlLayer
             //this.BuzzerOnOff(false);
             this.OnMoveFinish?.Invoke();
 
+            this.VehicleStateProperty = eVehicleState.Idle;
+
             return result;
         }
 
@@ -629,32 +645,34 @@ namespace VehicleControlSystem.ControlLayer
 
         public bool LoadCarrier(SubCmd sub)
         {
+            this.VehicleStateProperty = eVehicleState.Load;
+
             var route = sql.RouteDal.GetRoute(sub.TargetID);
 
             if (!CorrectPosition(route, this.CurrentPosition))
             {
-                this.autoManager.ProcessAlarm(20);
+                this.OccurVehicleAlarm(20);
                 return false; //Alarm
             }
 
             int result = this.clamp.Unlock_Sync();
             if (result != 0)
             {
-                this.autoManager.ProcessAlarm(result);
+                this.OccurVehicleAlarm(result);
                 return false;
             }
 
             result = this.PIOAndLoad(sub.TargetID);
             if (result != 0)
             {
-                this.autoManager.ProcessAlarm(result);
+                this.OccurVehicleAlarm(result);
                 return false;
             }
 
             result = this.clamp.Lock_Sync();
             if (result != 0)
             {
-                this.autoManager.ProcessAlarm(result);
+                this.OccurVehicleAlarm(result);
                 return false;
             }
 
@@ -662,36 +680,42 @@ namespace VehicleControlSystem.ControlLayer
             sql.CommandDAL.UpdateState(sub.CmdID, eCommandState.Complete);
             sql.SubCmdDAL.Delete(sub);
 
+            this.VehicleStateProperty = eVehicleState.Idle;
+
             return true;
         }
 
         public bool UnloadCarrier(SubCmd sub)
         {
+            this.VehicleStateProperty = eVehicleState.Unload;
+
             var route = sql.RouteDal.GetRoute(sub.TargetID);
 
             if (!CorrectPosition(route, this.CurrentPosition))
             {
-                this.autoManager.ProcessAlarm(21);
+                this.OccurVehicleAlarm(21);
                 return false; //Alarm
             }
 
             int result = this.clamp.Unlock_Sync();
             if (result != 0)
             {
-                this.autoManager.ProcessAlarm(result);
+                this.OccurVehicleAlarm(result);
                 return false;
             }
 
             result = this.PIOAndUnload(sub.TargetID);
             if (result != 0)
             {
-                this.autoManager.ProcessAlarm(result);
+                this.OccurVehicleAlarm(result);
                 return false;
             }
 
             sql.CommandDAL.UpdateState(sub.CmdID, eCommandState.Complete);
             sql.SubCmdDAL.Delete(sub);
 
+            this.VehicleStateProperty = eVehicleState.Idle;
+
             return true;
         }
 
@@ -707,7 +731,7 @@ namespace VehicleControlSystem.ControlLayer
 
             if (!CorrectPosition(route, this.CurrentPosition))
             {
-                this.autoManager.ProcessAlarm(21);
+                this.OccurVehicleAlarm(21);
                 return false; //Alarm
             }
 
@@ -1226,6 +1250,11 @@ namespace VehicleControlSystem.ControlLayer
             return BitUtils.ChgInt32(bitArray);
         }
 
+        void OccurVehicleAlarm(int alarmID)
+        {
+            this.VehicleStateProperty = eVehicleState.Abnormal;
+            this.autoManager.ProcessAlarm(alarmID);
+        }
         #endregion
 
         #region Event Subscribe 

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

@@ -255,6 +255,7 @@ namespace VehicleControlSystem.Managers
             }
             sql.HisAlarmDAL.Add(hisAlarm);
 
+            //UI 로는 처음 발생한 Error 만 전송한다.
             if (IsErrorProcessing)
                 return;
 

+ 7 - 7
Dev/OHV/VehicleControlSystem/VCSystem.cs

@@ -113,7 +113,7 @@ namespace VehicleControlSystem
             switch (msg.Kind)
             {
                 case VCSMessageEventArgs.eVCSMessageKind.ReqIOObject:
-                    RspIOObjectMessage();
+                    ReqIOObjectMessage();
                     break;
                 case VCSMessageEventArgs.eVCSMessageKind.ReqIOMapList:
                     break;
@@ -141,8 +141,8 @@ namespace VehicleControlSystem
 
         private void ReqAlarmReset()
         {
-            if (this.autoManager.IsErrorProcessing)
-                this.autoManager.IsErrorProcessing = false;
+            this.autoManager.IsErrorProcessing = false;
+            this.vehicle.VehicleStateProperty = eVehicleState.Idle;
         }
 
         private void ReqEStop()
@@ -176,21 +176,21 @@ namespace VehicleControlSystem
             GUIMessageEventPublish(reply);
         }
 
-        void RspIOObjectMessage()
+        void ReqIOObjectMessage()
         {
             var rspMsg = new GUIMessageEventArgs { Kind = GUIMessageEventArgs.eGUIMessageKind.RspIOObject, Args = this.IO };
             this.eventAggregator.GetEvent<GUIMessagePubSubEvent>().Publish(rspMsg);
         }
 
-        void RspAutoModeChange(bool isAutoMode)
+        void ReqAutoModeChange(bool isAutoMode)
         {
             GUIMessageEventArgs msg;
             if (isAutoMode)
             {
                 int result = vehicle.InitializationVehicle();
-                if (result != 0 )
+                if (result != 0)
                 {
-                    this.autoManager.ProcessAlarm( result ); //Alarm 내용을 UI로 전달 해주니까 Reply 가 필요 없다.
+                    this.autoManager.ProcessAlarm(result); //Alarm 내용을 UI로 전달 해주니까 Reply 가 필요 없다.
                     return;
                 }