Bladeren bron

Battery Connect 수정

DESKTOP-Kang 6 jaren geleden
bovenliggende
commit
c1fca742aa

+ 2 - 0
Dev/OHV/OHV.Module.Monitoring/Interactivity/InOutIOViewModel.cs

@@ -256,6 +256,8 @@ namespace OHV.Module.Monitoring.Interactivity
                     break;
             }
 
+            this.IO.TestEqueue();
+
         }
 
         void ExecuteOutPut( object obj )

+ 8 - 0
Dev/OHV/VehicleControlSystem/ControlLayer/IO/EzIO.cs

@@ -702,6 +702,14 @@ namespace VehicleControlSystem.ControlLayer.IO
             return 0;
         }
 
+        public void TestEqueue()
+        {
+            var o = this.OutPutIOList.Where( x => x.Tag.Equals( "OUT_OBSTRUCTION_PATTERN_00" ) ).Single();
+            o.IsChanged = false;
+            var clone = ObjectCopyUtils.DeepClone<BitBlock>( o );
+            this.qQ.Enqueue( new QoChangedIO { Arg0 = clone } );
+        }
+
         #region IDisposable Support
         private bool disposedValue = false; // 중복 호출을 검색하려면
 

+ 25 - 25
Dev/OHV/VehicleControlSystem/ControlLayer/Serial/BatteryTabos/Advantech/Advantech.cs

@@ -30,23 +30,17 @@ namespace VehicleControlSystem.ControlLayer.Serial.BatteryTabos
         string errormsg = string.Empty;
 
         //Todo:Dll 에서 상태 가져오기
-        //bool IsConnected = false;
+        bool isConnected = false;
         public bool IsConnected
         {
-            get 
+            get => this.isConnected;
+            set
             {
-                var state = new AdvCan.CanStatusPar_t();
-                var ret = this.device.acGetStatus( ref state );
-                if ( ret == AdvCANIO.SUCCESS )
-                {
-                    //정상 연결일때 값이 12 들어옴.
-                    if ( state.status == 12/*AdvCan.STATUS_OK*/ )
-                        return true;
-                    else
-                        return false;
-                }
+                if ( this.isConnected == value ) return;
+                if ( value )
+                    this.manager._OnConnected();
                 else
-                    return false;
+                    this.manager._OnDisconnected();
             }
         }
 
@@ -107,6 +101,22 @@ namespace VehicleControlSystem.ControlLayer.Serial.BatteryTabos
             this.qqW.Enqueue( o );
         }
 
+        bool GetConnectState()
+        {
+            var state = new AdvCan.CanStatusPar_t();
+            var ret = this.device.acGetStatus( ref state );
+            if ( ret == AdvCANIO.SUCCESS )
+            {
+                //정상 연결일때 값이 12 들어옴.
+                if ( state.status == 12/*AdvCan.STATUS_OK*/ )
+                    return true;
+                else
+                    return false;
+            }
+            else
+                return false;
+        }
+
         void TryToConnect( )
         {
             //var a = AdvCANIO.OPERATION_ERROR; == -1
@@ -120,14 +130,12 @@ namespace VehicleControlSystem.ControlLayer.Serial.BatteryTabos
             if(ret < 0)
             {
                 throw new Exception( "AdvCAN Open Error" );
-                return;
             }
 
             ret = this.device.acEnterResetMode();
             if ( ret < 0 )
             {
                 throw new Exception( "AdvCAN Reset Error" );
-                return;
             }
 
             //ret = this.device.acSetAcceptanceFilterMode( AdvCan.PELICAN_SINGLE_FILTER );
@@ -141,52 +149,45 @@ namespace VehicleControlSystem.ControlLayer.Serial.BatteryTabos
             if ( ret < 0 )
             {
                 throw new Exception( "AdvCAN BaudRate Set Error" );
-                return;
             }
 
             ret = this.device.acSetAcceptanceFilterMask( Convert.ToUInt32( "FFFFFFFF" , 16 ));
             if ( ret < AdvCANIO.SUCCESS )
             {
                 throw new Exception( "AdvCAN AcceptFilterMask Set Error " );
-                return;
             }
 
             ret = this.device.acSetAcceptanceFilterCode( Convert.ToUInt32( "FFFFFFFF" , 16 ) );
             if ( ret < AdvCANIO.SUCCESS )
             {
                 throw new Exception( "AdvCAN AcceptFilterCode Set Error " );
-                return;
             }
 
             ret = this.device.acSetTimeOut( 2000 , 2000 );
             if(ret < AdvCANIO.SUCCESS)
             {
                 throw new Exception( "AdvCAN TimeOut Set Error " );
-                return;
             }
 
             ret = this.device.acSetSelfReception(false);
             if(ret < AdvCANIO.SUCCESS)
             {
                 throw new Exception( "AdvCAN SelfReception Set Error" );
-                return;
             }
 
             ret = this.device.acEnterWorkMode();
             if(ret < AdvCANIO.SUCCESS)
             {
                 throw new Exception( "AdvCAN EnterWorkMode Error" );
-                return;
             }
 
             //this.IsConnected = true;
             if ( this.Write( eSendMode.MANUAL ) <= 0 )
             {
                 throw new Exception( "AdvCan Write Error" );
-                return;
             }
             else
-                manager._OnConnected();
+                this.IsConnected = this.GetConnectState();
         }
 
         public void _ThreadPoolingReceiveData( )
@@ -437,8 +438,7 @@ namespace VehicleControlSystem.ControlLayer.Serial.BatteryTabos
             var ret = this.device.acCanClose();
 
             //logger.E( $"[Battery Advantech] - {e.Message} -" );
-
-            this.manager._OnDisconnected();
+            this.IsConnected = false;
         }
 
         bool GetStatus( )

+ 3 - 3
Dev/OHV/VehicleControlSystem/Managers/AutoManager.cs

@@ -291,9 +291,6 @@ namespace VehicleControlSystem.Managers
             this.LampStateProperty = eLampState.Alarm;
             this.BuzzerStateProperty = eBuzzerKind.Alarm;
 
-            this.sql.CommandDAL.Clean();
-            this.sql.SubCmdDAL.Clean();
-
             HisAlarm hisAlarm = new HisAlarm();
             var alarm = sql.AlarmDAL.GetK(alarmID);
             if (alarm == null)
@@ -318,6 +315,9 @@ namespace VehicleControlSystem.Managers
             if (IsErrorProcessing)
                 return;
 
+            this.sql.CommandDAL.Clean();
+            this.sql.SubCmdDAL.Clean();
+
             IsErrorProcessing = true;
 
             this.activeAlarm = ObjectCopyUtils.DeepClone<Alarm>( alarm );