소스 검색

no message

SK.Kang 6 년 전
부모
커밋
71f5b55e4a

+ 12 - 0
Dev/OHV/OHV.Common/Interfaces/ISqlManager.cs

@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OHV.Common.Interfaces
+{
+    public interface ISqlManager
+    {
+    }
+}

+ 25 - 1
Dev/OHV/OHV.Common/Model/AxisVelocityData.cs

@@ -1,12 +1,36 @@
 using System;
 using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using SQLite.CodeFirst;
 
 namespace OHV.Common.Model
 {
-    class AxisVelocityData
+    public class AxisVelocityData
     {
+        [Autoincrement]
+        public int id { get; set; }
+
+        [Index("AxisName")]
+        [Required]
+        public string AxisName { get; set; }
+        public double AutoRunVelocity { get; set; }
+        public double AutoRunAccelerate { get; set; }
+        public double AutoRunDecelerate { get; set; }
+        public double ManualRunVelocity { get; set; }
+        public double JogSlow { get; set; }
+        public double JogFast { get; set; }
+        public double Tolerance { get; set; }
+        public DateTime CreateTime { get; set; }
+        public DateTime EditTime { get; set; }
+
+        public AxisVelocityData()
+        {
+            this.CreateTime = DateTime.Now;
+            this.EditTime = DateTime.Now;
+        }
     }
 }

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

@@ -63,8 +63,10 @@
     <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\AxisPositionData.cs" />
+    <Compile Include="Model\AxisVelocityData.cs" />
     <Compile Include="Model\Command.cs" />
     <Compile Include="Model\Config.cs" />
     <Compile Include="Model\Route.cs" />

+ 2 - 0
Dev/OHV/OHV.SqliteDAL/ModelConfiguration.cs

@@ -16,6 +16,8 @@ namespace OHV.SqliteDAL
             modelBuilder.Entity<Route>();
             modelBuilder.Entity<Command>();
             modelBuilder.Entity<SubCmd>();
+            modelBuilder.Entity<AxisPositionData>();
+            modelBuilder.Entity<AxisVelocityData>();
         }
     }
 }

+ 17 - 0
Dev/OHV/OHV.SqliteDAL/OHV.SqliteDAL.csproj

@@ -34,18 +34,34 @@
     <WarningLevel>4</WarningLevel>
   </PropertyGroup>
   <ItemGroup>
+    <Reference Include="CommonServiceLocator, Version=2.0.4.0, Culture=neutral, PublicKeyToken=489b6accfaf20ef0, processorArchitecture=MSIL">
+      <HintPath>..\packages\CommonServiceLocator.2.0.4\lib\net45\CommonServiceLocator.dll</HintPath>
+    </Reference>
     <Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
       <HintPath>..\packages\EntityFramework.6.3.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.3.0\lib\net45\EntityFramework.SqlServer.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="Prism.Wpf, Version=7.2.0.1422, Culture=neutral, PublicKeyToken=40ee6c3a2184dc59, processorArchitecture=MSIL">
+      <HintPath>..\packages\Prism.Wpf.7.2.0.1422\lib\net45\Prism.Wpf.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.Configuration" />
     <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.Windows.Interactivity, Version=4.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
+      <HintPath>..\packages\Prism.Wpf.7.2.0.1422\lib\net45\System.Windows.Interactivity.dll</HintPath>
+    </Reference>
     <Reference Include="System.Xml.Linq" />
     <Reference Include="System.Data.DataSetExtensions" />
     <Reference Include="Microsoft.CSharp" />
@@ -63,6 +79,7 @@
     <Compile Include="OHVDbContext.cs" />
     <Compile Include="OHVDbInitializer.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="SqliteManager.cs" />
   </ItemGroup>
   <ItemGroup>
     <None Include="App.config" />

+ 45 - 2
Dev/OHV/OHV.SqliteDAL/OHVDbInitializer.cs

@@ -53,10 +53,53 @@ namespace OHV.SqliteDAL
                 },
             });
 
-            context.Set<Route>().AddRange(new List<Route>()
+            context.Set<AxisPositionData>().AddRange(new List<AxisPositionData>()
             { 
-                new Route
+                new AxisPositionData
                 { 
+                    AxisName = ConstString.AXIS_CARRIER_LOCK_LEFT,
+                    Name = ConstString.TEACH_POSITION_LOCK,
+                },
+                new AxisPositionData
+                {
+                    AxisName = ConstString.AXIS_CARRIER_LOCK_LEFT,
+                    Name = ConstString.TEACH_POSITION_UNLOCK,
+                },
+                new AxisPositionData
+                {
+                    AxisName = ConstString.AXIS_CARRIER_LOCK_RIGHT,
+                    Name = ConstString.TEACH_POSITION_LOCK,
+                },
+                new AxisPositionData
+                {
+                    AxisName = ConstString.AXIS_CARRIER_LOCK_RIGHT,
+                    Name = ConstString.TEACH_POSITION_UNLOCK,
+                },
+            });
+
+            context.Set<AxisVelocityData>().AddRange(new List<AxisVelocityData>()
+            {
+                new AxisVelocityData
+                {
+                    AxisName = ConstString.AXIS_CARRIER_LOCK_LEFT,
+                    AutoRunVelocity = 100,
+                    AutoRunAccelerate = 100,
+                    AutoRunDecelerate = 100,
+                    ManualRunVelocity = 100,
+                    JogSlow = 5,
+                    JogFast = 10,
+                    Tolerance = 0.5,
+                },
+                new AxisVelocityData
+                {
+                    AxisName = ConstString.AXIS_CARRIER_LOCK_RIGHT,
+                    AutoRunVelocity = 100,
+                    AutoRunAccelerate = 100,
+                    AutoRunDecelerate = 100,
+                    ManualRunVelocity = 100,
+                    JogSlow = 5,
+                    JogFast = 10,
+                    Tolerance = 0.5,
                 },
             });
         }

+ 40 - 0
Dev/OHV/OHV.SqliteDAL/SqliteManager.cs

@@ -0,0 +1,40 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using OHV.Common.Interfaces;
+using OHV.SqliteDAL.DAL;
+using Prism.Ioc;
+using Prism.Modularity;
+
+namespace OHV.SqliteDAL
+{
+    [Module(ModuleName = "SqlManager")]
+    [ModuleDependency("VCSystem")]
+    public class SqliteManager : ISqlManager, IModule
+    {
+        public ConfigDAL ConfigDal { get; set; }
+        public RouteDAL RouteDal { get; set; }
+        public CommandDAL CommandDAL { get; set; }
+        public SubCmdDAL SubCmdDAL { get; set; }
+
+        public SqliteManager()
+        {
+            this.ConfigDal = new ConfigDAL();
+            this.RouteDal = new RouteDAL();
+            this.SubCmdDAL = new SubCmdDAL();
+            this.CommandDAL = new CommandDAL();
+        }
+
+        public void RegisterTypes(IContainerRegistry containerRegistry)
+        {
+            if (!containerRegistry.IsRegistered<ISqlManager>())
+                containerRegistry.RegisterSingleton<ISqlManager, SqliteManager>();
+        }
+
+        public void OnInitialized(IContainerProvider containerProvider)
+        {
+        }
+    }
+}

+ 4 - 0
Dev/OHV/OHV.SqliteDAL/packages.config

@@ -1,5 +1,9 @@
 <?xml version="1.0" encoding="utf-8"?>
 <packages>
+  <package id="CommonServiceLocator" version="2.0.4" targetFramework="net45" />
   <package id="EntityFramework" version="6.3.0" targetFramework="net45" />
+  <package id="Prism.Core" version="7.2.0.1422" targetFramework="net45" />
+  <package id="Prism.Wpf" version="7.2.0.1422" targetFramework="net45" />
   <package id="SQLite.CodeFirst" version="1.5.3.29" targetFramework="net45" />
+  <package id="System.ValueTuple" version="4.5.0" targetFramework="net45" />
 </packages>

+ 9 - 1
Dev/OHV/OHV.Vehicle/App.xaml.cs

@@ -4,6 +4,8 @@ using CommonServiceLocator;
 using GSG.NET.Logging;
 using GSG.NET.Utils;
 using OHV.Common.Events;
+using OHV.Common.Interfaces;
+using OHV.SqliteDAL;
 using Prism.Events;
 using Prism.Ioc;
 using Prism.Modularity;
@@ -69,7 +71,11 @@ namespace OHV.Vehicle
 
         protected override void RegisterTypes(IContainerRegistry containerRegistry)
         {
-            containerRegistry.RegisterSingleton<VCSystem>();
+            if ( !containerRegistry.IsRegistered<VCSystem>() )
+                containerRegistry.RegisterSingleton<VCSystem>();
+
+            if (!containerRegistry.IsRegistered<ISqlManager>())
+                containerRegistry.RegisterSingleton<ISqlManager, SqliteManager>();
         }
 
         protected override void ConfigureViewModelLocator()
@@ -83,7 +89,9 @@ namespace OHV.Vehicle
         {
             base.ConfigureModuleCatalog(moduleCatalog);
 
+            moduleCatalog.AddModule(typeof(SqliteManager));
             moduleCatalog.AddModule(typeof(VCSystem));
+
             moduleCatalog.AddModule(typeof(OHV.Module.Monitoring.MonitoringModules));
             moduleCatalog.AddModule(typeof(OHV.Module.MainViews.MainViewModules));
             moduleCatalog.AddModule(typeof(OHV.Module.Interactivity.MessageController));

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

@@ -86,11 +86,11 @@ namespace OHV.Vehicle
         public void InitViewModel()
         {
             //VCSystem.Instance.Init();
-            var containerRegistry = ServiceLocator.Current.GetInstance<VCSystem>();
-            if (containerRegistry.Equals(this.VCSystem))
-            {
-                Console.WriteLine("==");
-            }
+            //var containerRegistry = ServiceLocator.Current.GetInstance<VCSystem>();
+            //if (containerRegistry.Equals(this.VCSystem))
+            //{
+            //    Console.WriteLine("==");
+            //}
             //var vsys = containerRegistry.GetContainer().Resolve<IContainerProvider>();
 
             regionManager.RequestNavigate(RegionNames.MainView, "ModuleAutoView");

+ 5 - 1
Dev/OHV/OHV.Vehicle/OHV.Vehicle.csproj

@@ -155,7 +155,7 @@
       <LastGenOutput>Resources.Designer.cs</LastGenOutput>
     </EmbeddedResource>
     <None Include="Config\IO.xlsx">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
     </None>
     <None Include="DB\OHVDb.sqlite" />
     <None Include="packages.config" />
@@ -190,6 +190,10 @@
       <Project>{cf748e61-69c2-4dec-a9ec-755b6999077e}</Project>
       <Name>OHV.Module.Monitoring</Name>
     </ProjectReference>
+    <ProjectReference Include="..\OHV.SqliteDAL\OHV.SqliteDAL.csproj">
+      <Project>{122d81c8-9ab9-4ced-80d2-9c4f2f9deb4c}</Project>
+      <Name>OHV.SqliteDAL</Name>
+    </ProjectReference>
     <ProjectReference Include="..\VehicleControlSystem\VehicleControlSystem.csproj">
       <Project>{73BAB40E-FC7D-4AB5-85CA-B4CF221DFBD1}</Project>
       <Name>VehicleControlSystem</Name>

+ 0 - 28
Dev/OHV/VehicleControlSystem/ControlLayer/Actuator/Cylinder/Cylinder.cs

@@ -148,46 +148,32 @@ namespace VehicleControlSystem.ControlLayer.Actuator.Cylinder
                         {
                             case E_CylinderType.UP_DOWN:
                                 return 110008;
-                                break;
                             case E_CylinderType.LEFT_RIGHT:
                                 return 110009;
-                                break;
                             case E_CylinderType.FOR_BACK:
                                 return 110010;
-                                break;
                             case E_CylinderType.UPSTREAM_DOWNSTREAM:
                                 return 110011;
-                                break;
                             case E_CylinderType.CW_CCW:
                                 return 110012;
-                                break;
                             case E_CylinderType.OPEN_CLOSE:
                                 return 110013;
-                                break;
                             case E_CylinderType.TURN_RETURN:
                                 return 110014;
-                                break;
                             case E_CylinderType.LOCK_UNLOCK:
                                 return 110015;
-                                break;
                             case E_CylinderType.UP_MID_DOWN:
                                 return 110012;
-                                break;
                             case E_CylinderType.LEFT_MIDE_RIGHT:
                                 return 110012;
-                                break;
                             case E_CylinderType.FOR_MID_BACK:
                                 return 110012;
-                                break;
                             case E_CylinderType.UPSTREAM_MID_DOWNSTREAM:
                                 return 110012;
-                                break;
                             case E_CylinderType.UPSTREAM_DOWNSTREAM_VARIOUS_VELOCITY:
                                 return 110012;
-                                break;
                             case E_CylinderType.UPSTREAM_MID_DOWNSTREAM_VARIOUS_VELOCITY:
                                 return 110012;
-                                break;
                             default:
                                 break;
                         }
@@ -598,46 +584,32 @@ namespace VehicleControlSystem.ControlLayer.Actuator.Cylinder
                         {
                             case E_CylinderType.UP_DOWN:
                                 return 110008;
-                                break;
                             case E_CylinderType.LEFT_RIGHT:
                                 return 110009;
-                                break;
                             case E_CylinderType.FOR_BACK:
                                 return 110010;
-                                break;
                             case E_CylinderType.UPSTREAM_DOWNSTREAM:
                                 return 110011;
-                                break;
                             case E_CylinderType.CW_CCW:
                                 return 110012;
-                                break;
                             case E_CylinderType.OPEN_CLOSE:
                                 return 110013;
-                                break;
                             case E_CylinderType.TURN_RETURN:
                                 return 110014;
-                                break;
                             case E_CylinderType.LOCK_UNLOCK:
                                 return 110015;
-                                break;
                             case E_CylinderType.UP_MID_DOWN:
                                 return 110012;
-                                break;
                             case E_CylinderType.LEFT_MIDE_RIGHT:
                                 return 110012;
-                                break;
                             case E_CylinderType.FOR_MID_BACK:
                                 return 110012;
-                                break;
                             case E_CylinderType.UPSTREAM_MID_DOWNSTREAM:
                                 return 110012;
-                                break;
                             case E_CylinderType.UPSTREAM_DOWNSTREAM_VARIOUS_VELOCITY:
                                 return 110012;
-                                break;
                             case E_CylinderType.UPSTREAM_MID_DOWNSTREAM_VARIOUS_VELOCITY:
                                 return 110012;
-                                break;
                             default:
                                 break;
                         }

+ 11 - 7
Dev/OHV/VehicleControlSystem/ControlLayer/Vehicle.cs

@@ -9,6 +9,7 @@ using GSG.NET.Logging;
 using GSG.NET.Utils;
 using OHV.Common.Model;
 using OHV.Common.Shareds;
+using OHV.SqliteDAL;
 using VehicleControlSystem.ControlLayer.Actuator.Cylinder;
 using VehicleControlSystem.ControlLayer.Axis;
 using VehicleControlSystem.ControlLayer.IO;
@@ -53,6 +54,8 @@ namespace VehicleControlSystem.ControlLayer
 
         IIO iO = null;
         GSIMotion motion = null;
+        SqliteManager sqliteManager = null;
+
 
         #region List.
         List<ICylinder> cylinders = new List<ICylinder>();
@@ -71,10 +74,11 @@ namespace VehicleControlSystem.ControlLayer
         }
 
 
-        public Vehicle(IIO io)
+        public Vehicle(IIO io, SqliteManager sql)
         {
             this.iO = io;
             this.motion = new GSIMotion();
+            this.sqliteManager = sql;
 
             this.obstacleBitList.AddRange(new string[] 
             {
@@ -140,14 +144,14 @@ namespace VehicleControlSystem.ControlLayer
                     if (this.VehicleStateProperty != eVehicleState.Idle) //상태가 Idle 가 아니면 subcmd 를 가져 오지 않는다.
                         continue;
 
-                    var subCmd = SqlManager.Instance.SubCmdDAL.GetSubCmd();
+                    var subCmd = sqliteManager.SubCmdDAL.GetSubCmd();
                     if (subCmd == null) continue;
 
-                    if (!SqlManager.Instance.CommandDAL.All.Any(x => x.CommandID.Equals(subCmd.CmdID)))
+                    if (!sqliteManager.CommandDAL.All.Any(x => x.CommandID.Equals(subCmd.CmdID)))
                     {
                         if (subCmd.CmdType == SubCmd.eCmdType.Auto) //자동 명령중 Main Command 가 없으면 삭제.
                         {
-                            SqlManager.Instance.SubCmdDAL.Delete(subCmd);
+                            this.sqliteManager.SubCmdDAL.Delete(subCmd);
                             logger.I($"SubCmd Deleted - ID={subCmd.ID}, CommandID={subCmd.CmdID}");
                         }
                     }
@@ -192,7 +196,7 @@ namespace VehicleControlSystem.ControlLayer
         {
             if (this.MoveTo(sub.TargetID))
             {
-                SqlManager.Instance.SubCmdDAL.Delete(sub);
+                sqliteManager.SubCmdDAL.Delete(sub);
             }
             else 
             { 
@@ -230,11 +234,11 @@ namespace VehicleControlSystem.ControlLayer
         void Load(SubCmd sub)
         {
             if ( this.LoadCarrier(sub))
-                SqlManager.Instance.SubCmdDAL.Delete(sub);
+                sqliteManager.SubCmdDAL.Delete(sub);
         }
         public bool LoadCarrier(SubCmd sub)
         {
-            var route = SqlManager.Instance.RouteDal.GetRoute(sub.TargetID);
+            var route = sqliteManager.RouteDal.GetRoute(sub.TargetID);
 
             if (!CorrectPosition(route, this.CurrentPosition))
                 return false; //Alarm

+ 8 - 5
Dev/OHV/VehicleControlSystem/Managers/HostManager.cs

@@ -6,6 +6,7 @@ using System.Threading.Tasks;
 using GSG.NET.Logging;
 using OHV.Common.Events;
 using OHV.Common.Shareds;
+using OHV.SqliteDAL;
 using OHVConnector;
 using Prism.Events;
 using VehicleControlSystem.ControlLayer;
@@ -22,21 +23,23 @@ namespace VehicleControlSystem.Managers
         OHVConnector.Manager manager = new OHVConnector.Manager();
         IEventAggregator eventAggregator = null;
         Vehicle vehicle;
+        SqliteManager sql = null;
 
-        public HostManager(IEventAggregator ea, Vehicle vehicle)
+        public HostManager(IEventAggregator ea, Vehicle vehicle, SqliteManager sqlite)
         {
             this.eventAggregator = ea;
             this.vehicle = vehicle;
+            this.sql = sqlite;
         }
 
         public void Init()
         {
             this.manager.Config = new Config
             {
-                ID = SqlManager.Instance.ConfigDal.GetConfig(ConstString.VehicleID).Value,
-                IpAddress = SqlManager.Instance.ConfigDal.GetConfig(ConstString.Addr).Value,
-                Port = Convert.ToInt16(SqlManager.Instance.ConfigDal.GetConfig(ConstString.PortNo).Value),
-                HostID = SqlManager.Instance.ConfigDal.GetConfig(ConstString.OCSID).Value,
+                ID = sql.ConfigDal.GetConfig(ConstString.VehicleID).Value,
+                IpAddress = sql.ConfigDal.GetConfig(ConstString.Addr).Value,
+                Port = Convert.ToInt16(sql.ConfigDal.GetConfig(ConstString.PortNo).Value),
+                HostID = sql.ConfigDal.GetConfig(ConstString.OCSID).Value,
             };
 
             this.manager.OnContd += Manager_OnContd;

+ 16 - 13
Dev/OHV/VehicleControlSystem/Managers/Scheduler.cs

@@ -10,6 +10,7 @@ using GSG.NET.Logging;
 using GSG.NET.Utils;
 using OHV.Common.Events;
 using OHV.Common.Model;
+using OHV.SqliteDAL;
 using Prism.Events;
 
 namespace VehicleControlSystem.Managers
@@ -31,14 +32,16 @@ namespace VehicleControlSystem.Managers
 
         IEventAggregator eventAggregator;
         AutoManager autoManager;
+        SqliteManager sql;
 
-        public Scheduler(IEventAggregator ea, AutoManager autoManager)
+        public Scheduler(IEventAggregator ea, AutoManager autoManager, SqliteManager sql)
         {
             this.CommandsList = new List<Command>();
             eventAggregator = ea;// CommonServiceLocator.ServiceLocator.Current.GetInstance<IEventAggregator>();
             eventAggregator.GetEvent<VCSMessagePubSubEvent>().Subscribe(OnReceivedMessageEvent);
 
             this.autoManager = autoManager;
+            this.sql = sql;
         }
 
         private void OnReceivedMessageEvent(VCSMessageEventArgs obj)
@@ -105,7 +108,7 @@ namespace VehicleControlSystem.Managers
                             break;
                         case OHV.Common.Shareds.eAutoModeState.Run:
                             {
-                                Command cmd = SqlManager.Instance.CommandDAL.GetCmd();
+                                Command cmd = sql.CommandDAL.GetCmd();
                                 if (cmd == null) continue;
 
                                 DoWork(cmd);
@@ -129,7 +132,7 @@ namespace VehicleControlSystem.Managers
             switch (cmd.State)
             {
                 case OHV.Common.Shareds.eCommandState.Queued:
-                    if ( SqlManager.Instance.SubCmdDAL.GetCount() <= 0)
+                    if (sql.SubCmdDAL.GetCount() <= 0)
                     {
                         switch (cmd.Type)
                         {
@@ -144,29 +147,29 @@ namespace VehicleControlSystem.Managers
                                 break;
                         }
                     }
-                    SqlManager.Instance.CommandDAL.UpdateState(cmd.CommandID, OHV.Common.Shareds.eCommandState.Assign);
+                    sql.CommandDAL.UpdateState(cmd.CommandID, OHV.Common.Shareds.eCommandState.Assign);
                     break;
 
                 case OHV.Common.Shareds.eCommandState.Assign: //Assign 되면 Vehicle 의 상태가 Busy 면 Processing 으로 전환.
                     { 
-                        var subCmd = SqlManager.Instance.SubCmdDAL.GetSubCmd();
+                        var subCmd = sql.SubCmdDAL.GetSubCmd();
                         if (subCmd == null) break;
 
                         if (!subCmd.CmdID.Equals(cmd.CommandID))
                             break;
                     }
 
-                    SqlManager.Instance.CommandDAL.UpdateState(cmd.CommandID, OHV.Common.Shareds.eCommandState.Processing);
+                    sql.CommandDAL.UpdateState(cmd.CommandID, OHV.Common.Shareds.eCommandState.Processing);
                     break;
 
                 case OHV.Common.Shareds.eCommandState.Processing:
                     {
-                        var subCmd = SqlManager.Instance.SubCmdDAL.GetSubCmd();
+                        var subCmd = sql.SubCmdDAL.GetSubCmd();
                         if (subCmd == null) // Move 명령을 수행 완료 했다고 판단.
                         {
                             if ( cmd.IsSecondCommanded)
                             {
-                                SqlManager.Instance.CommandDAL.UpdateState(cmd.CommandID, OHV.Common.Shareds.eCommandState.Complete);
+                                sql.CommandDAL.UpdateState(cmd.CommandID, OHV.Common.Shareds.eCommandState.Complete);
                                 break;
                             }
 
@@ -190,7 +193,7 @@ namespace VehicleControlSystem.Managers
                             }
                             else //Move Command
                             {
-                                SqlManager.Instance.CommandDAL.UpdateState(cmd.CommandID, OHV.Common.Shareds.eCommandState.Complete);
+                                sql.CommandDAL.UpdateState(cmd.CommandID, OHV.Common.Shareds.eCommandState.Complete);
                                 break;
                             }
                         }
@@ -200,11 +203,11 @@ namespace VehicleControlSystem.Managers
                         else //다른 아이디의 일을 하고 있을 경우 가 생길까??
                         { }
                     }
-                    SqlManager.Instance.CommandDAL.UpdateState(cmd.CommandID, OHV.Common.Shareds.eCommandState.Complete);
+                    sql.CommandDAL.UpdateState(cmd.CommandID, OHV.Common.Shareds.eCommandState.Complete);
                     break;
 
                 case OHV.Common.Shareds.eCommandState.Complete:
-                    SqlManager.Instance.CommandDAL.Delete(cmd);
+                    sql.CommandDAL.Delete(cmd);
                     break;
                 default:
                     break;
@@ -235,7 +238,7 @@ namespace VehicleControlSystem.Managers
                 TargetID = cmd.TargetID,
                 CmdID = cmd.CommandID,
             };
-            SqlManager.Instance.SubCmdDAL.Add(sub);
+            sql.SubCmdDAL.Add(sub);
             logger.I($"{sub.ID} Sub Command Create - Type={sub.Type}, TargetID={sub.TargetID}, CommandID={sub.CmdID}");
 
             return true;
@@ -247,7 +250,7 @@ namespace VehicleControlSystem.Managers
             {
             };
 
-            SqlManager.Instance.CommandDAL.Add(cmd);
+            sql.CommandDAL.Add(cmd);
             logger.I($"{cmd.CommandID} Command Create - Type={cmd.Type}, TargetID={cmd.TargetID}");
             return true;
         }

+ 0 - 26
Dev/OHV/VehicleControlSystem/Managers/SqlManager.cs

@@ -1,26 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using GSG.NET.ObjectBase;
-using OHV.SqliteDAL.DAL;
-
-namespace VehicleControlSystem.Managers
-{
-    public class SqlManager : SingletonBase<SqlManager>
-    {
-        public ConfigDAL ConfigDal { get; set; }
-        public RouteDAL RouteDal { get; set; }
-        public CommandDAL CommandDAL { get; set; }
-        public SubCmdDAL SubCmdDAL { get; set; }
-
-        private SqlManager()
-        {
-            this.ConfigDal = new ConfigDAL();
-            this.RouteDal = new RouteDAL();
-            this.SubCmdDAL = new SubCmdDAL();
-            this.CommandDAL = new CommandDAL();
-        }
-    }
-}

+ 15 - 5
Dev/OHV/VehicleControlSystem/VCSystem.cs

@@ -2,12 +2,15 @@
 using System.Collections.Generic;
 using System.IO;
 using System.Linq;
+using System.Runtime.CompilerServices;
 using System.Text;
 using System.Threading.Tasks;
 using GSG.NET;
 using GSG.NET.ObjectBase;
 using OHV.Common.Events;
+using OHV.Common.Interfaces;
 using OHV.Common.Model;
+using OHV.SqliteDAL;
 using Prism.Events;
 using Prism.Ioc;
 using Prism.Modularity;
@@ -18,6 +21,7 @@ using VehicleControlSystem.Managers;
 namespace VehicleControlSystem
 {
     [Module(ModuleName ="VCSystem")]
+    //[ModuleDependency("SqlManager")]
     public class VCSystem : IModule, IDisposable
     {
         Scheduler scheduler = null;
@@ -27,14 +31,19 @@ namespace VehicleControlSystem
         HostManager hostManager = null;
         Vehicle vehicle = null;
 
-        public VCSystem(IEventAggregator ea) 
+        public SqliteManager sqlManager { get; set; }
+
+        public VCSystem(IEventAggregator ea, ISqlManager sql) 
         {
+            //if (this.sqlManager == null) { }
             this.eventAggregator = ea;
 
             this.eventAggregator.GetEvent<ApplicationExitEvent>().Subscribe((o) => Dispose(), true);
 
             this.eventAggregator.GetEvent<VCSMessagePubSubEvent>().Unsubscribe(ReceivedMessageEvent);
             this.eventAggregator.GetEvent<VCSMessagePubSubEvent>().Subscribe(this.ReceivedMessageEvent, ThreadOption.BackgroundThread);
+
+            this.sqlManager = sql as SqliteManager;
         }
 
         public void Init()
@@ -53,13 +62,13 @@ namespace VehicleControlSystem
             this.autoManager = new AutoManager(this.IO);
             this.autoManager.Init();
 
-            this.scheduler = new Scheduler(eventAggregator, this.autoManager);
+            this.scheduler = new Scheduler(eventAggregator, this.autoManager, this.sqlManager);
             this.scheduler.Init();
 
-            this.vehicle = new Vehicle(this.IO);
+            this.vehicle = new Vehicle(this.IO, this.sqlManager);
             this.vehicle.Init();
 
-            this.hostManager = new HostManager(this.eventAggregator, this.vehicle);;
+            this.hostManager = new HostManager(this.eventAggregator, this.vehicle, this.sqlManager);;
             this.hostManager.Init();
         }
 
@@ -120,7 +129,8 @@ namespace VehicleControlSystem
 
         public void RegisterTypes(IContainerRegistry containerRegistry)
         {
-            //containerRegistry.RegisterSingleton<VCSystem>();
+            if ( !containerRegistry.IsRegistered<VCSystem>() )
+                containerRegistry.RegisterSingleton<VCSystem>();
         }
 
         public void OnInitialized(IContainerProvider containerProvider)

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

@@ -105,7 +105,6 @@
     <Compile Include="Managers\AutoManager.cs" />
     <Compile Include="Managers\HostManager.cs" />
     <Compile Include="Managers\Scheduler.cs" />
-    <Compile Include="Managers\SqlManager.cs" />
     <Compile Include="VCSystem.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
   </ItemGroup>