Ver código fonte

Merge branch 'master' of http://unque781.synology.me:3000/GSI/OHV

# Conflicts:
#	Dev/OHV/Assambly/OHVConnector.dll
#	Dev/OHV/Assambly/OHVConnector.pdb
#	Dev/OHV/OHV.Module.Interactivity/MessageController.cs
#	Dev/OHV/OHV.Module.Interactivity/OHV.Module.Interactivity.csproj
#	Dev/OHV/OHV.Module.MainViews/Views/UnitViewModel.cs
unque781 6 anos atrás
pai
commit
98c0a2ac04

+ 11 - 4
Dev/Connection/OHVProtocolServer/OHVProtocolServer/OHVProtocolServer.csproj

@@ -34,6 +34,17 @@
     <WarningLevel>4</WarningLevel>
   </PropertyGroup>
   <ItemGroup>
+    <Reference Include="GSG.NET, Version=1.0.0.0, Culture=neutral, PublicKeyToken=807456855d2bd861, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\OHV\Assambly\GSG.NET.dll</HintPath>
+    </Reference>
+    <Reference Include="GSG.NET.WPF">
+      <HintPath>..\..\..\OHV\Assambly\GSG.NET.WPF.dll</HintPath>
+    </Reference>
+    <Reference Include="Quartz, Version=1.0.3.2, Culture=neutral, PublicKeyToken=f6b8c98a402cc8a4, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\OHV\Assambly\Quartz.dll</HintPath>
+    </Reference>
     <Reference Include="System" />
     <Reference Include="System.Data" />
     <Reference Include="System.Xml" />
@@ -94,10 +105,6 @@
     <None Include="App.config" />
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="..\..\..\..\..\GSG\GSG\GSG.NET\GSG.NET.csproj">
-      <Project>{11e12a58-fdbc-444a-90e6-db96b7e98ff4}</Project>
-      <Name>GSG.NET</Name>
-    </ProjectReference>
     <ProjectReference Include="..\OHVConnector\OHVConnector.csproj">
       <Project>{b9a8b13b-518b-4ae4-b8b6-c2684df6608a}</Project>
       <Name>OHVConnector</Name>

+ 12 - 0
Dev/OHV/OHV.Common/Events/MessageEventArgs.cs

@@ -74,6 +74,7 @@ namespace OHV.Common.Events
 
         public enum eAxisControlKind
         {
+            NONE = -1,
             OriginReturn,
             Stop,
             EStop,
@@ -97,8 +98,19 @@ namespace OHV.Common.Events
         {
             LEFT = 0,
             RIGHT,
+            LR_SYNC
         }
 
+        /// <summary>
+        /// ConveyorPopupView -> Move 하기 위해 구분용으로 생성함
+        /// </summary>
+        public enum ePosDir
+        {
+            Lock = 0,
+            UnLock
+        }
+
+        public ePosDir PosDir { get; set; }
         public eAxises Axis { get; set; }
         public eEventDir Dir { get; set; }
         public eAxisControlKind Kind { get; set; }

+ 2 - 0
Dev/OHV/OHV.Common/Shareds/RegionNames.cs

@@ -13,5 +13,7 @@ namespace OHV.Common.Shareds
         public const string VehicleCommandListSub = "VehicleCommandListSub";
 
         public const string VehicleSubCmdList = "VehicleSubCmdList";
+
+        public const string VehicleStatus = "VehicleStatusView";
     }
 }

+ 0 - 4
Dev/OHV/OHV.Module.Interactivity/PopUp/LockServoViewModel.cs

@@ -277,8 +277,6 @@ namespace OHV.Module.Interactivity.PopUp
 
         private void ExecuteServoOffCommand( object obj )
         {
-            //TODO: lib direct 사용할지 ? 
-
             var msg = new AxisControlEventArgs
             {
                 Dir = AxisControlEventArgs.eEventDir.ToBack ,
@@ -296,8 +294,6 @@ namespace OHV.Module.Interactivity.PopUp
 
         private void ExecuteServoOnCommand( object obj )
         {
-            //TODO: lib direct 사용할지 ? Event 처리할지 ?
-
             var msg = new AxisControlEventArgs
             {
                 Dir = AxisControlEventArgs.eEventDir.ToBack ,

+ 3 - 1
Dev/OHV/OHV.Module.ListViews/SubViews/VehicleCommandDeleteView.xaml

@@ -5,7 +5,9 @@
              xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
              xmlns:local="clr-namespace:OHV.Module.ListViews.SubViews"
              mc:Ignorable="d" 
-             d:DesignHeight="450" d:DesignWidth="800">
+             d:DesignHeight="450" d:DesignWidth="800"
+             Background="#263238">
+    
     <Grid>
             
     </Grid>

+ 0 - 1
Dev/OHV/OHV.Module.MainViews/MainViewModules.cs

@@ -14,7 +14,6 @@ namespace OHV.Module.MainViews
 {
     public class MainViewModules : IModule
     {
-
         public void OnInitialized(IContainerProvider containerProvider)
         {
             /* view model assign*/

+ 1 - 0
Dev/OHV/OHV.Module.MainViews/Views/AutoView.xaml

@@ -27,6 +27,7 @@
             <GridSplitter Height="3" VerticalAlignment="Bottom" HorizontalAlignment="Stretch" Background="Gray"></GridSplitter>
             <ContentControl Grid.Row="1" prism:RegionManager.RegionName="{x:Static OHVCommonShareds:RegionNames.VehicleSubCmdList}" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Width="auto" Height="auto"/>
             <GridSplitter Grid.Row="1" Height="3" VerticalAlignment="Bottom" HorizontalAlignment="Stretch" Background="Gray"></GridSplitter>
+            <ContentControl Grid.Row="2" prism:RegionManager.RegionName="{x:Static OHVCommonShareds:RegionNames.VehicleStatus}" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Width="auto" Height="auto"/>
         </Grid>
 
     </Grid>

+ 5 - 5
Dev/OHV/OHV.Module.MainViews/Views/UnitView.xaml

@@ -117,17 +117,17 @@
                             </StackPanel>
                         </Button>
 
-                        <!--<Button HorizontalAlignment="Stretch"
+                        <Button HorizontalAlignment="Stretch"
                             Style="{StaticResource MaterialDesignRaisedButton}"
                             Margin="20"
                             materialDesign:ButtonAssist.CornerRadius="20"
-                            Command="{Binding OcsPopup}"
+                            Command="{Binding ConveyorPopup}"
                             Height="150" Width="220">
                             <StackPanel>
-                                <materialDesign:PackIcon Kind="NetworkOutline" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Width="auto" Height="100"/>
-                                <TextBlock FontSize="30" Text="OCS" VerticalAlignment="Stretch" HorizontalAlignment="Center"/>
+                                <materialDesign:PackIcon Kind="ElevatorUp" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Width="auto" Height="100"/>
+                                <TextBlock FontSize="30" Text="Conveyor" VerticalAlignment="Stretch" HorizontalAlignment="Center"/>
                             </StackPanel>
-                        </Button>-->
+                        </Button>
                     </StackPanel>
                 </Grid>
             </Grid>

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

@@ -2,7 +2,7 @@
              xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
              xmlns:local="clr-namespace:OHV.Vehicle"
-                          xmlns:prism="http://prismlibrary.com/"
+             xmlns:prism="http://prismlibrary.com/"
              Startup="Application_Startup" Exit="Application_Exit">
     <Application.Resources>
         <ResourceDictionary>

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

@@ -130,6 +130,7 @@ namespace OHV.Vehicle
             moduleCatalog.AddModule(typeof(OHV.Module.MainViews.MainViewModules));
             moduleCatalog.AddModule(typeof(OHV.Module.Interactivity.MessageController));
             moduleCatalog.AddModule(typeof(OHV.Module.ListViews.ListViewController));
+            moduleCatalog.AddModule( typeof( OHV.Module.Status.StatusViewModules ) );
         }
 
     }

+ 24 - 23
Dev/OHV/OHV.Vehicle/Concept/D_MainWindow.xaml

@@ -114,8 +114,8 @@
                 <Grid.RowDefinitions>
                     <RowDefinition/>
                     <RowDefinition/>
-                    <RowDefinition/>
-                    <RowDefinition/>
+                    <RowDefinition Height="140"/>
+                    <RowDefinition Height="110"/>
                     <RowDefinition/>
                 </Grid.RowDefinitions>
 
@@ -132,7 +132,7 @@
                                     <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Text="Buzzer Stop" FontSize="15"/>
                                 </StackPanel>
                             </Button>
-                            
+
                             <Button Margin="15" Width="200" Height="50"
                                     Command="{Binding EmergencyStopCommand}"
                                     CommandParameter="Emergency">
@@ -141,7 +141,7 @@
                                     <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Text="Emergency Stop" FontSize="15"/>
                                 </StackPanel>
                             </Button>
-                            
+
                         </StackPanel>
                     </StackPanel>
                 </Grid>
@@ -154,21 +154,6 @@
                             <Button Content="Vehicle ID" Margin="3" Background="{x:Null}"/>
                             <Button Content="Vehicle IP" Margin="3" Background="{x:Null}"/>
                             <Button Content="OCS IP" Margin="3" Background="{x:Null}"/>
-                        </StackPanel>
-
-                        <StackPanel Orientation="Vertical" VerticalAlignment="Center" HorizontalAlignment="Center">
-                            <Button Content="{Binding VehicleID, FallbackValue=VM00001}" Margin="3" Background="{x:Null}"/>
-                            <Button Content="{Binding VehicleIP, FallbackValue=127.0.0.1}" Margin="3" Background="{x:Null}"/>
-                            <Button Content="{Binding OcsIP, FallbackValue=192.168.0.10}" Margin="3" Background="{x:Null}"/>
-                        </StackPanel>
-                    </StackPanel>
-                </Grid>
-
-                <Grid Grid.Row="2">
-                    <Border Margin="5" BorderBrush="#FF00FFD3" BorderThickness="2">
-                    </Border>
-                    <StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center">
-                        <StackPanel Orientation="Vertical" VerticalAlignment="Center" HorizontalAlignment="Center">
                             <Button Content="Version" Margin="3" Background="{x:Null}"/>
                             <Button Margin="3" Height="50" Background="{x:Null}">
                                 <StackPanel>
@@ -179,6 +164,9 @@
                         </StackPanel>
 
                         <StackPanel Orientation="Vertical" VerticalAlignment="Center" HorizontalAlignment="Center">
+                            <Button Content="{Binding VehicleID, FallbackValue=VM00001}" Margin="3" Background="{x:Null}"/>
+                            <Button Content="{Binding VehicleIP, FallbackValue=127.0.0.1}" Margin="3" Background="{x:Null}"/>
+                            <Button Content="{Binding OcsIP, FallbackValue=192.168.0.10}" Margin="3" Background="{x:Null}"/>
                             <Button Content="{Binding SwVersion, FallbackValue=OHV.1.0.0.1}" Margin="3" Background="{x:Null}"/>
                             <Button Height="50" Margin="3" Background="{x:Null}">
                                 <TextBlock Text="{Binding LastBuildedTime, FallbackValue=2020-03-09 14:53:06, StringFormat=' \{0:yyyy-MM-dd HH:mm:ss\}'}"/>
@@ -187,7 +175,7 @@
                     </StackPanel>
                 </Grid>
 
-                <Grid Grid.Row="3">
+                <Grid Grid.Row="2">
                     <Border Margin="5" BorderBrush="#FF00FFD3" BorderThickness="2">
                     </Border>
                     <StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center">
@@ -201,23 +189,36 @@
                             <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>
                             </Button>
-                            
+
                             <Button Margin="0,8,0,0" Background="{x:Null}">
                                 <StackPanel>
                                     <TextBlock Text="{Binding RAM, StringFormat={}{0:0.0} %}" HorizontalAlignment="Center"/>
                                 </StackPanel>
                             </Button>
-                            
+
                             <Button Margin="0,5,0,0" Background="{x:Null}">
                                 <StackPanel>
                                     <TextBlock Text="{Binding CDrive, StringFormat={}{0:0} GB}" HorizontalAlignment="Center"/>
                                 </StackPanel>
                             </Button>
-                            
+
                         </StackPanel>
                     </StackPanel>
                 </Grid>
 
+                <Grid Grid.Row="3">
+                    <Border Margin="5" BorderBrush="#FF00FFD3" BorderThickness="2">
+                    </Border>
+                    <StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center">
+                        <Button Margin="5" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Height="60" Width="250" Command="{Binding AlarmResetCommand}">
+                            <StackPanel Orientation="Horizontal">
+                                <materialDesign:PackIcon Kind="CircleArrows" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Height="40" Width="auto" Margin="0,0,10,0" Background="DarkRed"/>
+                                <TextBlock Text="Alarm Reset" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="30"/>
+                            </StackPanel>
+                        </Button>
+                    </StackPanel>
+                </Grid>
+
                 <DockPanel Grid.Row="4">
                     <Border BorderBrush="#FF00FFD3" BorderThickness="2" Margin="5">
                         <StackPanel Orientation="Vertical" VerticalAlignment="Center" HorizontalAlignment="Center">

+ 10 - 4
Dev/OHV/OHV.Vehicle/Concept/D_MainWindowViewModel.cs

@@ -155,6 +155,7 @@ namespace OHV.Vehicle.Concept
 
         public ICommand StartCommand { get; set; }
         public ICommand StopCommand { get; set; }
+        public ICommand AlarmResetCommand { get; set; }
 
         IRegionManager regionManager;
         public Common.Events.HostConnectedEventArgs.eConnectedState State { get; set; }
@@ -194,6 +195,7 @@ namespace OHV.Vehicle.Concept
             this.ChangeLanguage = new DelegateCommand(Execte_ChangeLanguage);
             this.StartCommand = new DelegateCommand(ExecuteStartCommand);
             this.StopCommand = new DelegateCommand(ExecuteStopCommand);
+            this.AlarmResetCommand = new DelegateCommand( ExecuteAlarmResetCommand);
 
             DispatcherTimer dateTimer = new DispatcherTimer();
             dateTimer.Tick += (object sender, EventArgs e) =>
@@ -231,6 +233,10 @@ namespace OHV.Vehicle.Concept
             this.CDrive = ll.FirstOrDefault().AvailableFreeSpace / ConstUtils.ONE_GIGA_BYTES;
         }
 
+        private void ExecuteAlarmResetCommand( )
+        {
+        }
+
         private void ExecuteStopCommand()
         {
             this.messageController.ShowConfirmationPopupView("Request Vehicle Auto Mode ?", r =>
@@ -279,10 +285,10 @@ namespace OHV.Vehicle.Concept
         private void ExecuteSystemOffCommand()
         {
             this.messageController.ShowConfirmationPopupView("System ShutDown ?", r =>
-          {
-              if (r.Result == ButtonResult.OK)
-                  App.Current.Shutdown();
-          });
+              {
+                  if (r.Result == ButtonResult.OK)
+                      App.Current.Shutdown();
+              });
         }
 
         private void Navigate(object obj)

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

@@ -245,6 +245,10 @@
       <Project>{cf748e61-69c2-4dec-a9ec-755b6999077e}</Project>
       <Name>OHV.Module.Monitoring</Name>
     </ProjectReference>
+    <ProjectReference Include="..\OHV.Module.Status\OHV.Module.Status.csproj">
+      <Project>{d00450d6-de54-4584-a377-7aa5d5964d2c}</Project>
+      <Name>OHV.Module.Status</Name>
+    </ProjectReference>
     <ProjectReference Include="..\OHV.SqliteDAL\OHV.SqliteDAL.csproj">
       <Project>{122d81c8-9ab9-4ced-80d2-9c4f2f9deb4c}</Project>
       <Name>OHV.SqliteDAL</Name>

+ 7 - 0
Dev/OHV/OHV.sln

@@ -43,6 +43,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OHV.LanguageHelper", "OHV.L
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OHV.Module.ListViews", "OHV.Module.ListViews\OHV.Module.ListViews.csproj", "{0043B4EC-A651-401C-9845-57A7C7576E28}"
 EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OHV.Module.Status", "OHV.Module.Status\OHV.Module.Status.csproj", "{D00450D6-DE54-4584-A377-7AA5D5964D2C}"
+EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Any CPU = Debug|Any CPU
@@ -105,6 +107,10 @@ Global
 		{0043B4EC-A651-401C-9845-57A7C7576E28}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{0043B4EC-A651-401C-9845-57A7C7576E28}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{0043B4EC-A651-401C-9845-57A7C7576E28}.Release|Any CPU.Build.0 = Release|Any CPU
+		{D00450D6-DE54-4584-A377-7AA5D5964D2C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{D00450D6-DE54-4584-A377-7AA5D5964D2C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{D00450D6-DE54-4584-A377-7AA5D5964D2C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{D00450D6-DE54-4584-A377-7AA5D5964D2C}.Release|Any CPU.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
@@ -124,6 +130,7 @@ Global
 		{D6402D97-2206-4D55-8097-8DA9A01568CB} = {6C7A1445-7F2F-46C4-9AAD-AEB739F9BD2D}
 		{712D75B5-89DD-4064-BC4B-2F9D9F157604} = {B2DE533E-C8A8-41CD-97CB-E88905233610}
 		{0043B4EC-A651-401C-9845-57A7C7576E28} = {6C7A1445-7F2F-46C4-9AAD-AEB739F9BD2D}
+		{D00450D6-DE54-4584-A377-7AA5D5964D2C} = {6C7A1445-7F2F-46C4-9AAD-AEB739F9BD2D}
 	EndGlobalSection
 	GlobalSection(ExtensibilityGlobals) = postSolution
 		SolutionGuid = {2222F9E2-CBEF-4156-9636-5DF54ECDDA89}

+ 10 - 3
Dev/OHV/VehicleControlSystem/ControlLayer/Clamp.cs

@@ -42,16 +42,17 @@ namespace VehicleControlSystem.ControlLayer
         {
             if (args.Dir == AxisControlEventArgs.eEventDir.ToBack)
             {
-                switch (args.Kind)
+                switch ( args.Kind )
                 {
                     case AxisControlEventArgs.eAxisControlKind.Stop:
                         break;
                     case AxisControlEventArgs.eAxisControlKind.EStop:
                         break;
                     case AxisControlEventArgs.eAxisControlKind.Move:
+                        this.ReqOrderByMove( args );
                         break;
                     case AxisControlEventArgs.eAxisControlKind.Jog:
-                        this.ReqJog(args);
+                        this.ReqJog( args );
                         break;
                     case AxisControlEventArgs.eAxisControlKind.CurrentPosition:
                         break;
@@ -69,7 +70,7 @@ namespace VehicleControlSystem.ControlLayer
                         this.taskCancel.WaitAll();
                         break;
                     case AxisControlEventArgs.eAxisControlKind.OriginReturn:
-                        this.ReqOriginReturn(args);
+                        this.ReqOriginReturn( args );
                         break;
                     case AxisControlEventArgs.eAxisControlKind.FaultReset:
                         this.ReqFaultReset( args );
@@ -191,6 +192,12 @@ namespace VehicleControlSystem.ControlLayer
 
             this.PublishEvent(msg);
         }
+
+        void ReqOrderByMove( AxisControlEventArgs arg )
+        {
+            /*Lock & UnLock Manual 동시에 Move 사용*/
+        }
+
         #endregion
 
         void CreateAxis()

BIN
Dev/SerialModule/BatteryTabos/BatteryTabos/.vs/BatteryTabos/v16/Server/sqlite3/storage.ide


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


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


+ 4 - 3
Dev/SerialModule/BatteryTabos/BatteryTabos/BatteryCommTest/MainWindow.xaml.cs

@@ -1,6 +1,7 @@
 using BatteryTabos;
 using Microsoft.VisualStudio.TestTools.UnitTesting;
 using System.Windows;
+using static BatteryTabos.Manager;
 
 namespace BatteryCommTest
 {
@@ -14,14 +15,14 @@ namespace BatteryCommTest
         {
             InitializeComponent();
 
-            this.tabos = new Manager("COM3");
+            this.tabos = new Manager( "COM3" );
         }
 
         private void SerialOpen_Click( object sender , RoutedEventArgs e )
         {
             this.tabos.Open();
         }
-         
+
         private void SerialClose_Click( object sender , RoutedEventArgs e )
         {
             this.tabos.Close();
@@ -29,7 +30,7 @@ namespace BatteryCommTest
 
         private void WriteToByte_Click( object sender , RoutedEventArgs e )
         {
-            this.tabos.WriteToByte();
+            this.tabos.WriteToByte( ePacketType.VCSST );
         }
 
         private void WriteToString_Click( object sender , RoutedEventArgs e )

+ 72 - 55
Dev/SerialModule/BatteryTabos/BatteryTabos/BatteryTabos/Manager.cs

@@ -15,7 +15,7 @@ namespace BatteryTabos
         #region Total Packet Data
         readonly byte StartSentence1 = 0xAF;
         readonly byte StartSentence2 = 0xFA;
-        readonly byte Address = 0x61;
+        readonly byte Address = 0x60;
         readonly byte Length = 0x05;
         readonly byte ReqCommand = 0x01;
         readonly byte Order = 0x60;
@@ -30,6 +30,13 @@ namespace BatteryTabos
         readonly byte BatteryDataErrorCommand = 0x1F;
         #endregion
 
+        public enum ePacketType
+        {
+            VCSST = 0, // Voltage, Current, Soc, State
+            SCTDCT,    // Soh, ChargeTime, DisChargeTime
+        }
+        public ePacketType packetType { get; set; }
+
         Rs232c battery;
         Config _config { get; set; }
 
@@ -44,34 +51,13 @@ namespace BatteryTabos
             get { return battery.serial.IsOpen; }
         }
 
-        byte[] pp;
-        string pk;
+        byte[] packet;
+
         public Manager( string _com )
         {
             this._config = new Config();
 
-            /*Test ComPort*/
             this.battery = new Rs232c( _com );
-            var s = StartSentence1 + StartSentence2;
-            var e = EndSentence1 + EndSentence2;
-
-            string p = s.ToString()+ Address.ToString()+Length.ToString()+ReqCommand.ToString()+Order.ToString()+Kind1.ToString()+Kind2.ToString()+_CheckSum.ToString() + e.ToString();
-            pk = p;
-            //this._allpacket = new byte[] { s , Address , Length , ReqCommand , Order , Kind1 , Kind2 , _CheckSum , e };
-
-            pp = new byte[ 11 ];
-            pp[ 0 ] = 0xAF;
-            pp[ 1 ] = 0xFA;
-            pp[ 2 ] = 0x61;
-            pp[ 3 ] = 0x05;
-            pp[ 4 ] = 0x01;
-            pp[ 5 ] = 0x61;
-            pp[ 6 ] = 0x30;
-            pp[ 7 ] = 0x07;
-            pp[ 8 ] = 0x17;//CheckSum( pp );
-            pp[ 9 ] = 0xAF;
-            pp[ 10 ] = 0xA0;
-
 
             /*event Thread Pull Start*/
             QW = ThreadUtils.Invoke( QueWorker );
@@ -112,12 +98,12 @@ namespace BatteryTabos
         }
 
         private void Receive( object sender , SerialDataReceivedEventArgs e )
-        {
+        { 
             try
             {
                 if ( this.battery.serial.IsOpen && this.battery.serial != null )
                 {
-                    var recv = new byte[ this.battery.serial.BytesToRead ];
+                    var recv = new Byte[ this.battery.serial.BytesToRead ];
                     this.battery.serial.Read( recv , 0 , recv.Length );
                     ByteParse( recv );
 
@@ -127,42 +113,30 @@ namespace BatteryTabos
             catch ( Exception ex ) { }
         }
 
-        private void ByteParse( byte[] data )
+        private void ByteParse( Byte[] data )
         {
             //var rt = CheckSum(data);
             //if(rt){}
 
-            var stvol = BitConverter.ToString( data , 6 , 2 );
-            var _voltage = Int32.Parse( stvol , System.Globalization.NumberStyles.HexNumber ) * 0.01;
+            var V = ( (int)data[6]*256 + (int)data[7] ) * 0.01;
 
-            /*-32768 ~ +32767*/
-            var stcur = BitConverter.ToString( data , 8 , 2 );
-            var _current = Convert.ToInt16( stcur , 16 ) * 0.01;
+            var A = ( data[ 8 ] * 256 + data[ 9 ] ) * 0.01;
 
-            var stsoc = BitConverter.ToString( data , 10 , 2 );
-            var _soc = Int32.Parse( stvol , System.Globalization.NumberStyles.HexNumber ) * 1;
+            var SOC = ( data[ 10 ] * 256 + data[ 11 ] );
 
-            var stbr = BitConverter.ToString( data , 12 , 2 );
-            var _batteryStatus = Int32.Parse( stvol , System.Globalization.NumberStyles.HexNumber );
+            var B = ( data[ 12 ] * 256 + data[ 13 ] );
 
-            var stct = BitConverter.ToString( data , 14 , 2 );
-            var _chargeTime = Int32.Parse( stvol , System.Globalization.NumberStyles.HexNumber ) * 1;
+            var CT = ( data[ 14 ] * 256 + data[ 15 ] );
 
-            var stdct = BitConverter.ToString( data , 16 , 2 );
-            var _disChargeTime = Int32.Parse( stvol , System.Globalization.NumberStyles.HexNumber ) * 1;
+            var DCT = ( data[ 16 ] * 256 + data[ 17 ] );
 
-            /*-32768 ~ +32767*/
-            var sttp = BitConverter.ToString( data , 18 , 2 );
-            var _temperature = Convert.ToInt16( sttp , 16 ) * 0.01;
+            var T = ( data[ 18 ] * 256 + data[ 19 ] ) * 0.1;
 
-            var stsoh = BitConverter.ToString( data , 20 , 2 );
-            var _soh = Int32.Parse( stvol , System.Globalization.NumberStyles.HexNumber ) * 1;
+            var SOH = ( data[ 20 ] * 256 + data[ 21 ] );
 
-            var stps = BitConverter.ToString( data , 22 , 2 );
-            var _residualcapacity = Int32.Parse( stvol , System.Globalization.NumberStyles.HexNumber ) * 0.01;
+            var Cap = ( data[ 22 ] * 256 + data[ 23 ] ) * 0.01;
 
-            var stpe = BitConverter.ToString( data , 24 , 2 );
-            var _residualEnergy = Int32.Parse( stvol , System.Globalization.NumberStyles.HexNumber ) * 0.1;
+            var E = ( data[ 24 ] * 256 + data[ 25 ] ) * 0.1;
         }
 
         private void QueWorker( )
@@ -191,16 +165,24 @@ namespace BatteryTabos
             }
         }
 
-        public void WriteToByte( /*byte[] _packet*/ )
+        public void WriteToByte( ePacketType packetType )
         {
             try
             {
                 if ( this.IsOpen && this.battery.serial != null )
                 {
-                    /*byte*/
-                    //this.battery.serial.Write( _packet , 0 , _packet.Length );
-                    //this.battery.serial.Write( _allpacket , 0 , _allpacket.Length );
-                    this.battery.serial.Write( pp , 0 , pp.Length );
+                    byte[] _data = null;
+                    switch ( packetType )
+                    {
+                        case ePacketType.VCSST:
+                            _data = OrderToInfomation();
+                            break;
+                        case ePacketType.SCTDCT:
+                            _data = OrderToCharging();
+                            break;
+                    }
+                    
+                    this.battery.serial.Write( _data , 0 , _data.Length );
 
                     System.Diagnostics.Debug.WriteLine( $"[Serial] - Write : {_allpacket.ToString()} -" );
                 }
@@ -208,6 +190,42 @@ namespace BatteryTabos
             catch ( Exception ex ) { }
         }
 
+        private byte[] OrderToInfomation()
+        {
+            packet = new byte[ 11 ];
+            packet[ 0 ] = 0xAF;
+            packet[ 1 ] = 0xFA;
+            packet[ 2 ] = 0x61; //addr
+            packet[ 3 ] = 0x05;
+            packet[ 4 ] = 0x01;
+            packet[ 5 ] = 0x61;
+            packet[ 6 ] = 0x4F; // kind 1
+            packet[ 7 ] = 0x00; // kind 2
+            packet[ 8 ] = 0x17; //Checksum();
+            packet[ 9 ] = 0xAF;
+            packet[ 10 ] = 0xA0;
+
+            return packet;
+        }
+
+        private byte[] OrderToCharging()
+        {
+            packet = new byte[ 11 ];
+            packet[ 0 ] = 0xAF;
+            packet[ 1 ] = 0xFA;
+            packet[ 2 ] = 0x61; //addr
+            packet[ 3 ] = 0x05;
+            packet[ 4 ] = 0x01;
+            packet[ 5 ] = 0x61; //addr
+            packet[ 6 ] = 0x30; // kind 1
+            packet[ 7 ] = 0x07; // kind 2
+            packet[ 8 ] = 0x17; //0x4E; //0x17;//CheckSum( pp );
+            packet[ 9 ] = 0xAF;
+            packet[ 10 ] = 0xA0;
+
+            return packet;
+        }
+
         public void WriteToString( /*string _packet*/ )
         {
             //var _packet = Encoding.Default.GetString( _allpacket );
@@ -216,7 +234,6 @@ namespace BatteryTabos
                 if ( this.IsOpen )
                 {
                     //this.battery.serial.Write( _packet );
-                    this.battery.serial.Write( pk );
                 }
             }
             catch ( Exception ex ) { throw new Exception(); }