unque781 6 лет назад
Родитель
Сommit
58e09ddb6c

+ 3 - 3
Dev/Connection/OHVProtocolServer/OHVConnector/Manager.cs

@@ -167,7 +167,7 @@ namespace OHVConnector
             }
 
             qQ.Enqueue( new QoTimeout { Arg0 = msg } );
-            //_OnLog("T3 TIMEOUT {0}".format(msg.LogHeader));
+            _OnLog($"T3 TIMEOUT {msg.LogFormat()}");
         }
 
         #region Thread Method
@@ -447,9 +447,8 @@ namespace OHVConnector
         #region Write Method
         void TcpWriteMsg( OCSMessage msg )
         {
-            qQ.Enqueue( new QoSent { Arg0 = msg } );
-
             this.h.WriteFlush( msg.ToMemoryBuffer().ToBytes );
+            qQ.Enqueue( new QoSent { Arg0 = msg } );
         }
 
         void TcpWriteNormalMsg( OCSMessage nm )
@@ -517,6 +516,7 @@ namespace OHVConnector
             }
 
             var checkSum = Convert.ToString( msg.GetCheckSum(), 16 ).ToLower();
+            //logger.D( checkSum );
 
             if ( this.quzT3.HasId( checkSum ) )
             {

BIN
Dev/OHV/Assambly/OHVConnector.dll


BIN
Dev/OHV/Assambly/OHVConnector.pdb


+ 7 - 4
Dev/OHV/OHV.Vehicle/Config/log4net.xml

@@ -4,7 +4,7 @@
 		<level value="ALL" />
 		<appender-ref ref="FileAppender" />
 		<appender-ref ref="WarnFileAppender" />
-		<appender-ref ref="ConsoleAppender" />
+		<!--<appender-ref ref="ConsoleAppender" />-->
 		<appender-ref ref="DebugFileAppender" />
 		<appender-ref ref="remotingAppender" />
 		<!--<appender-ref ref="MongoAppender" />-->
@@ -110,10 +110,10 @@
 	</appender>
 
 	<appender name="DebugFileAppender" type="GSG.NET.Logging.FileAppender, GSG.NET">
-		<filter type="log4net.Filter.LevelRangeFilter">
+		<!--<filter type="log4net.Filter.LevelRangeFilter">
 			<param name="LevelMin" value="DEBUG"></param>
 			<param name="LevelMax" value="DEBUG"></param>
-		</filter>
+		</filter>-->
 		<threshold value="DEBUG"/>
 		<file value="C:\LOG\OHV\DEBUG\Vehicle_DEBUG.log" />
 		<appendToFile value="true" />
@@ -126,7 +126,10 @@
 	</appender>
 
 	<appender name="WarnFileAppender" type="GSG.NET.Logging.FileAppender, GSG.NET">
-		<threshold value="WARN"/>
+		<filter type="log4net.Filter.LevelRangeFilter">
+			<param name="LevelMin" value="WARN"></param>
+			<param name="LevelMax" value="OFF"></param>
+		</filter>
 		<file value="C:\LOG\OHV\Vehicle\Vehicle_WARN.log" />
 		<appendToFile value="true" />
 		<rollingStyle value="Date" />

+ 18 - 11
Dev/OHV/VehicleControlSystem/ControlLayer/MQ/ZmqManager.cs

@@ -7,6 +7,7 @@ using NetMQ.Sockets;
 using OHV.Common.Model;
 using OHV.Common.Shareds;
 using System;
+using System.Collections.Concurrent;
 using System.Collections.Generic;
 using System.Linq;
 using VehicleControlSystem.ControlLayer.Serial.BatteryTabos;
@@ -15,6 +16,12 @@ using VehicleControlSystem.Managers;
 
 namespace VehicleControlSystem.ControlLayer.MQ
 {
+    public class ZmqMessage
+    {
+        public string Key { get; set; }
+        public string Message { get; set; }
+    }
+
     public class ZmqManager : ControlObjectBase, IDisposable
     {
         Logger logger = Logger.GetLogger();
@@ -33,6 +40,8 @@ namespace VehicleControlSystem.ControlLayer.MQ
 
         ThreadCancel threadCancel = new ThreadCancel();
 
+        BlockingCollection<ZmqMessage> sendQueue = new BlockingCollection<ZmqMessage>(new ConcurrentQueue<ZmqMessage>());
+
         private bool isReqConnected = false;
         public bool IsReqConnected
         {
@@ -55,9 +64,7 @@ namespace VehicleControlSystem.ControlLayer.MQ
             set
             {
                 if ( SetField( ref isDriveMoving, value ) )
-                {
-                    pub.SendMoreFrame( "DriveStart" ).SendFrame( value.ToString() );
-                }
+                    Publish( "DriveStart", value.ToString() );
             }
         }
 
@@ -75,7 +82,7 @@ namespace VehicleControlSystem.ControlLayer.MQ
             set
             {
                 if ( SetField( ref this.currentPointNo, value ) )
-                    pub.SendMoreFrame( "CurrentPoint" ).SendFrame( value.ToString() );
+                    Publish( "CurrentPoint", value.ToString() );
             }
         }
 
@@ -91,7 +98,7 @@ namespace VehicleControlSystem.ControlLayer.MQ
                     if ( segment == null )
                         return;
 
-                    this.pub.SendMoreFrame( "CurrentRailFrom" ).SendFrame( segment.route_type );
+                    Publish( "CurrentRailFrom", segment.route_type );
                 }
             }
         }
@@ -133,7 +140,7 @@ namespace VehicleControlSystem.ControlLayer.MQ
             {
                 if ( SetField( ref this.currentMCR, value ) )
                 {
-                    this.pub.SendMoreFrame( "MCRValue" ).SendFrame( value.ToString() );
+                    Publish( "MCRValue", value.ToString() );
                 }
             }
         }
@@ -239,9 +246,11 @@ namespace VehicleControlSystem.ControlLayer.MQ
             this.req.Dispose();
         }
 
+        object lockPulish = new object();
         public void Publish(string key, string val) 
         {
-            this.pub.SendMoreFrame( key ).SendFrame( val );
+            lock(lockPulish)
+                this.pub.SendMoreFrame( key ).SendFrame( val );
         }
 
         private void Rep_ReceiveReady( object sender, NetMQSocketEventArgs e )
@@ -468,11 +477,10 @@ namespace VehicleControlSystem.ControlLayer.MQ
                 catch ( Exception e )
                 {
                     logger.E( e );
-                    this.req.Dispose();
+                    this.req.Disconnect( "tcp://127.0.0.1:5567" );
                     //this.monitor.Stop();
                     //this.monitor.Dispose();
 
-                    req = new RequestSocket();
                     //this.monitor = new NetMQMonitor( req, "inproc://rep.inproc", SocketEvents.Disconnected | SocketEvents.Connected );
                     //this.monitor.Connected += ( s, a ) => { this.IsReqConnected = true; CurrentPointNo = GetCurrentPointNo(); };
                     //this.monitor.Disconnected += ( s, a ) => { this.IsReqConnected = false; };
@@ -508,11 +516,10 @@ namespace VehicleControlSystem.ControlLayer.MQ
                 catch ( Exception e )
                 {
                     logger.E( e );
-                    this.req.Dispose();
+                    this.req.Disconnect( "tcp://127.0.0.1:5567" );
                     //this.monitor.Stop();
                     //this.monitor.Dispose();
 
-                    req = new RequestSocket();
                     //this.monitor = new NetMQMonitor( req, "inproc://rep.inproc", SocketEvents.Disconnected | SocketEvents.Connected );
                     //this.monitor.Connected += ( s, a ) => { this.IsReqConnected = true; CurrentPointNo = GetCurrentPointNo(); };
                     //this.monitor.Disconnected += ( s, a ) => { this.IsReqConnected = false; };

+ 88 - 42
Dev/OHV/VehicleControlSystem/ControlLayer/Vehicle.cs

@@ -9,6 +9,7 @@ using GSG.NET.Concurrent;
 using GSG.NET.Extensions;
 using GSG.NET.LINQ;
 using GSG.NET.Logging;
+using GSG.NET.Quartz;
 using GSG.NET.Utils;
 using OHV.Common.Events;
 using OHV.Common.Model;
@@ -165,11 +166,6 @@ namespace VehicleControlSystem.ControlLayer
             {
                 if ( SetField( ref this.vehicleState, value ) )
                 {
-                    if ( value == eVehicleState.Charge )
-                        this.OnCharging?.Invoke();
-                    else
-                        this.OnChargingFull?.Invoke();
-
                     var info = sql.VehicleInfoDAL.GetAll().FirstOrDefault();
                     info.VehicleState = value;
                     sql.VehicleInfoDAL.Update( info );
@@ -225,6 +221,27 @@ namespace VehicleControlSystem.ControlLayer
 
         public bool IsMoving { get => this.refObjects.Drive.IsDriveMoving(); }
 
+        private bool batteryChargeState;
+
+        public bool BatteryChargeState
+        {
+            get { return batteryChargeState; }
+            set
+            {
+                if ( SetField( ref batteryChargeState, value ) )
+                {
+                    if ( value )
+                    {
+                        this.OnChargingStart?.Invoke();
+                        LockUtils.Wait( 200 );
+                        this.OnCharging?.Invoke();
+                    }
+                    else
+                        this.OnChargingFull?.Invoke();
+                }
+            }
+        }
+
         #region Battery Property
 
         double batteryVoltage;
@@ -376,6 +393,7 @@ namespace VehicleControlSystem.ControlLayer
             get { return this.rearTorque; }
             set { SetField( ref this.rearTorque, value ); }
         }
+
         #endregion
 
         #region Event 
@@ -922,7 +940,7 @@ namespace VehicleControlSystem.ControlLayer
         {
             //Move 시작 시 충전 중이면 충전 중지 실행.
             int result = 0;
-            if ( this.IsCharging() || this.VehicleStateProperty == eVehicleState.Charge )
+            if ( this.IsCharging() || this.VehicleStateProperty == eVehicleState.Charge || this.BatteryChargeState)
             {
                 result = this.StopBatteryCharge();
                 if ( result != 0 )
@@ -1085,8 +1103,10 @@ namespace VehicleControlSystem.ControlLayer
                 sql.CommandDAL.Update( cmd );
             }
 
-            LockUtils.Wait( 1000 );
-            this.OnLoadComplete?.Invoke(); //일찍 주면 다음 명령을 500ms 안에 주는 현상 있음. 그러니까 천천히 주자 
+            TimerUtils.Once( 1000, this.OnLoadComplete );
+
+            //LockUtils.Wait( 1000 );
+            //this.OnLoadComplete?.Invoke(); //일찍 주면 다음 명령을 500ms 안에 주는 현상 있음. 그러니까 천천히 주자 
             this.VehicleStateProperty = eVehicleState.Idle;
 
             return true;
@@ -1138,8 +1158,10 @@ namespace VehicleControlSystem.ControlLayer
                 sql.CommandDAL.Update( cmd );
             }
 
-            LockUtils.Wait( 1000 );
-            this.OnUnloadComplete?.Invoke(); //일찍 주면 다음 명령을 500ms 안에 주는 현상 있음. 그러니까 천천히 주자 
+            TimerUtils.Once( 1000, this.OnUnloadComplete );
+
+            //LockUtils.Wait( 1000 );
+            //this.OnUnloadComplete?.Invoke(); //일찍 주면 다음 명령을 500ms 안에 주는 현상 있음. 그러니까 천천히 주자 
             this.VehicleStateProperty = eVehicleState.Idle;
 
             logger.D( $"[Unloading End]--------------------------------------" );
@@ -1436,7 +1458,16 @@ namespace VehicleControlSystem.ControlLayer
         /// 이걸 보고 판단 하자. 충전 단자 전진 상태임.
         /// </summary>
         /// <returns></returns>
-        public bool IsCharging() => this.refObjects.IO.IsOn( "IN_PIO_SEND_RUN" ) && this.refObjects.IO.IsOn( "IN_PIO_SENDABLE" );
+        public bool IsCharging()
+        {
+            this.PIOSensorOn();
+            LockUtils.Wait( 500 );
+
+            var ret = this.refObjects.IO.IsOn( "OUT_PIO_RECEIVABLE", false ) && this.refObjects.IO.IsOn( "OUT_PIO_RECEIVE_RUN", false );
+            //this.PIOSensorOff();
+
+            return ret;
+        }
         #endregion
 
         #region Drive
@@ -1494,32 +1525,33 @@ namespace VehicleControlSystem.ControlLayer
             if ( this.refObjects.Conveyor.IsInverterError() )
                 return 16;
 
+            if ( this.refObjects.Conveyor.IsDetectedCenter() )
+            {
+                this.OnFailReport?.Invoke( eFailCode.Load_VehicleHasCarrier );
+                return 0;
+            }
+
             if ( !this.refObjects.IO.WaitChangeInputIO( true, 20 * ConstUtils.ONE_SECOND, "IN_LIFTER_POSITION_DETECT" ) )
             {
                 loggerPIO.E( "[Port] - Lift Position Check Error" );
-                this.OnFailReport?.Invoke( eFailCode.LoadPIOInterlockTimeout );
+                TimerUtils.Once( 1000, this.OnFailReport, eFailCode.LoadPIOInterlockTimeout );
+                //this.OnFailReport?.Invoke( eFailCode.LoadPIOInterlockTimeout );
                 return 0; //14
             }
 
             //if ( !this.refObjects.Conveyor.IsLifterPositinCheck() )
-                //{
-                //    loggerPIO.E( "[Port] - Lift Position Check Error" );
-                //    this.OnFailReport?.Invoke( eFailCode.LoadPIOInterlockTimeout );
-                //    return 0; //14
-                //}
-
-                //Todo: Sensor Setting 이 후 주석 풀기.
-                //if ( !this.IsLifterDuplication() )
-                //{
-                //    this.OnFailReport?.Invoke( eFailCode.Load_PortHasNotCarrier );
-                //    return 0;
-                //}
+            //{
+            //    loggerPIO.E( "[Port] - Lift Position Check Error" );
+            //    this.OnFailReport?.Invoke( eFailCode.LoadPIOInterlockTimeout );
+            //    return 0; //14
+            //}
 
-                if ( this.refObjects.Conveyor.IsDetectedCenter() )
-            {
-                this.OnFailReport?.Invoke( eFailCode.Load_VehicleHasCarrier );
-                return 0;
-            }
+            //Todo: Sensor Setting 이 후 주석 풀기.
+            //if ( !this.IsLifterDuplication() )
+            //{
+            //    this.OnFailReport?.Invoke( eFailCode.Load_PortHasNotCarrier );
+            //    return 0;
+            //}
 
             PIOClear();
             this.OnPIOStart?.Invoke( true );
@@ -1527,11 +1559,12 @@ namespace VehicleControlSystem.ControlLayer
             this.refObjects.IO.WriteOutputIO( "OUT_PIO_RECEIVABLE", true );
             loggerPIO.I( "[Vehicle] - 4 Receivable" );
 
-            if ( !this.refObjects.IO.WaitChangeInputIO( true, pioTimeout, "IN_PIO_SENDABLE" ) )
+            if ( !this.refObjects.IO.WaitChangeInputIO( true, 10 * ConstUtils.ONE_SECOND, "IN_PIO_SENDABLE" ) )
             {
                 PIOClear();
                 loggerPIO.E( "[Port] - 4 Ready Time Out" );
-                this.OnFailReport?.Invoke( eFailCode.LoadPIOInterlockTimeout );
+                TimerUtils.Once( 1000, this.OnFailReport, eFailCode.LoadPIOInterlockTimeout );
+                //this.OnFailReport?.Invoke( eFailCode.LoadPIOInterlockTimeout );
                 return 0;
             }
             loggerPIO.E( "[Port] - 4 Ready On" );
@@ -1548,7 +1581,8 @@ namespace VehicleControlSystem.ControlLayer
                 this.refObjects.Conveyor.OnOffConveyor( false, true );
                 PIOClear();
                 loggerPIO.E( "[Port] - 5 Sending Run Time Out" );
-                this.OnFailReport?.Invoke( eFailCode.LoadPIOInterlockTimeout );
+                TimerUtils.Once( 1000, this.OnFailReport, eFailCode.LoadPIOInterlockTimeout );
+                //this.OnFailReport?.Invoke( eFailCode.LoadPIOInterlockTimeout );
                 return 0;
             }
             loggerPIO.I( "[Port] - 5 Sending Run On" );
@@ -1564,7 +1598,8 @@ namespace VehicleControlSystem.ControlLayer
                     PIOClear();
                     this.refObjects.Conveyor.OnOffConveyor( false, true );
                     loggerPIO.E( "[Vehicle] Conveyor Wait Time Out" );
-                    this.OnFailReport?.Invoke( eFailCode.LoadPIOInterlockTimeout );
+                    TimerUtils.Once( 1000, this.OnFailReport, eFailCode.LoadPIOInterlockTimeout );
+                    //this.OnFailReport?.Invoke( eFailCode.LoadPIOInterlockTimeout );
 
                     if ( this.refObjects.Conveyor.IsDetectedLoadStart() ) // 감지가 시작 되었으면 이동중 Error 로 판단 설비를 정지 상태로
                         return 10; //Conveyor Moving Timeout
@@ -1663,14 +1698,16 @@ namespace VehicleControlSystem.ControlLayer
 
             if ( !this.refObjects.Conveyor.IsDetectedCenter() )
             {
-                this.OnFailReport?.Invoke( eFailCode.Unload_VehicleHasNotCarrier );
+                TimerUtils.Once( 1000, this.OnFailReport, eFailCode.Unload_VehicleHasNotCarrier );
+                //this.OnFailReport?.Invoke( eFailCode.Unload_VehicleHasNotCarrier );
                 return 0;
             }
 
             if ( !this.refObjects.IO.WaitChangeInputIO( true, 20 * ConstUtils.ONE_SECOND, "IN_LIFTER_POSITION_DETECT" ) )
             {
                 loggerPIO.E( "[Port] - Lift Position Check Error" );
-                this.OnFailReport?.Invoke( eFailCode.UnlaodPIOInterlockTimeout );
+                TimerUtils.Once( 1000, this.OnFailReport, eFailCode.UnlaodPIOInterlockTimeout );
+                //this.OnFailReport?.Invoke( eFailCode.UnlaodPIOInterlockTimeout );
                 return 0;
             }
 
@@ -1684,21 +1721,23 @@ namespace VehicleControlSystem.ControlLayer
             PIOClear();
             this.OnPIOStart?.Invoke( false );
 
-            if ( !this.refObjects.IO.IsOn( "IN_PIO_READY" ) )
+            if ( !this.refObjects.IO.WaitChangeInputIO( true, 5 * ConstUtils.ONE_SECOND, "IN_PIO_READY" ) )
             {
                 loggerPIO.E( "[Port] - 1 Ready not On" );
-                this.OnFailReport?.Invoke( eFailCode.UnlaodPIOInterlockTimeout );
+                TimerUtils.Once( 1000, this.OnFailReport, eFailCode.UnlaodPIOInterlockTimeout );
+                //this.OnFailReport?.Invoke( eFailCode.UnlaodPIOInterlockTimeout );
                 return 0;
             }
 
             this.refObjects.IO.WriteOutputIO( "OUT_PIO_READY", true );
             loggerPIO.I( "[Vehicle] - 1 Ready On" );
 
-            if ( !this.refObjects.IO.WaitChangeInputIO( true, pioTimeout, "IN_PIO_RECEIVE_RUN" ) )
+            if ( !this.refObjects.IO.WaitChangeInputIO( true, 10 * ConstUtils.ONE_SECOND, "IN_PIO_RECEIVE_RUN" ) )
             {
                 PIOClear();
                 loggerPIO.E( "[Port] - 2 Receive CV Run Timeout" );
-                this.OnFailReport?.Invoke( eFailCode.UnlaodPIOInterlockTimeout );
+                TimerUtils.Once( 1000, this.OnFailReport, eFailCode.UnlaodPIOInterlockTimeout );
+                //this.OnFailReport?.Invoke( eFailCode.UnlaodPIOInterlockTimeout );
                 return 0;
             }
             loggerPIO.E( "[Port] - 2 Receive CV Run On" );
@@ -1725,7 +1764,8 @@ namespace VehicleControlSystem.ControlLayer
                     PIOClear();
                     this.refObjects.Conveyor.OnOffConveyor( false, true );
                     loggerPIO.E( "[Port] Conveyor Wait Time Out" );
-                    this.OnFailReport?.Invoke( eFailCode.UnlaodPIOInterlockTimeout );
+                    TimerUtils.Once( 1000, this.OnFailReport, eFailCode.UnlaodPIOInterlockTimeout );
+                    //this.OnFailReport?.Invoke( eFailCode.UnlaodPIOInterlockTimeout );
 
                     if ( this.refObjects.Conveyor.IsDetectedLoadStart() || this.refObjects.Conveyor.IsDetectedCenter() ) //중간에 걸려 있다고 생각해서 알람 처리.
                         return 12; //Conveyor Moving Timeout
@@ -1911,6 +1951,11 @@ namespace VehicleControlSystem.ControlLayer
                     break;
                 case eDataKind.Current:
                     this.BatteryCurrent = (double)obj.Value;
+                    if ( BatteryCurrent > 0 )
+                        this.BatteryChargeState = true;
+                    else
+                        this.BatteryChargeState = false;
+
                     break;
                 case eDataKind.BatteryState:
                     if ( obj.Value == null )
@@ -1920,12 +1965,13 @@ namespace VehicleControlSystem.ControlLayer
                 case eDataKind.ChargeCompleteTime:
                     if ( obj.Value == null /*|| obj.Value <= 0 */)
                         return;
+
                     this.BatteryChargeTime = (double)obj.Value;
 
                     //if ( this.BatteryChargeTime > 0 )
                     //{
                     //    //this.OnCharging?.Invoke();
-                    //    //this.VehicleStateProperty = eVehicleState.Charge;
+                    //    this.VehicleStateProperty = eVehicleState.Charge;
                     //}
                     //else
                     //    //this.OnChargingFull?.Invoke();
@@ -1943,7 +1989,7 @@ namespace VehicleControlSystem.ControlLayer
                         if ( this.autoManager.AutoModeStateProperty != eAutoModeState.Run )
                             return;
 
-                        if ( this.VehicleStateProperty == eVehicleState.Charge || this.IsCharging() )
+                        if ( this.VehicleStateProperty == eVehicleState.Charge || this.IsCharging() || this.BatteryChargeState )
                         {
                             int result = ConstInt.EXECUTE_SUCCESS;
                             result = this.StopBatteryCharge();

+ 6 - 1
Dev/OHV/VehicleControlSystem/Managers/HostManager.cs

@@ -541,7 +541,12 @@ namespace VehicleControlSystem.Managers
         {
             var msg = new OCSMessage();
             msg.Kind = eKind.S;
-            msg.Tag = this.vehicle.CurrentTag.ToString("0000");
+
+            if ( this.vehicle.CurrentTag < 0 )
+                msg.Tag = 0.ToString( "0000" );
+            else
+                msg.Tag = this.vehicle.CurrentTag.ToString( "0000" );
+
             msg.IsSubCode1 = this.vehicle.IsContain;
             msg.IsSubCode2 = vehicle.IsMoving;
             msg.IsSubCode3 = vehicle.IsError;

+ 4 - 4
Dev/OHV/VehicleControlSystem/Managers/Scheduler.cs

@@ -168,11 +168,11 @@ namespace VehicleControlSystem.Managers
 
             if ( this.bMUManager.ReceivedDataDic[eDataKind.SOC].Value <= 30 )
             {
-                //var targetPoint = "2";
-                //Command cmd = new Command() { TargetID = targetPoint, Type = eCommandType.Charging };
-                //cmd.ByWho = eCommandByWho.LocalSystem;
+                var chargePoint = "2";
+                Command chageCmd = new Command() { TargetID = chargePoint, Type = eCommandType.Charging };
+                chageCmd.ByWho = eCommandByWho.LocalSystem;
 
-                //this.AddCommand( cmd );
+                this.AddCommand( chageCmd );
 
                 this.IsCreateDryRunCommand = false;
                 return;

BIN
Dev/OHVDriveLogger/OHVDriveLogger/.vs/OHVDriveLogger/v16/Server/sqlite3/storage.ide-shm


BIN
Dev/OHVDriveLogger/OHVDriveLogger/.vs/OHVDriveLogger/v16/Server/sqlite3/storage.ide-wal


+ 1 - 1
Dev/OHVDriveLogger/OHVDriveLogger/OHVDriveLogger/App.config

@@ -5,7 +5,7 @@
     </startup>
 
 	<appSettings>
-		<add key="VehicleID" value="V01"/>
+		<add key="VehicleID" value="V02"/>
 		<add key="FTPUploadIP" value="192.168.127.200"/>
 		<add key="PLC_IP" value="192.168.0.20"/>
 		<add key="PLC_PORT" value="5000"/>

+ 20 - 17
Dev/OHVDriveLogger/OHVDriveLogger/OHVDriveLogger/Config/log4net.xml

@@ -3,7 +3,7 @@
 	<root name="root">
 		<level value="ALL" />
 		<appender-ref ref="FileAppender" />
-    <!--<appender-ref ref="remotingAppender"/>-->
+		<!--<appender-ref ref="remotingAppender"/>-->
 	</root>
 
 	<logger name="PhysicalCheckup_Front" additivity="false">
@@ -24,27 +24,28 @@
 	•FATAL  •FATAL  •FATAL  •FATAL  •FATAL  •FATAL
 	•OFF    •OFF    •OFF    •OFF    •OFF    •OFF    •OFF
 	-->
-  <appender name="remotingAppender" type="log4net.Appender.RemotingAppender">
-    <!-- The remoting URL to the remoting server object -->
-    <sink value="tcp://172.20.0.198: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">
+	<appender name="remotingAppender" type="log4net.Appender.RemotingAppender">
+		<!-- The remoting URL to the remoting server object -->
+		<sink value="tcp://172.20.0.198: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>
 
-  <appender name="Front_BufferingForwarder" type="log4net.Appender.BufferingForwardingAppender">
+	<appender name="Front_BufferingForwarder" type="log4net.Appender.BufferingForwardingAppender">
 		<bufferSize value="512"/>
 		<lossy value="false"/>
 		<Fix value ="268"/>
 		<appender-ref ref="PhysicalCheckupFileAppender_Front"/>
 	</appender>
+
 	<appender name="Rear_BufferingForwarder" type="log4net.Appender.BufferingForwardingAppender">
 		<bufferSize value="512"/>
 		<lossy value="false"/>
@@ -95,10 +96,11 @@
 	</appender>
 
 	<appender name="DebugFileAppender" type="GSG.NET.Logging.FileAppender, GSG.NET">
-		<filter type="log4net.Filter.LevelRangeFilter">
+		<threshold value="DEBUG"/>
+		<!--<filter type="log4net.Filter.LevelRangeFilter">
 			<param name="LevelMin" value="DEBUG"></param>
 			<param name="LevelMax" value="DEBUG"></param>
-		</filter>
+		</filter>-->
 		<threshold value="DEBUG"/>
 		<file value="C:\LOG\OHV\DEBUG\Vehicle_DEBUG.log" />
 		<appendToFile value="true" />
@@ -111,7 +113,8 @@
 	</appender>
 
 	<appender name="WarnFileAppender" type="GSG.NET.Logging.FileAppender, GSG.NET">
-		<threshold value="WARN"/>
+		<param name="LevelMin" value="WARN"></param>
+		<param name="LevelMax" value="FATAL"></param>
 		<file value="C:\LOG\OHV\Vehicle\Vehicle_WARN.log" />
 		<appendToFile value="true" />
 		<rollingStyle value="Date" />

+ 11 - 3
Dev/OHVDriveLogger/OHVDriveLogger/OHVDriveLogger/FormMain.cs

@@ -117,10 +117,18 @@ namespace OHVDriveLogger
         {
             while ( !this.threadCancel.Canceled )
             {
-                LockUtils.Wait( 20 );
+                try
+                {
+                    LockUtils.Wait( 100 );
+
+                    if ( this.zmq.IsDriveMoving )
+                        this.LoggingStart();
 
-                if ( this.zmq.IsDriveMoving )
-                    this.LoggingStart();
+                }
+                catch ( Exception ex )
+                {
+                    logger.E( ex.StackTrace );
+                }
             }
         }
 

+ 1 - 1
Dev/OHVDriveLogger/OHVDriveLogger/OHVDriveLogger/OHVDriveLogger.csproj

@@ -43,7 +43,7 @@
     <Prefer32Bit>true</Prefer32Bit>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'RRmode|AnyCPU'">
-    <OutputPath>\\192.168.127.10\DriveLogger\</OutputPath>
+    <OutputPath>\\192.168.127.20\DriveLogger\</OutputPath>
     <DefineConstants>TRACE</DefineConstants>
     <Optimize>true</Optimize>
     <DebugType>pdbonly</DebugType>