Browse Source

CPU, RAM, HDD 사용량 표시 변경

SK.Kang 6 years ago
parent
commit
a8ae6a84b0

+ 162 - 0
Dev/OHV/Assambly/GSG.NET.XML

@@ -1572,6 +1572,168 @@
             </summary>
             <returns></returns>
         </member>
+        <member name="T:GSG.NET.OSView.EventLogSpy">
+            <summary>
+            <para>Event 로그를 읽는것이 느려서</para>
+            <para>EntryWritten을 활용하는 방법으로 구현한다.</para>
+            </summary>
+        </member>
+        <member name="E:GSG.NET.OSView.EventLogSpy.OnEntryWritten">
+            <summary/>
+        </member>
+        <member name="T:GSG.NET.OSView.EventLogSpy.LogType">
+            <summary/>
+        </member>
+        <member name="F:GSG.NET.OSView.EventLogSpy.LogType.Application">
+            <summary/>
+        </member>
+        <member name="F:GSG.NET.OSView.EventLogSpy.LogType.System">
+            <summary/>
+        </member>
+        <member name="F:GSG.NET.OSView.EventLogSpy.LogType.Security">
+            <summary/>
+        </member>
+        <member name="F:GSG.NET.OSView.EventLogSpy.LogType.Setup">
+            <summary/>
+        </member>
+        <member name="M:GSG.NET.OSView.EventLogSpy.Watch(GSG.NET.OSView.EventLogSpy.LogType)">
+            <summary/>
+        </member>
+        <member name="M:GSG.NET.OSView.EventLogSpy.Close">
+            <summary/>
+        </member>
+        <member name="M:GSG.NET.OSView.EventLogSpy.WarnOrError(System.Diagnostics.EventLogEntry)">
+            <summary>
+            <para>Waring 또는 에러인지 검사.</para>
+            </summary>
+        </member>
+        <member name="T:GSG.NET.OSView.Mgnt">
+            <summary>
+            Management
+            </summary>
+        </member>
+        <member name="M:GSG.NET.OSView.Mgnt.PrinterNames">
+            <summary/>
+        </member>
+        <member name="M:GSG.NET.OSView.Mgnt.CpuUseRate">
+            <summary>
+            <para>CPU 사용률 % / 100%기준.</para>
+            </summary>
+        </member>
+        <member name="M:GSG.NET.OSView.Mgnt.ProcCpu1UseRate(System.String)">
+            <summary>
+            <para>Process 의 CPU 사용률</para>
+            <para>1 cpu 기준이므로 multi cpu 일 경우 processor count 로 나눠야 한다.</para>
+            </summary>
+        </member>
+        <member name="M:GSG.NET.OSView.Mgnt.ProcCpuUseRate(System.String)">
+            <summary>
+            <para>Logical CPU 기준으로 나눈값</para>
+            </summary>
+        </member>
+        <member name="M:GSG.NET.OSView.Mgnt.ProcMemUseKB(System.String)">
+            <summary>
+            <para>메모리 사용량 KB</para>
+            <para>PrivateMemorySize</para>
+            </summary>
+        </member>
+        <member name="M:GSG.NET.OSView.Mgnt.ProcMemPeakUseKB(System.String)">
+            <summary>
+            <para>Peak 메모리 사용량 KB</para>
+            <para>PrivateMemorySize</para>
+            </summary>
+        </member>
+        <member name="M:GSG.NET.OSView.Mgnt.MemPhysicalKB">
+            <summary>
+            <para>Physical Memory Size KB 단위 추출</para>
+            </summary>
+        </member>
+        <member name="M:GSG.NET.OSView.Mgnt.MemVirtualKB">
+            <summary>
+            <para>Virtual Memory Size KB 단위 추출</para>
+            </summary>
+        </member>
+        <member name="M:GSG.NET.OSView.Mgnt.MemVirtualFreeKB">
+            <summary>
+            Virtual 기준 Free Kb size
+            </summary>
+        </member>
+        <member name="M:GSG.NET.OSView.Mgnt.MemVirtualUseKB">
+            <summary>
+            Virtual 기준 Use KB
+            </summary>
+        </member>
+        <member name="M:GSG.NET.OSView.Mgnt.MemPhysicalFreeKB">
+            <summary>
+            Physical 기준 Free size
+            </summary>
+        </member>
+        <member name="M:GSG.NET.OSView.Mgnt.MemPhysicalUseKB">
+            <summary>
+            Physical 기준 사용량 KB
+            </summary>
+        </member>
+        <member name="M:GSG.NET.OSView.Mgnt.MemPhysicalUseRate">
+            <summary>
+            Physical 기준 100분율
+            </summary>
+        </member>
+        <member name="M:GSG.NET.OSView.Mgnt.OsName">
+            <summary>
+            <para>OS Name 가져오기.</para>
+            </summary>
+        </member>
+        <member name="M:GSG.NET.OSView.Mgnt.CpuCountLogical">
+            <summary>
+            <para>Retrieve Total Logical Cpu Count</para>
+            </summary>
+        </member>
+        <member name="M:GSG.NET.OSView.Mgnt.MemVirtualUseRate">
+            <summary>
+            <para>메모리 사용률 %</para>
+            </summary>
+        </member>
+        <member name="M:GSG.NET.OSView.Mgnt.HddList">
+            <summary>
+            <para>Ready 상태이고, HDD 드라이브만 추출</para>
+            </summary>
+        </member>
+        <member name="M:GSG.NET.OSView.Mgnt.LocalIpList">
+            <summary>
+            <para>Local IP Address 가져오기.</para>
+            </summary>
+        </member>
+        <member name="M:GSG.NET.OSView.Mgnt.MacAddressList">
+            <summary>
+            <para>Local Mac Address 가져오기.</para>
+            </summary>
+        </member>
+        <member name="M:GSG.NET.OSView.Mgnt.Wql(System.String)">
+            <summary>
+            wql: SQL for WMI
+            </summary>
+        </member>
+        <member name="P:GSG.NET.OSView.Mgnt.Is64BitOperatingSystem">
+            <summary>
+            32, 64 bit check
+            </summary>
+        </member>
+        <member name="M:GSG.NET.OSView.Mgnt.GetDotnetVersion">
+            <summary>
+            CLR version retrieve
+            </summary>
+        </member>
+        <member name="M:GSG.NET.OSView.Mgnt.AddFirewall(System.String,System.Int32)">
+            <summary>
+            Tcp 방화벽 등록.
+            </summary>
+        </member>
+        <member name="M:GSG.NET.OSView.Mgnt.ServiceStart(System.String)">
+            <summary/>
+        </member>
+        <member name="M:GSG.NET.OSView.Mgnt.ServiceStop(System.String)">
+            <summary/>
+        </member>
         <member name="T:GSG.NET.Poco">
             <summary>
             POCO(Plain Old CLR Object)

BIN
Dev/OHV/Assambly/GSG.NET.dll


BIN
Dev/OHV/Assambly/GSG.NET.pdb


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

@@ -3,6 +3,7 @@ using System.Threading;
 using System.Windows;
 using CommonServiceLocator;
 using GSG.NET.Logging;
+using GSG.NET.Quartz;
 using GSG.NET.Utils;
 using OHV.Common.Events;
 using OHV.Common.Interfaces;
@@ -42,7 +43,7 @@ namespace OHV.Vehicle
 
             try
             {
-                //QuartzUtils.Init(10);
+                QuartzUtils.Init(10);
                 logger.I(string.Format(string.Empty.PadRight(40, '+') + $" Ver. {AssemblyUtils.GetVersion()} " + string.Empty.PadRight(40, '+')));
 
 

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

@@ -29,14 +29,6 @@
                 </LinearGradientBrush>
             </Grid.Background>
 
-            <StackPanel HorizontalAlignment="Left" VerticalAlignment="Center">
-                <Button Margin="10,0,10,0" Command="{Binding ChangeLanguage}"
-                   Style="{DynamicResource MaterialDesignFloatingActionMiniButton}"     
-                   materialDesign:ShadowAssist.ShadowDepth="Depth5" Background="{Binding OcsBrush, FallbackValue={x:Null}}">
-                    OCS
-                </Button>
-            </StackPanel>
-
             <StackPanel VerticalAlignment="Center" HorizontalAlignment="Center">
                 <TextBlock Style="{StaticResource MaterialDesignHeadline3TextBlock}" HorizontalAlignment="Center" VerticalAlignment="Center" Foreground="White" FontSize="60" FontWeight="Bold">
                 Over Head Vehicle
@@ -207,12 +199,12 @@
 
                         <StackPanel>
                             <Button Margin="0,4,0,0" Height="30" Width="auto" Background="{x:Null}">
-                                <TextBlock HorizontalAlignment="Center"><Run Text="{Binding CPU, StringFormat={}{0:0.0}%}"/></TextBlock>
+                                <TextBlock HorizontalAlignment="Center"><Run Text="{Binding CPU, StringFormat={}{0:0.0} %}"/></TextBlock>
                             </Button>
                             
                             <Button Margin="0,8,0,0" Background="{x:Null}">
                                 <StackPanel>
-                                    <TextBlock Text="{Binding RAM, StringFormat={}{0:0.0} GB}" HorizontalAlignment="Center"/>
+                                    <TextBlock Text="{Binding RAM, StringFormat={}{0:0.0} %}" HorizontalAlignment="Center"/>
                                 </StackPanel>
                             </Button>
                             

+ 29 - 14
Dev/OHV/OHV.Vehicle/Concept/D_MainWindowViewModel.cs

@@ -1,4 +1,5 @@
 using CommonServiceLocator;
+using GSG.NET.Utils;
 using OHV.Common.Events;
 using OHV.Common.Model;
 using OHV.Common.Shareds;
@@ -39,6 +40,7 @@ namespace OHV.Vehicle.Concept
             get { return this._cpu; }
             set { this.SetProperty(ref this._cpu, value); }
         }
+
         private double _totalCPU;
         public double TotalCPU
         {
@@ -49,8 +51,8 @@ namespace OHV.Vehicle.Concept
                 this.SetProperty(ref this._totalCPU, value);
             }
         }
-        public int UsageCPU { get; set; }
 
+        public int UsageCPU { get; set; }
         private double _ram;
         public double RAM
         {
@@ -197,26 +199,36 @@ namespace OHV.Vehicle.Concept
             dateTimer.Tick += (object sender, EventArgs e) =>
             {
                 this.DateTime = DateTime.Now;
-
             };
             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();
+            //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._totalCPU = dti.cpuResult;
+            //this._cDrive = dti.GetCDrive();
 
-            this.SwVersion = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString();
+            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);
+        }
+
+        void QuzOnResourceUsage()
+        {
+            this.CPU = GSG.NET.OSView.Mgnt.CpuUseRate();
+            this.RAM = GSG.NET.OSView.Mgnt.MemPhysicalUseRate();
+
+            var ll = GSG.NET.OSView.Mgnt.HddList();
+            this.CDrive = ll.FirstOrDefault().AvailableFreeSpace / ConstUtils.ONE_GIGA_BYTES;
         }
 
         private void ExecuteStopCommand()
@@ -308,6 +320,9 @@ namespace OHV.Vehicle.Concept
             {
                 var hisAlarm = args.Args as HisAlarm;
                 this.messageController.ShowNotificationView(args.MessageText);
+
+
+
             }
         }
 

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

@@ -87,6 +87,10 @@
     <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="Quartz, Version=1.0.3.2, Culture=neutral, PublicKeyToken=f6b8c98a402cc8a4, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\Assambly\Quartz.dll</HintPath>
+    </Reference>
     <Reference Include="System" />
     <Reference Include="System.ComponentModel.DataAnnotations" />
     <Reference Include="System.Configuration" />

+ 3 - 1
Dev/OHV/VehicleControlSystem/ControlLayer/Conveyor.cs

@@ -14,10 +14,12 @@ namespace VehicleControlSystem.ControlLayer
     {
         static Logger loggerPIO = Logger.GetLogger("PIO");
         IIO iO = null;
+        Vehicle vehicle = null;
 
-        public Conveyor(IIO io)
+        public Conveyor(IIO io, Vehicle vehicle)
         {
             this.iO = io;
+            this.vehicle = vehicle;
         }
 
         int OnOffConveyor(bool isOn, bool isCW = false)

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

@@ -4,6 +4,7 @@ using System.Collections.Generic;
 using System.Linq;
 using System.Threading;
 using GSG.NET.Concurrent;
+using GSG.NET.LINQ;
 using GSG.NET.Logging;
 using GSG.NET.Quartz;
 using GSG.NET.Utils;
@@ -25,6 +26,7 @@ namespace VehicleControlSystem.ControlLayer
     public class Vehicle : ControlObjectBase, IDisposable
     {
         static Logger logger = Logger.GetLogger();
+        static Logger loggerPIO = Logger.GetLogger("PIO");
 
         #region Properties
         private double currentPosition;
@@ -179,7 +181,6 @@ namespace VehicleControlSystem.ControlLayer
         public void Init()
         {
             this.CreateClamp();
-            this.CreateConveyor();
             this.CreateSteering();
 
             ThreadStart();
@@ -367,7 +368,7 @@ namespace VehicleControlSystem.ControlLayer
                 return false;
             }
 
-            result = this.conveyor.PIOAndLoad(sub.TargetID);
+            result = this.PIOAndLoad(sub.TargetID);
             if (result != 0)
             {
                 this.autoManager.ProcessAlarm(result);
@@ -401,7 +402,7 @@ namespace VehicleControlSystem.ControlLayer
                 return false;
             }
 
-            result = this.conveyor.PIOAndUnload(sub.TargetID);
+            result = this.PIOAndUnload(sub.TargetID);
             if (result != 0)
             {
                 this.autoManager.ProcessAlarm(result);
@@ -451,6 +452,256 @@ namespace VehicleControlSystem.ControlLayer
         #endregion
 
         #region Machanical Method
+
+        #region Conveyor
+        int OnOffConveyor(bool isOn, bool isCW = false)
+        {
+            if (IsInverterError())
+                return 16;
+
+            if (isCW)
+                this.iO.OutputOn("OUT_CV_CWCCW");
+            else
+                this.iO.OutputOff("OUT_CV_CWCCW");
+
+            if (isOn)
+                this.iO.OutputOn("OUT_CV_RUN");
+            else
+                this.iO.OutputOff("OUT_CV_RUN");
+
+            return 0;
+        }
+
+        void SetConveyorSpeed(bool IsHight)
+        {
+            if (IsHight)
+                this.iO.WriteOutputIO("OUT_CV_DA", true);
+            else
+                this.iO.WriteOutputIO("OUT_CV_DA", false);
+        }
+
+        /// <summary>
+        /// 입구 감지 로딩시 감속 사용
+        /// </summary>
+        /// <returns></returns>
+        bool IsDetectedLoadStart() => this.iO.IsOn("IN_CV_DETECT_00");
+
+        /// <summary>
+        /// 실물 감지
+        /// </summary>
+        /// <returns></returns>
+        public bool IsDetectedCenter() => this.iO.IsOn("IN_CV_DETECT_01");
+
+        bool IsDetectedLoadStop() => this.iO.IsOn("IN_CV_DETECT_02");
+        bool IsInverterError() => this.iO.IsOn("IN_CV_ERROR");
+        bool IsLifterPositinCheck() => this.iO.IsOn("IN_LIFTER_POSITION_DETECT");
+        bool IsLifterDuplication() => this.iO.IsOn("IN_LIFTER_DUPLICATION_DETECT");
+        bool IsPIOInterLockOn() => this.iO.IsOn("OUT_PIO_INTERLOCK");
+
+        int Load_Carrier()
+        {
+            if (IsDetectedCenter())
+                return 9;
+
+            OnOffConveyor(true, true);
+
+            long sTime = SwUtils.CurrentTimeMillis;
+            while (true)
+            {
+                if (SwUtils.Gt(sTime, 20 * ConstUtils.ONE_SECOND)) //Wait 20Sec
+                {
+                    OnOffConveyor(false, true);
+                    return 10;
+                }
+
+                if (IsDetectedLoadStart())
+                    break;
+            }
+
+            return 0;
+        }
+
+        int UnloadCarrier()
+        {
+            if (!IsDetectedLoadStart())
+                return 11;
+
+            OnOffConveyor(true, true);
+
+            long sTime = SwUtils.CurrentTimeMillis;
+            while (true)
+            {
+                if (SwUtils.Gt(sTime, 20 * ConstUtils.ONE_SECOND)) //Wait 20Sec
+                {
+                    OnOffConveyor(false, true);
+                    return 12;
+                }
+
+                if (!IsDetectedLoadStart())
+                    break;
+            }
+
+            return 0;
+        }
+
+        public int PIOAndLoad(string targetName)
+        {
+            if (this.IsInverterError())
+                return 16;
+
+            if (this.IsLifterPositinCheck())
+                return 14;
+
+            if (this.IsLifterDuplication())
+                return 11;
+
+            PIOClear();
+            loggerPIO.I($"Start Load PIO - [{targetName}]");
+            this.OnPIOStart?.Invoke(true);
+
+            this.iO.WriteOutputIO("OUT_PIO_RECEIVE_RUN", true);
+            loggerPIO.I("[Vehicle] - 4 Receive Run On");
+
+            if (!this.iO.WaitChangeInputIO(true, 1000, "IN_PIO_SENDABLE"))
+            {
+                PIOClear();
+                loggerPIO.E("[Port] - 4 Ready Time Out");
+                return 10;
+            }
+            loggerPIO.E("[Port] - 4 Ready On");
+
+            this.SetConveyorSpeed(true);
+            this.OnOffConveyor(true, true);
+            this.iO.WriteOutputIO("OUT_PIO_RECEIVE_RUN", true);
+            loggerPIO.I("[Vehicle] - Conveyor Run");
+            this.OnConveyorStart?.Invoke(true);
+
+            if (!this.iO.WaitChangeInputIO(true, 1000, "IN_PIO_SEND_RUN"))
+            {
+                this.OnOffConveyor(false, true);
+                PIOClear();
+                loggerPIO.E("[Port] - 5 Sending Run Time Out");
+                return 10;
+            }
+
+            bool isStartDetected = false;
+            var sTime = SwUtils.CurrentTimeMillis;
+            while (true)
+            {
+                if (SwUtils.Gt(sTime, 20 * ConstUtils.ONE_SECOND))
+                {
+                    PIOClear();
+                    this.OnOffConveyor(false, true);
+                    loggerPIO.E("[Vehicle] Conveyor Wait Time Out");
+                    return 10; //Conveyor Moving Timeout
+                }
+
+                if (this.IsDetectedLoadStart() && !isStartDetected)
+                    isStartDetected = true;
+
+                if (!this.IsDetectedLoadStart() && isStartDetected)
+                    this.SetConveyorSpeed(false);
+
+                if (this.IsDetectedLoadStop()) break;
+
+                if (this.IsPIOInterLockOn())
+                {
+                    PIOClear();
+                    this.OnOffConveyor(false); //Stop
+                    loggerPIO.E("[Port] PIO InterLock On ");
+                    return 19; //Conveyor Moving Timeout
+                }
+            }
+
+            if (this.IsDetectedCenter())
+                this.OnCarrierDetected?.Invoke(true);
+
+            this.OnOffConveyor(false); //Stop
+            PIOClear();
+            this.OnConveyorStop?.Invoke(true);
+
+            this.iO.WriteOutputIO("OUT_PIO_RECIVE_COMPLITE", true);
+            this.iO.WriteOutputIO("OUT_PIO_RECIVE_COMPLITE", false, 1000);
+
+            return 0;
+        }
+
+        public int PIOAndUnload(string targetName)
+        {
+            if (this.IsInverterError())
+                return 16;
+
+            if (this.IsLifterDuplication())
+                return 15;
+
+            if (this.IsLifterPositinCheck())
+                return 13;
+
+            PIOClear();
+            loggerPIO.I($"Start Unload PIO - [{targetName}]");
+            this.OnPIOStart?.Invoke(false);
+
+            if (!this.iO.IsOn("IN_PIO_READY"))
+            {
+                loggerPIO.E("[Port] - 1 Ready not On");
+                return 12;
+            }
+
+            this.iO.WriteOutputIO("OUT_PIO_READY", true);
+            loggerPIO.I("[Vehicle] - 1 Ready On");
+
+            if (!this.iO.WaitChangeInputIO(true, 1000, "IN_PIO_RECEIVE_RUN"))
+            {
+                PIOClear();
+                loggerPIO.E("[Port] - 2 Receive CV Run Timeout");
+                return 12;
+            }
+
+            this.iO.WriteOutputIO("", true);
+            loggerPIO.I("[Vehicle] - 2 Send Run On");
+
+            this.SetConveyorSpeed(true);
+            this.OnOffConveyor(true);
+            this.OnConveyorStart?.Invoke(false);
+
+            var sTime = SwUtils.CurrentTimeMillis;
+            while (true)
+            {
+                if (SwUtils.Gt(sTime, 20 * ConstUtils.ONE_SECOND))
+                {
+                    PIOClear();
+                    this.OnOffConveyor(false, true);
+                    loggerPIO.E("[Port] Conveyor Wait Time Out");
+                    return 12; //Conveyor Moving Timeout
+                }
+
+                if (this.iO.IsOn("IN_PIO_RECEIVE_COMPLITE"))
+                    break;
+            }
+
+            if ( !IsDetectedCenter() )
+                this.OnCarrierDetected?.Invoke(false);
+
+            this.OnOffConveyor(false); //Stop
+            this.OnConveyorStop?.Invoke(false);
+            PIOClear();
+
+            this.iO.WriteOutputIO("OUT_PIO_SEND_COMPLITE", true);
+            this.iO.WriteOutputIO("OUT_PIO_SEND_COMPLITE", false, 1000);
+
+            this.OnUnloadComplete?.Invoke();
+
+            return 0;
+        }
+
+        void PIOClear()
+        {
+            string[] pio = { "OUT_PIO_READY", "OUT_PIO_SENDING_RUN", "OUT_PIO_SEND_COMPLITE", "OUT_PIO_RECEIVABLE", "OUT_PIO_RECEIVE_RUN", "OUT_PIO_RECIVE_COMPLITE", "OUT_PIO_INTERLOCK" };
+            pio.FwEach(x => { this.iO.OutputOff(x); });
+        }
+
+        #endregion
+
         #endregion
 
         #region Hardware Create Method
@@ -466,10 +717,6 @@ namespace VehicleControlSystem.ControlLayer
             this.clamp.Init();
         }
 
-        void CreateConveyor()
-        {
-            this.conveyor = new Conveyor(this.iO);
-        }
         #endregion
 
         #region Help Method

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

@@ -44,7 +44,6 @@ namespace VehicleControlSystem
 
         public void Init()
         {
-            QuartzUtils.Init(5);
             QuartzUtils.Invoke("HIS_ALARM", QuartzUtils.GetExpnMinute(1), this.CleanHisAlarm);
 
             //Create IO