Browse Source

OCS Disconnected 상황 시 주행 완료 후 Alarm 처리

unque781 5 years ago
parent
commit
a1b76f4910

+ 51 - 30
Dev/OHV/OHV.SqliteDAL/DAL/AbstractDAL.cs

@@ -163,37 +163,46 @@ namespace OHV.SqliteDAL.DAL
 
         public IEnumerable<T> GetAll()
         {
-            return table.ToList();
+            lock ( lockObj )
+                return table.ToList();
         }
 
         public virtual IEnumerable<T> Get( Expression<Func<T, bool>> filter = null, Func<IQueryable<T>, IOrderedQueryable<T>> orderBy = null, string includeProperties = "" )
         {
-            IQueryable<T> query = this.table;
+            lock ( lockObj )
+            {
 
-            if ( filter != null )
-                query = query.Where( filter );
+                IQueryable<T> query = this.table;
 
-            if ( includeProperties != null )
-            {
-                foreach ( var includeProperty in includeProperties.Split( new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries ) )
-                    query = query.Include( includeProperty );
-            }
+                if ( filter != null )
+                    query = query.Where( filter );
+
+                if ( includeProperties != null )
+                {
+                    foreach ( var includeProperty in includeProperties.Split( new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries ) )
+                        query = query.Include( includeProperty );
+                }
 
-            if ( orderBy != null )
-                return orderBy( query ).ToList();
-            else
-                return query.ToList();
+                if ( orderBy != null )
+                    return orderBy( query ).ToList();
+                else
+                    return query.ToList();
+            }
         }
 
         public T GetById( object id )
         {
-            return table.Find( id );
+            lock ( lockObj )
+                return table.Find( id );
         }
 
         public void Insert( T obj )
         {
-            table.Add( obj );
-            this.Save();
+            lock ( lockObj )
+            {
+                table.Add( obj );
+                this.Save();
+            }
         }
 
         public void Update( T obj )
@@ -204,9 +213,12 @@ namespace OHV.SqliteDAL.DAL
                 return;
             }
 
-            table.Attach( obj );
-            _context.Entry( obj ).State = EntityState.Modified;
-            this.Save();
+            lock ( lockObj )
+            {
+                table.Attach( obj );
+                _context.Entry( obj ).State = EntityState.Modified;
+                this.Save();
+            }
         }
 
         public void Delete( object id )
@@ -215,29 +227,38 @@ namespace OHV.SqliteDAL.DAL
             if ( existing == null )
                 return;
 
-            if ( _context.Entry( existing ).State == EntityState.Detached )
+            lock ( lockObj )
             {
-                table.Attach( existing );
-            }
+                if ( _context.Entry( existing ).State == EntityState.Detached )
+                {
+                    table.Attach( existing );
+                }
 
-            table.Remove( existing );
-            this.Save();
+                table.Remove( existing );
+                this.Save();
+            }
         }
 
         public void Delete( Expression<Func<T, bool>> filter )
         {
-            var delList = this.table.Where( filter ).ToList();
-            if ( delList.Count > 0 )
+            lock ( lockObj )
             {
-                this.table.RemoveRange( delList );
-                Save();
+                var delList = this.table.Where( filter ).ToList();
+                if ( delList.Count > 0 )
+                {
+                    this.table.RemoveRange( delList );
+                    Save();
+                }
             }
         }
 
         public void Clean()
         {
-            table.RemoveRange( table );
-            this.Save();
+            lock ( lockObj )
+            {
+                table.RemoveRange( table );
+                this.Save();
+            }
         }
 
         public void Save()

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

@@ -37,6 +37,7 @@ namespace VehicleControlSystem.ControlLayer
         public BMUManager BMUManager { get; set; }
         public ZmqManager ZmqManager { get; set; }
         public List<Alarm> Alarms { get; set; }
+        public HostManager HostManager { get; set; }
     }
 
     /// <summary>
@@ -639,10 +640,12 @@ namespace VehicleControlSystem.ControlLayer
             this.eventAggregator.GetEvent<DriveControlPubSubEvent>().Publish( args );
         }
 
-        public void Init()
+        public void Init(HostManager host)
         {
             ThreadStart();
 
+            this.refObjects.HostManager = host;
+
             //TimerUtils.Once(5000, () => { this.CurrentPosition = 1000; });
             var v = sql.VehicleInfoDAL.GetAll().FirstOrDefault();
             v.CurrentTag = "0000";
@@ -651,7 +654,7 @@ namespace VehicleControlSystem.ControlLayer
 
             sql.VehicleInfoDAL.Update( v );
         }
-
+        
         public int InitializationVehicle()
         {
 #if SIMULATION
@@ -873,6 +876,7 @@ namespace VehicleControlSystem.ControlLayer
                     if ( this.autoManager.AutoModeStateProperty != eAutoModeState.Run ) // 
                         continue;
 
+
                     var subCmd = sql.SubCmdDAL.GetAll().FirstOrDefault();
                     if ( subCmd == null ) continue;
 
@@ -890,6 +894,9 @@ namespace VehicleControlSystem.ControlLayer
                         case eSubCommandType.Move:
                             this.CurrentSubCommand = subCmd;
                             this.Move( subCmd );
+
+                            if ( !refObjects.HostManager.IsConnected )
+                                OccurVehicleAlarm( 43 );
                             break;
 
                         case eSubCommandType.Load:

+ 4 - 2
Dev/OHV/VehicleControlSystem/Managers/HostManager.cs

@@ -28,6 +28,8 @@ namespace VehicleControlSystem.Managers
         SqliteManager sql = null;
         AutoManager autoManager;
 
+        public bool IsConnected { get { return this.manager.Connected; } }
+
         public HostManager( IEventAggregator ea, Vehicle vehicle, SqliteManager sqlite, AutoManager autoManager, Scheduler scheduler )
         {
             this.eventAggregator = ea;
@@ -475,7 +477,7 @@ namespace VehicleControlSystem.Managers
                     reply.IsSubCode3 = vehicle.IsError;
                 }
 
-                this.manager.Send( msg );
+                this.manager.Send( reply );
             }
         }
 
@@ -587,7 +589,7 @@ namespace VehicleControlSystem.Managers
 
         private void Manager_OnDiscontd( string id, Exception e )
         {
-            this.vehicle.OccurVehicleAlarm( 43 );
+            //this.vehicle.OccurVehicleAlarm( 43 );
 
             var msg = new HostConnectedEventArgs( HostConnectedEventArgs.eConnectedState.Disconnected );
             this.eventAggregator.GetEvent<HostConnectedPubSubEvent>().Publish( msg );

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

@@ -144,7 +144,7 @@ namespace VehicleControlSystem
             this.hostManager = new HostManager( this.eventAggregator, this.vehicle, this.sql, this.autoManager, this.scheduler );
 
             this.hostManager.Init();
-            this.vehicle.Init();
+            this.vehicle.Init(this.hostManager);
             this.scheduler.Init();
             this.autoManager.Init( this.vehicle );
         }

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

@@ -17,7 +17,7 @@
     <DebugSymbols>true</DebugSymbols>
     <DebugType>full</DebugType>
     <Optimize>false</Optimize>
-    <OutputPath>bin\Debug\</OutputPath>
+    <OutputPath>\\192.168.127.10\vcs\</OutputPath>
     <DefineConstants>TRACE;DEBUG</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>

BIN
Dev/OHVLoggerTest/.vs/OHVLoggerTest/v16/Server/sqlite3/storage.ide