ソースを参照

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

# Conflicts:
#	Dev/OHV/OutRelese/OHV.LanguageHelper.dll
#	Dev/OHV/OutRelese/OHV.LanguageHelper.pdb
#	Dev/OHV/OutRelese/OHV.Module.Monitoring.dll
#	Dev/OHV/OutRelese/OHV.Module.Monitoring.pdb
#	Dev/OHV/OutRelese/VehicleControlSystem.pdb
SK.Kang 6 年 前
コミット
b594d6a711
24 ファイル変更914 行追加257 行削除
  1. 1 1
      Dev/OHV/OHV.Common/Model/Alarm.cs
  2. 4 0
      Dev/OHV/OHV.Module.Interactivity/OHV.Module.Interactivity.csproj
  3. 36 11
      Dev/OHV/OHV.Module.Interactivity/PopUp/InOutControlView.xaml
  4. 21 3
      Dev/OHV/OHV.Module.Interactivity/PopUp/InOutView.xaml
  5. 12 1
      Dev/OHV/OHV.Module.Interactivity/PopUp/InOutView.xaml.cs
  6. 45 3
      Dev/OHV/OHV.Module.Interactivity/PopUp/InOutViewModel.cs
  7. 76 73
      Dev/OHV/OHV.Module.Interactivity/PopUp/OpticalReadingConfigView.xaml
  8. 98 1
      Dev/OHV/OHV.Module.Interactivity/PopUp/OpticalReadingConfigViewModel.cs
  9. 1 1
      Dev/OHV/OHV.Module.Interactivity/PopUp/ServoConfigView.xaml.cs
  10. 2 0
      Dev/OHV/OHV.Module.MainViews/MainViewModules.cs
  11. 10 0
      Dev/OHV/OHV.Module.MainViews/OHV.Module.MainViews.csproj
  12. 140 0
      Dev/OHV/OHV.Module.MainViews/Views/HistoryView.xaml
  13. 37 0
      Dev/OHV/OHV.Module.MainViews/Views/HistoryView.xaml.cs
  14. 32 0
      Dev/OHV/OHV.Module.MainViews/Views/HistoryViewModel.cs
  15. 95 42
      Dev/OHV/OHV.Module.MainViews/Views/TeachView.xaml
  16. 2 1
      Dev/OHV/OHV.Module.MainViews/Views/TeachView.xaml.cs
  17. 189 83
      Dev/OHV/OHV.Module.MainViews/Views/UnitView.xaml
  18. 3 2
      Dev/OHV/OHV.Vehicle/Concept/AnimatedSplashScreenWindow.xaml
  19. 40 30
      Dev/OHV/OHV.Vehicle/Concept/D_MainWindow.xaml
  20. 17 0
      Dev/OHV/OHV.Vehicle/Concept/D_MainWindowViewModel.cs
  21. 47 0
      Dev/OHV/OHV.Vehicle/Helper/AssemblyInfo.cs
  22. 0 0
      Dev/OHV/OHV.Vehicle/Helper/DeskTopInfo.cs
  23. 3 2
      Dev/OHV/OHV.Vehicle/OHV.Vehicle.csproj
  24. 3 3
      Dev/OHV/OHV.Vehicle/Properties/AssemblyInfo.cs

+ 1 - 1
Dev/OHV/OHV.Common/Model/Alarm.cs

@@ -16,7 +16,7 @@ namespace OHV.Common.Model
 
         public string Name { get; set; }
         public string Text { get; set; }
-        public string Decription { get; set; }
+        public string Description { get; set; }
         public string Solution { get; set; }
         public eAlarmLevel Level { get; set; }
         public eAlarmKind Kind { get; set; }

+ 4 - 0
Dev/OHV/OHV.Module.Interactivity/OHV.Module.Interactivity.csproj

@@ -208,6 +208,10 @@
       <Project>{712d75b5-89dd-4064-bc4b-2f9d9f157604}</Project>
       <Name>OHV.LanguageHelper</Name>
     </ProjectReference>
+    <ProjectReference Include="..\OHV.Module.Monitoring\OHV.Module.Monitoring.csproj">
+      <Project>{CF748E61-69C2-4DEC-A9EC-755B6999077E}</Project>
+      <Name>OHV.Module.Monitoring</Name>
+    </ProjectReference>
     <ProjectReference Include="..\OHV.SqliteDAL\OHV.SqliteDAL.csproj">
       <Project>{122D81C8-9AB9-4CED-80D2-9C4F2F9DEB4C}</Project>
       <Name>OHV.SqliteDAL</Name>

+ 36 - 11
Dev/OHV/OHV.Module.Interactivity/PopUp/InOutControlView.xaml

@@ -68,10 +68,27 @@
                     <StackPanel Orientation="Vertical">
                         <Button Margin="5" Content="PIO" Background="{x:Null}"
                                 Foreground="Orange"/>
-                        <Button Margin="5" Content="Start Req" Command="{Binding OutPutCommand}"/>
-                        <Button Margin="5" Content="Load Req" Command="{Binding OutPutCommand}"/>
-                        <Button Margin="5" Content="UnLoad Req" Command="{Binding OutPutCommand}"/>
-                        <Button Margin="5" Content="Complite Req" Command="{Binding OutPutCommand}"/>
+                        <Button Margin="5" Content="Sensor On Off" 
+                                Command="{Binding OutPutCommand}" 
+                                CommandParameter="OUT_PIO_SENSOR_ONOFF"/>
+                        <Button Margin="5" Content="Ready" 
+                                Command="{Binding OutPutCommand}" 
+                                CommandParameter="OUT_PIO_READY"/>
+                        <Button Margin="5" Content="Send Run" 
+                                Command="{Binding OutPutCommand}" 
+                                CommandParameter="OUT_PIO_SENDING_RUN"/>
+                        <Button Margin="5" Content="Send Complete" 
+                                Command="{Binding OutPutCommand}" 
+                                CommandParameter="OUT_PIO_SEND_COMPLITE"/>
+                        <Button Margin="5" Content="Receivable" 
+                                Command="{Binding OutPutCommand}" 
+                                CommandParameter="OUT_PIO_RECEIVABLE"/>
+                        <Button Margin="5" Content="Receive Run" 
+                                Command="{Binding OutPutCommand}" 
+                                CommandParameter="OUT_PIO_RECEIVE_RUN"/>
+                        <Button Margin="5" Content="Receive Complete" 
+                                Command="{Binding OutPutCommand}" 
+                                CommandParameter="OUT_PIO_RECIVE_COMPLITE"/>
                     </StackPanel>
                 </Grid>
                 
@@ -80,11 +97,15 @@
                     <StackPanel Orientation="Vertical">
                         <Button Margin="5" Content="Steering" Background="{x:Null}"
                                 Foreground="Orange"/>
-                        <Button Margin="5" Content="DA-1 Set" Command="{Binding OutPutCommand}"/>
-                        <Button Margin="5" Content="DA-2 Set" Command="{Binding OutPutCommand}"/>
-                        <Button Margin="5" Content="DA-3 Set" Command="{Binding OutPutCommand}"/>
-                        <Button Margin="5" Content="C W" Command="{Binding OutPutCommand}"/>
-                        <Button Margin="5" Content="C C W" Command="{Binding OutPutCommand}"/>
+                        <Button Margin="5" Content="DA-1 Set" 
+                                Command="{Binding OutPutCommand}" 
+                                CommandParameter="OUT_CV_DA"/>
+                        <Button Margin="5" Content="DA-2 Set" 
+                                Command="{Binding OutPutCommand}" 
+                                CommandParameter="OUT_F_STEERING_DA"/>
+                        <Button Margin="5" Content="DA-3 Set" 
+                                Command="{Binding OutPutCommand}" 
+                                CommandParameter="OUT_R_STEERING_DA"/>
                     </StackPanel>
                 </Grid>
 
@@ -93,8 +114,12 @@
                     <StackPanel Orientation="Vertical">
                         <Button Margin="5" Content="Conveyor" Background="{x:Null}"
                                 Foreground="Orange"/>
-                        <Button Margin="5" Content="C W" Command="{Binding OutPutCommand}"/>
-                        <Button Margin="5" Content="C C W" Command="{Binding OutPutCommand}"/>
+                        <Button Margin="5" Content="C W" 
+                                Command="{Binding OutPutCommand}" 
+                                CommandParameter="OUT_CV_CWCCW"/>
+                        <Button Margin="5" Content="C C W" 
+                                Command="{Binding OutPutCommand}" 
+                                CommandParameter="OUT_CV_CWCCW"/>
                     </StackPanel>
                 </Grid>
             </Grid>

+ 21 - 3
Dev/OHV/OHV.Module.Interactivity/PopUp/InOutView.xaml

@@ -9,7 +9,8 @@
              xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
              xmlns:prism="http://prismlibrary.com/"
              prism:ViewModelLocator.AutoWireViewModel="True"
-             Width="800" Height="600">
+             Width="1000" Height="600"
+             Background="#455a64">
 
     <prism:Dialog.WindowStyle>
         <Style TargetType="Window">
@@ -31,8 +32,25 @@
     </prism:Dialog.WindowStyle>
 
     <Grid>
+        <Grid.ColumnDefinitions>
+            <ColumnDefinition/>
+            <ColumnDefinition Width="130"/>
+        </Grid.ColumnDefinitions>
+        
         <DockPanel>
-            <ContentControl Grid.Column="1" prism:RegionManager.RegionName="IOView"/>
-        </DockPanel> 
+            <ContentControl Grid.Column="0" prism:RegionManager.RegionName="IOView"/>
+        </DockPanel>
+
+        <Grid Grid.Column="1" HorizontalAlignment="Stretch" Background="#263238">
+            <Border Margin="1" BorderBrush="#FF00FFD3" BorderThickness="2" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"/>
+            <StackPanel>
+                <Button Margin="5" HorizontalAlignment="Stretch" Height="Auto" BorderBrush="Gray" BorderThickness="2" Command="{Binding CloseDialogCommand}" CommandParameter="true">
+                    <StackPanel>
+                        <materialDesign:PackIcon Kind="ExitToApp" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Height="42" Width="auto"/>
+                        <TextBlock Text="Close" VerticalAlignment="Stretch" HorizontalAlignment="Center" />
+                    </StackPanel>
+                </Button>
+            </StackPanel>
+        </Grid>
     </Grid>
 </UserControl>

+ 12 - 1
Dev/OHV/OHV.Module.Interactivity/PopUp/InOutView.xaml.cs

@@ -1,4 +1,5 @@
-using System;
+using OHV.Module.Monitoring.Interactivity;
+using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
@@ -20,9 +21,19 @@ namespace OHV.Module.Interactivity.PopUp
     /// </summary>
     public partial class InOutView : UserControl
     {
+        //InOutIOViewModel ViewModel { get => this.DataContext as InOutIOViewModel; }
+        InOutViewModel ViewModel { get => this.DataContext as InOutViewModel; }
+
         public InOutView( )
         {
             InitializeComponent();
+
+            this.Loaded += InOutView_Loaded;
+        }
+
+        private void InOutView_Loaded( object sender , RoutedEventArgs e )
+        {
+            this.ViewModel.Init();
         }
     }
 }

+ 45 - 3
Dev/OHV/OHV.Module.Interactivity/PopUp/InOutViewModel.cs

@@ -1,4 +1,7 @@
-using Prism.Mvvm;
+using OHV.Common.Events;
+using Prism.Commands;
+using Prism.Events;
+using Prism.Mvvm;
 using Prism.Services.Dialogs;
 using System;
 using System.Collections.Generic;
@@ -10,6 +13,10 @@ namespace OHV.Module.Interactivity.PopUp
 {
     public class InOutViewModel : BindableBase, IDialogAware
     {
+        private DelegateCommand<string> _closeDialogCommand;
+        public DelegateCommand<string> CloseDialogCommand =>
+            _closeDialogCommand ?? ( _closeDialogCommand = new DelegateCommand<string>( CloseDialog ) );
+
         private string _title = "InOutView";
         public string Title
         {
@@ -21,6 +28,22 @@ namespace OHV.Module.Interactivity.PopUp
         }
 
         public event Action<IDialogResult> RequestClose;
+
+        public IEventAggregator eventAggregator;
+
+        public InOutViewModel( IEventAggregator _ea )
+        {
+            this.eventAggregator = _ea;
+        }
+
+        private void UICallbackCommunication( AxisControlEventArgs obj )
+        {
+
+        }
+
+        public void Init( ) { }
+
+        #region Dialog 
         public bool CanCloseDialog( )
         {
             //throw new NotImplementedException();
@@ -29,12 +52,31 @@ namespace OHV.Module.Interactivity.PopUp
 
         public void OnDialogClosed( )
         {
-            //throw new NotImplementedException();
+            this.eventAggregator.GetEvent<AxisControlPubSubEvent>().Publish( new AxisControlEventArgs { Dir = AxisControlEventArgs.eEventDir.ToBack , Kind = AxisControlEventArgs.eAxisControlKind.ReqStopCurrentPosition } );
+            this.eventAggregator.GetEvent<AxisControlPubSubEvent>().Unsubscribe( UICallbackCommunication );
         }
 
         public void OnDialogOpened( IDialogParameters parameters )
         {
-            //throw new NotImplementedException();
+            this.eventAggregator.GetEvent<AxisControlPubSubEvent>().Publish( new AxisControlEventArgs { Dir = AxisControlEventArgs.eEventDir.ToBack , Kind = AxisControlEventArgs.eAxisControlKind.ReqCurrentPosition } );
+        }
+
+        public virtual void RaiseRequestClose( IDialogResult dialogResult )
+        {
+            RequestClose?.Invoke( dialogResult );
+        }
+
+        private void CloseDialog( string parameter )
+        {
+            ButtonResult result = ButtonResult.None;
+
+            if ( parameter?.ToLower() == "true" )
+                result = ButtonResult.OK;
+            else if ( parameter?.ToLower() == "false" )
+                result = ButtonResult.Cancel;
+
+            RaiseRequestClose( new DialogResult( result ) );
         }
+        #endregion
     }
 }

+ 76 - 73
Dev/OHV/OHV.Module.Interactivity/PopUp/OpticalReadingConfigView.xaml

@@ -45,40 +45,21 @@
                 <ColumnDefinition Width="*"/>
             </Grid.ColumnDefinitions>
 
-            <!--<StackPanel Grid.Column="0" VerticalAlignment="Center"
-                        HorizontalAlignment="Center">
-                <Border Background="White"
-                        Width="60" Height="60">
-                    <TextBlock Text="Output#1" VerticalAlignment="Center"
-                               HorizontalAlignment="Center"/>
-                </Border>
-                <Border Background="Gray"
-                        Width="60" Height="50">
-                    <TextBlock Text="Output#2" VerticalAlignment="Center"
-                               HorizontalAlignment="Center"/>
-                </Border>
-                <Border Background="Black"
-                        Width="60" Height="40">
-                    <TextBlock Text="Output#3" VerticalAlignment="Center" Foreground="White"
-                               HorizontalAlignment="Center"/>
-                </Border>
-            </StackPanel>-->
+            <Border Grid.Column="0" Margin="23,22,23,17" BorderBrush="#FF00FFD3" BorderThickness="1" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"/>
 
-            <Border Grid.Column="0" Margin="37,69,37,47" BorderBrush="#FF00FFD3" BorderThickness="1" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"/>
-            
             <!--InPut-->
             <StackPanel Orientation="Vertical"
                         VerticalAlignment="Center"
                         HorizontalAlignment="Center"
                         Grid.Column="0">
 
-                <materialDesign:Badged 
-                                       Badge="Converter IO"
-                                       BadgeColorZoneMode="Dark"
-                                       BadgePlacementMode="Top">
+                <materialDesign:Badged
+                    Badge="Detect Pattern"
+                    BadgeColorZoneMode="Dark"
+                    BadgePlacementMode="Top">
                     <Button IsEnabled="False" Background="{x:Null}">
                         <StackPanel>
-                            <TextBlock><Run Text="InputList"/></TextBlock>
+                            <TextBlock><Run Text="Pattern List"/></TextBlock>
                         </StackPanel>
                     </Button>
                 </materialDesign:Badged>
@@ -86,17 +67,20 @@
                 <ToggleButton Margin="15"
                          Style="{StaticResource MaterialDesignActionToggleButton}"
                          ToolTip="MaterialDesignActionLightToggleButton"
-                         Width="40">
+                         Width="60"
+                         Height="60"
+                         Command="{Binding ResultPattern}"
+                         CommandParameter="1"
+                         IsChecked="{Binding ResultPatternOne}">
                     <ToggleButton.Content>
-                        <materialDesign:PackIcon Height="Auto"
-                         Kind="LedOn" />
+                        <materialDesign:PackIcon Height="30" Width="30" Kind="CloseBoxOutline"/>
                     </ToggleButton.Content>
                     <materialDesign:ToggleButtonAssist.OnContent>
-                        <materialDesign:PackIcon
-                        Kind="CloseBoxOutline" />
+                        <materialDesign:PackIcon Height="30" Width="30" Kind="LedOn"/>
                     </materialDesign:ToggleButtonAssist.OnContent>
                 </ToggleButton>
-                <TextBlock Text="Input1" 
+
+                <TextBlock Text="Set Out#1" Margin="0,-15,0,0"
                            VerticalAlignment="Center"
                            HorizontalAlignment="Center"
                            Foreground="Orange"/>
@@ -104,17 +88,22 @@
                 <ToggleButton Margin="15"
                          Style="{StaticResource MaterialDesignActionToggleButton}"
                          ToolTip="MaterialDesignActionLightToggleButton"
-                         Width="40">
+                         Width="60"
+                         Height="60"
+                         Command="{Binding ResultPattern}"
+                         CommandParameter="2"
+                         IsChecked="{Binding ResultPatternTwo}">
                     <ToggleButton.Content>
-                        <materialDesign:PackIcon
-                         Kind="LedOn" />
+                        <materialDesign:PackIcon Height="30" Width="30"
+                        Kind="CloseBoxOutline" />
+
                     </ToggleButton.Content>
                     <materialDesign:ToggleButtonAssist.OnContent>
-                        <materialDesign:PackIcon
-                        Kind="CloseBoxOutline" />
+                        <materialDesign:PackIcon Height="30" Width="30"
+                        Kind="LedOn" />
                     </materialDesign:ToggleButtonAssist.OnContent>
                 </ToggleButton>
-                <TextBlock Text="Input2" 
+                <TextBlock Text="Set Out#2" Margin="0,-15,0,0"
                            VerticalAlignment="Center"
                            HorizontalAlignment="Center"
                            Foreground="Orange"/>
@@ -122,17 +111,21 @@
                 <ToggleButton Margin="15"
                          Style="{StaticResource MaterialDesignActionToggleButton}"
                          ToolTip="MaterialDesignActionLightToggleButton"
-                         Width="40">
+                         Width="60"
+                         Height="60"
+                         Command="{Binding ResultPattern}"
+                         CommandParameter="3"
+                         IsChecked="{Binding ResultPatternThree}">
                     <ToggleButton.Content>
-                        <materialDesign:PackIcon
-                         Kind="LedOn" />
+                        <materialDesign:PackIcon Height="30" Width="30"
+                        Kind="CloseBoxOutline" />
                     </ToggleButton.Content>
                     <materialDesign:ToggleButtonAssist.OnContent>
-                        <materialDesign:PackIcon
-                        Kind="CloseBoxOutline" />
+                        <materialDesign:PackIcon Height="30" Width="30"
+                        Kind="LedOn" />
                     </materialDesign:ToggleButtonAssist.OnContent>
                 </ToggleButton>
-                <TextBlock Text="Input3" 
+                <TextBlock Text="Set Out#3" Margin="0,-15,0,0"
                            VerticalAlignment="Center"
                            HorizontalAlignment="Center"
                            Foreground="Orange"/>
@@ -140,17 +133,21 @@
                 <ToggleButton Margin="15"
                          Style="{StaticResource MaterialDesignActionToggleButton}"
                          ToolTip="MaterialDesignActionLightToggleButton"
-                         Width="40">
+                         Width="60"
+                         Height="60"
+                         Command="{Binding ResultPattern}"
+                         CommandParameter="4"
+                         IsChecked="{Binding ResultPatternFour}">
                     <ToggleButton.Content>
-                        <materialDesign:PackIcon
-                         Kind="LedOn" />
+                        <materialDesign:PackIcon Height="30" Width="30"
+                        Kind="CloseBoxOutline" />
                     </ToggleButton.Content>
                     <materialDesign:ToggleButtonAssist.OnContent>
-                        <materialDesign:PackIcon
-                        Kind="CloseBoxOutline" />
+                        <materialDesign:PackIcon Height="30" Width="30"
+                        Kind="LedOn" />
                     </materialDesign:ToggleButtonAssist.OnContent>
                 </ToggleButton>
-                <TextBlock Text="Input4" 
+                <TextBlock Text="Set Out#4" Margin="0,-15,0,0"
                            VerticalAlignment="Center"
                            HorizontalAlignment="Center"
                            Foreground="Orange"/>
@@ -158,59 +155,65 @@
                 <ToggleButton Margin="15"
                          Style="{StaticResource MaterialDesignActionToggleButton}"
                          ToolTip="MaterialDesignActionLightToggleButton"
-                         Width="40">
+                         Width="60"
+                         Height="60"
+                         Command="{Binding ResultPattern}"
+                         CommandParameter="5"
+                         IsChecked="{Binding ResultPatternFive}">
                     <ToggleButton.Content>
-                        <materialDesign:PackIcon
-                         Kind="LedOn" />
+                        <materialDesign:PackIcon Height="30" Width="30"
+                        Kind="CloseBoxOutline" />
                     </ToggleButton.Content>
                     <materialDesign:ToggleButtonAssist.OnContent>
-                        <materialDesign:PackIcon
-                        Kind="CloseBoxOutline" />
+                        <materialDesign:PackIcon Height="30" Width="30"
+                        Kind="LedOn" />
                     </materialDesign:ToggleButtonAssist.OnContent>
                 </ToggleButton>
-                <TextBlock Text="Input5" 
+                <TextBlock Text="Set Out#5" Margin="0,-15,0,0"
                            VerticalAlignment="Center"
                            HorizontalAlignment="Center"
                            Foreground="Orange"/>
             </StackPanel>
 
             <!--OutPut-->
-            <Border Grid.Column="1" Margin="30,180" BorderBrush="#FF00FFD3" BorderThickness="1" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"/>
+            <Border Grid.Column="1" Margin="30,79" BorderBrush="#FF00FFD3" BorderThickness="1" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"/>
             <StackPanel VerticalAlignment="Center"
                         HorizontalAlignment="Center"
                         Grid.Column="1">
                 <materialDesign:Badged Margin="5"
                                        Badge="Detect Area#1"
                                        BadgeColorZoneMode="Dark">
-                        <Button Width="80"
-                                Height="60"
+                    <Button Width="80"
+                                Height="200"
                                 Background="{Binding OpReaderOutFirst}">
-                           <StackPanel>
-                             <TextBlock><Run Text="Zone#1"/></TextBlock>
-                         </StackPanel>
-                      </Button>
+                        <StackPanel>
+                            <TextBlock><Run Text="Slow"/></TextBlock>
+                            <TextBlock><Run Text="Stop"/></TextBlock>
+                        </StackPanel>
+                    </Button>
                 </materialDesign:Badged>
 
                 <materialDesign:Badged Margin="5"
                                        Badge="Detect Area#2"
                                        BadgeColorZoneMode="Dark">
                     <Button Width="80"
-                            Height="50"
+                            Height="100"
                             Background="{Binding OpReaderOutSecond}">
-                          <StackPanel>
-                             <TextBlock><Run Text="Zone#2"/></TextBlock>
-                          </StackPanel>
-                       </Button>
+                        <StackPanel>
+                            <TextBlock HorizontalAlignment="Center"><Run Text="Safety"/></TextBlock>
+                            <TextBlock HorizontalAlignment="Center"><Run Text="Stop"/></TextBlock>
+                        </StackPanel>
+                    </Button>
                 </materialDesign:Badged>
 
                 <materialDesign:Badged Margin="5"
                                        Badge="Detect Area#3"
                                        BadgeColorZoneMode="Dark">
                     <Button Width="80"
-                            Height="40"
+                            Height="60"
                             Background="{Binding OpReaderOutThird}">
                         <StackPanel>
-                            <TextBlock><Run Text="Zone#3"/></TextBlock>
+                            <TextBlock><Run Text="Stop"/></TextBlock>
                         </StackPanel>
                     </Button>
                 </materialDesign:Badged>
@@ -221,13 +224,13 @@
                         HorizontalAlignment="Center">
                 <Button >
                     <StackPanel>
-                        <TextBlock><Run Text="Input Bit Result"/></TextBlock>
+                        <TextBlock><Run Text="Pattern Result"/></TextBlock>
                     </StackPanel>
                 </Button>
-                
+
                 <Button Background="{x:Null}">
                     <StackPanel>
-                        <TextBlock><Run Text="{Binding InputBitResult, FallbackValue=0}"/></TextBlock>
+                        <TextBlock><Run Text="{Binding PatternResult, FallbackValue=0}"/></TextBlock>
                     </StackPanel>
                 </Button>
             </StackPanel>
@@ -238,7 +241,7 @@
             <StackPanel>
                 <Button Margin="5,50,5,0" HorizontalAlignment="Stretch" Height="69" 
                         BorderBrush="Gray" BorderThickness="2" 
-                        Command="{Binding SteeringSaveCommand}" CommandParameter="true">
+                        Command="{Binding DetectPatternSave}" CommandParameter="true">
                     <StackPanel>
                         <materialDesign:PackIcon Kind="CalendarExport" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Height="42" Width="auto"/>
                         <TextBlock Text="Save" VerticalAlignment="Stretch" HorizontalAlignment="Center" />

+ 98 - 1
Dev/OHV/OHV.Module.Interactivity/PopUp/OpticalReadingConfigViewModel.cs

@@ -1,12 +1,15 @@
 using Prism.Commands;
+using Prism.Events;
 using Prism.Mvvm;
 using Prism.Services.Dialogs;
 using System;
+using System.Collections;
 using System.Collections.Generic;
 using System.Drawing;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using System.Windows.Input;
 
 namespace OHV.Module.Interactivity.PopUp
 {
@@ -36,6 +39,63 @@ namespace OHV.Module.Interactivity.PopUp
             set { this.SetProperty( ref this._opReaderOutThird , value ); }
         }
 
+        private int _patternResult;
+        public int PatternResult
+        {
+            get { return this._patternResult; }
+            set { this.SetProperty( ref this._patternResult , value ); }
+        }
+
+        private bool _resultPatternOne;
+        public bool ResultPatternOne
+        {
+            get { return this._resultPatternOne; }
+            set 
+            { 
+                this.SetProperty( ref this._resultPatternOne , value );
+            }
+        }
+
+        private bool _resultPatternTwo;
+        public bool ResultPatternTwo
+        {
+            get { return this._resultPatternTwo; }
+            set
+            {
+                this.SetProperty( ref this._resultPatternTwo , value );
+            }
+        }
+
+        private bool _resultPatternThree;
+        public bool ResultPatternThree
+        {
+            get { return this._resultPatternThree; }
+            set
+            {
+                this.SetProperty( ref this._resultPatternThree , value );
+            }
+        }
+
+        private bool _resultPatternFour;
+        public bool ResultPatternFour
+        {
+            get { return this._resultPatternFour; }
+            set
+            {
+                this.SetProperty( ref this._resultPatternFour , value );
+            }
+        }
+
+        private bool _resultPatternFive;
+        public bool ResultPatternFive
+        {
+            get { return this._resultPatternFive; }
+            set
+            {
+                this.SetProperty( ref this._resultPatternFive , value );
+            }
+        }
+
         private string _title = "SteeringConfigView";
         public string Title
         {
@@ -46,11 +106,48 @@ namespace OHV.Module.Interactivity.PopUp
             }
         }
 
+        public ICommand DetectPatternSave { get; set; }
+        public ICommand ResultPattern { get; set; }
+
         public event Action<IDialogResult> RequestClose;
 
-        public OpticalReadingConfigViewModel( )
+        IEventAggregator eventAggregator;
+        MessageController messageController;
+
+        public OpticalReadingConfigViewModel( IEventAggregator _ea, MessageController _msg )
+        {
+            this.eventAggregator = _ea;
+            this.messageController = _msg;
+
+            this.DetectPatternSave = new DelegateCommand( ExecuteDetectPatternSave );
+            this.ResultPattern = new DelegateCommand<object>( ExecuteResultPattern );
+        }
+
+        private void ExecuteResultPattern(object _obj)
+        {
+        }
+
+        private byte ConvertToByte( BitArray _bitArray)
         {
+            byte[] bytes = new byte[ 1 ];
+            _bitArray.CopyTo( bytes , 0 );
+
+            return bytes[ 0 ];
+        }
+
+        private void ExecuteDetectPatternSave( )
+        {
+            this.messageController.ShowConfirmationPopupView( "Pattern Save ?" , r =>
+            {
+                if ( r.Result == ButtonResult.OK )
+                {
+                    bool[] bitResult = new bool[] { this.ResultPatternOne , this.ResultPatternTwo , this.ResultPatternThree , this.ResultPatternFour , this.ResultPatternFive };
+                    var result = new System.Collections.BitArray( bitResult );
+                    this.PatternResult = ConvertToByte( result );
 
+                    //this.Publish(this.PatternResult);
+                }
+            } );
         }
 
         #region Dialog Function

+ 1 - 1
Dev/OHV/OHV.Module.Interactivity/PopUp/ServoConfigView.xaml.cs

@@ -25,7 +25,7 @@ namespace OHV.Module.Interactivity.PopUp
         {
             InitializeComponent();
 
-            //this.Loaded += ServoConfigView_Loaded;
+            this.Loaded += ServoConfigView_Loaded;
         }
 
         private void ServoConfigView_Loaded( object sender , RoutedEventArgs e )

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

@@ -21,11 +21,13 @@ namespace OHV.Module.MainViews
             ViewModelLocationProvider.Register<AutoView , AutoViewModel>();
             ViewModelLocationProvider.Register<TeachView , TeachViewModel>();
             ViewModelLocationProvider.Register<UnitView , UnitViewModel>();
+            ViewModelLocationProvider.Register<HistoryView , HistoryViewModel>();
 
             var regionManager = containerProvider.Resolve<IRegionManager>();
             regionManager.RegisterViewWithRegion( RegionNames.MainView , typeof( AutoView ) );
             regionManager.RegisterViewWithRegion( RegionNames.MainView , typeof( TeachView ) );
             regionManager.RegisterViewWithRegion( RegionNames.MainView , typeof( UnitView ) );
+            regionManager.RegisterViewWithRegion( RegionNames.MainView , typeof( HistoryView ) );
         }
 
         public void RegisterTypes(IContainerRegistry containerRegistry)

+ 10 - 0
Dev/OHV/OHV.Module.MainViews/OHV.Module.MainViews.csproj

@@ -74,6 +74,12 @@
     <Compile Include="Views\AutoViewModel.cs">
       <DependentUpon>AutoView.xaml</DependentUpon>
     </Compile>
+    <Compile Include="Views\HistoryView.xaml.cs">
+      <DependentUpon>HistoryView.xaml</DependentUpon>
+    </Compile>
+    <Compile Include="Views\HistoryViewModel.cs">
+      <DependentUpon>HistoryView.xaml</DependentUpon>
+    </Compile>
     <Compile Include="Views\TeachView.xaml.cs">
       <DependentUpon>TeachView.xaml</DependentUpon>
     </Compile>
@@ -91,6 +97,10 @@
     </Compile>
   </ItemGroup>
   <ItemGroup>
+    <Page Include="Views\HistoryView.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
     <Page Include="Views\TeachView.xaml">
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>

+ 140 - 0
Dev/OHV/OHV.Module.MainViews/Views/HistoryView.xaml

@@ -0,0 +1,140 @@
+<UserControl x:Class="OHV.Module.MainViews.Views.HistoryView"
+             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
+             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
+             xmlns:local="clr-namespace:OHV.Module.MainViews.Views"
+             xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
+             xmlns:prism="http://prismlibrary.com/"
+             prism:ViewModelLocator.AutoWireViewModel="True"
+             mc:Ignorable="d" 
+             Width="Auto"
+             Height="942"
+             MinWidth="1386"
+             Background="#37474f">
+    
+    <Grid>
+        <Grid.ColumnDefinitions>
+            <ColumnDefinition Width="*"/>
+            <ColumnDefinition Width="Auto"/>
+        </Grid.ColumnDefinitions>
+        
+        <Grid Grid.Column="0">
+            <Grid Margin="15,15" Background="#263238">
+                <DockPanel>
+                    <DataGrid ItemsSource="{Binding AlarmList}" CanUserSortColumns="True" CanUserAddRows="False" AutoGenerateColumns="False" materialDesign:DataGridAssist.CellPadding="13 8 8 8" 
+                                  materialDesign:DataGridAssist.ColumnHeaderPadding="8" Background="{x:Null}">
+                        <DataGrid.Resources>
+                            <Style TargetType="{x:Type DataGridRow}">
+                                <Style.Triggers>
+                                    <Trigger Property="IsSelected" Value="false">
+                                        <Setter Property="Background" Value="{x:Null}"></Setter>
+                                    </Trigger>
+                                </Style.Triggers>
+                                <Setter Property="TextBlock.TextAlignment" Value="Center" />
+                                <Setter Property="FontSize" Value="15"/>
+                                <Setter Property="IsEnabled" Value="False"/>
+                            </Style>
+                        </DataGrid.Resources>
+
+                        <DataGrid.Columns>
+                            <!--<DataGridTemplateColumn >
+                                <DataGridTemplateColumn.CellTemplate>
+                                    <DataTemplate>
+                                        <RadioButton GroupName="AlarmList" IsChecked="{Binding IsSelected, UpdateSourceTrigger=PropertyChanged}"></RadioButton>
+                                    </DataTemplate>
+                                </DataGridTemplateColumn.CellTemplate>
+                            </DataGridTemplateColumn>-->
+
+                            <materialDesign:DataGridTextColumn Header="Level" Width="150" Binding="{Binding Level}" EditingElementStyle="{StaticResource MaterialDesignDataGridTextColumnPopupEditingStyle}">
+                                <DataGridTextColumn.HeaderStyle>
+                                    <Style TargetType="{x:Type DataGridColumnHeader}" BasedOn="{StaticResource MaterialDesignDataGridColumnHeader}">
+                                        <Setter Property="VerticalContentAlignment" Value="Center"/>
+                                        <Setter Property="HorizontalContentAlignment" Value="Center"/>
+                                        <Setter Property="Foreground" Value="White"/>
+                                    </Style>
+                                </DataGridTextColumn.HeaderStyle>
+                            </materialDesign:DataGridTextColumn>
+
+                            <materialDesign:DataGridTextColumn Header="Kind" Width="150" Binding="{Binding Kind}" EditingElementStyle="{StaticResource MaterialDesignDataGridTextColumnPopupEditingStyle}">
+                                <DataGridTextColumn.HeaderStyle>
+                                    <Style TargetType="{x:Type DataGridColumnHeader}" BasedOn="{StaticResource MaterialDesignDataGridColumnHeader}">
+                                        <Setter Property="VerticalContentAlignment" Value="Center"/>
+                                        <Setter Property="HorizontalContentAlignment" Value="Center"/>
+                                        <Setter Property="Foreground" Value="White"/>
+                                    </Style>
+                                </DataGridTextColumn.HeaderStyle>
+                            </materialDesign:DataGridTextColumn>
+
+                            <materialDesign:DataGridTextColumn Header="Name" Width="150" Binding="{Binding Name}" EditingElementStyle="{StaticResource MaterialDesignDataGridTextColumnPopupEditingStyle}">
+                                <DataGridTextColumn.HeaderStyle>
+                                    <Style TargetType="{x:Type DataGridColumnHeader}" BasedOn="{StaticResource MaterialDesignDataGridColumnHeader}">
+                                        <Setter Property="VerticalContentAlignment" Value="Center"/>
+                                        <Setter Property="HorizontalContentAlignment" Value="Center"/>
+                                        <Setter Property="Foreground" Value="White"/>
+                                    </Style>
+                                </DataGridTextColumn.HeaderStyle>
+                            </materialDesign:DataGridTextColumn>
+                            
+                            <materialDesign:DataGridTextColumn Header="Text" Width="150" Binding="{Binding Text}" EditingElementStyle="{StaticResource MaterialDesignDataGridTextColumnPopupEditingStyle}">
+                                <DataGridTextColumn.HeaderStyle>
+                                    <Style TargetType="{x:Type DataGridColumnHeader}" BasedOn="{StaticResource MaterialDesignDataGridColumnHeader}">
+                                        <Setter Property="VerticalContentAlignment" Value="Center"/>
+                                        <Setter Property="HorizontalContentAlignment" Value="Center"/>
+                                        <Setter Property="Foreground" Value="White"/>
+                                    </Style>
+                                </DataGridTextColumn.HeaderStyle>
+                            </materialDesign:DataGridTextColumn>
+
+                            <materialDesign:DataGridTextColumn Header="Description" Width="300" Binding="{Binding Description}" EditingElementStyle="{StaticResource MaterialDesignDataGridTextColumnPopupEditingStyle}">
+                                <DataGridTextColumn.HeaderStyle>
+                                    <Style TargetType="{x:Type DataGridColumnHeader}" BasedOn="{StaticResource MaterialDesignDataGridColumnHeader}">
+                                        <Setter Property="VerticalContentAlignment" Value="Center"/>
+                                        <Setter Property="HorizontalContentAlignment" Value="Center"/>
+                                        <Setter Property="Foreground" Value="White"/>
+                                    </Style>
+                                </DataGridTextColumn.HeaderStyle>
+                            </materialDesign:DataGridTextColumn>
+                            
+                            <materialDesign:DataGridTextColumn Header="Solution" Width="300" Binding="{Binding Solution}" EditingElementStyle="{StaticResource MaterialDesignDataGridTextColumnPopupEditingStyle}">
+                                <DataGridTextColumn.HeaderStyle>
+                                    <Style TargetType="{x:Type DataGridColumnHeader}" BasedOn="{StaticResource MaterialDesignDataGridColumnHeader}">
+                                        <Setter Property="VerticalContentAlignment" Value="Center"/>
+                                        <Setter Property="HorizontalContentAlignment" Value="Center"/>
+                                        <Setter Property="Foreground" Value="White"/>
+                                    </Style>
+                                </DataGridTextColumn.HeaderStyle>
+                            </materialDesign:DataGridTextColumn>
+                            
+                        </DataGrid.Columns>
+
+                        <!--<DataGrid.RowStyle>
+                            <Style TargetType="TextBlock">
+                                <Setter Property="TextAlignment" Value="Center"/>
+                            </Style>
+                        </DataGrid.RowStyle>-->
+                        
+                    </DataGrid>
+                </DockPanel>
+            </Grid>
+        </Grid>
+
+        <Grid Grid.Column="1" HorizontalAlignment="Right" Background="#263238">
+            <StackPanel>
+                <Button HorizontalAlignment="Stretch"
+                    Style="{StaticResource MaterialDesignRaisedButton}"
+                    Margin="20"
+                    materialDesign:ButtonProgressAssist.Value="-1"
+                    materialDesign:ButtonProgressAssist.IsIndicatorVisible="True"
+                    materialDesign:ButtonProgressAssist.IsIndeterminate="True"
+                    Command="{Binding AlarmResetCommand}"
+                    Height="Auto" Width="Auto">
+                    <StackPanel>
+                        <materialDesign:PackIcon Kind="CircleArrows" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Width="Auto" Height="50"/>
+                        <TextBlock Text="Reset" VerticalAlignment="Stretch" HorizontalAlignment="Center"/>
+                    </StackPanel>
+                </Button>
+            </StackPanel>
+        </Grid>
+    </Grid>
+</UserControl>

+ 37 - 0
Dev/OHV/OHV.Module.MainViews/Views/HistoryView.xaml.cs

@@ -0,0 +1,37 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+
+namespace OHV.Module.MainViews.Views
+{
+    /// <summary>
+    /// HistoryView.xaml에 대한 상호 작용 논리
+    /// </summary>
+    public partial class HistoryView : UserControl
+    {
+        HistoryViewModel ViewModel { get => this.DataContext as HistoryViewModel; }
+        
+        public HistoryView( )
+        {
+            InitializeComponent();
+
+            this.Loaded += HistoryView_Loaded;
+        }
+
+        private void HistoryView_Loaded( object sender , RoutedEventArgs e )
+        {
+            this.ViewModel.Init();
+        }
+    }
+}

+ 32 - 0
Dev/OHV/OHV.Module.MainViews/Views/HistoryViewModel.cs

@@ -0,0 +1,32 @@
+using OHV.Common.Model;
+using OHV.SqliteDAL;
+using Prism.Mvvm;
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OHV.Module.MainViews.Views
+{
+    public class HistoryViewModel : BindableBase
+    {
+        SqliteManager sql;
+
+        ObservableCollection<Alarm> _alarmList;
+        public ObservableCollection<Alarm> AlarmList
+        {
+            get { return this._alarmList; }
+            set { this.SetProperty( ref this._alarmList , value ); }
+        }
+
+        public HistoryViewModel( SqliteManager _sql )
+        {
+            this.sql = _sql;
+            this.AlarmList = new ObservableCollection<Alarm>( sql.AlarmDAL.All );
+        }
+
+        public void Init( ) { }
+    }
+}

+ 95 - 42
Dev/OHV/OHV.Module.MainViews/Views/TeachView.xaml

@@ -10,6 +10,7 @@
              mc:Ignorable="d" 
              Width="Auto"
              Height="942"
+             MinWidth="1386"
              Background="#37474f">
     
     <Grid>
@@ -20,54 +21,106 @@
 
         <Grid Grid.Column="0">
             <Grid Margin="15,15" Background="#263238">
-            </Grid>
-        </Grid>
+                <!--<Grid.ColumnDefinitions>
+                    <ColumnDefinition Width="*"/>
+                    <ColumnDefinition Width="*"/>
+                    <ColumnDefinition Width="*"/>
+                </Grid.ColumnDefinitions>-->
 
-        <Grid Grid.Column="1" HorizontalAlignment="Right" Background="#263238">
-            <StackPanel>
-                <Button HorizontalAlignment="Stretch"
-                    Style="{StaticResource MaterialDesignRaisedButton}"
-                    Margin="20"
-                    materialDesign:ButtonProgressAssist.Value="-1"
-                    materialDesign:ButtonProgressAssist.IsIndicatorVisible="True"
-                    materialDesign:ButtonProgressAssist.IsIndeterminate="True"
-                    Command="{Binding DriveTeachPopup}"
-                    Height="Auto" Width="Auto">
-                    <StackPanel>
-                        <materialDesign:PackIcon Kind="CarTractionControl" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Width="Auto" Height="50"/>
-                        <TextBlock Text="# Drive Teach" VerticalAlignment="Stretch" HorizontalAlignment="Center"/>
-                    </StackPanel>
-                </Button>
+                <!--<Grid.RowDefinitions>
+                    <RowDefinition Height="*"/>
+                    <RowDefinition Height="*"/>
+                </Grid.RowDefinitions>-->
+
+                <StackPanel Orientation="Horizontal"
+                            VerticalAlignment="Center"
+                            HorizontalAlignment="Center">
+
+                    <Button HorizontalAlignment="Stretch"
+                            Style="{StaticResource MaterialDesignRaisedButton}"
+                            Margin="20"
+                            materialDesign:ButtonAssist.CornerRadius="10"
+                            Command="{Binding DriveTeachPopup}"
+                            Height="150" Width="220">
+                        <StackPanel>
+                            <materialDesign:PackIcon Kind="CarTractionControl" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Width="Auto" Height="100"/>
+                            <TextBlock FontSize="30" Text="Drive Teach" VerticalAlignment="Stretch" HorizontalAlignment="Center"/>
+                        </StackPanel>
+                    </Button>
 
-                <Button HorizontalAlignment="Stretch"
-                    Style="{StaticResource MaterialDesignRaisedButton}"
-                    Margin="20"
-                    materialDesign:ButtonProgressAssist.Value="-1"
-                    materialDesign:ButtonProgressAssist.IsIndicatorVisible="True"
-                    materialDesign:ButtonProgressAssist.IsIndeterminate="True"
-                    Command="{Binding LockPopup}"
-                    Height="Auto" Width="Auto">
-                    <StackPanel>
-                        <materialDesign:PackIcon Kind="PackageUp" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Width="Auto" Height="50"/>
-                        <TextBlock Text="#Lock Teach" VerticalAlignment="Stretch" HorizontalAlignment="Center"/>
+                    <Button HorizontalAlignment="Stretch"
+                            Style="{StaticResource MaterialDesignRaisedButton}"
+                            Margin="20"
+                            materialDesign:ButtonAssist.CornerRadius="10"
+                            Command="{Binding LockPopup}"
+                             Height="150" Width="220">
+                        <StackPanel>
+                            <materialDesign:PackIcon Kind="PackageUp" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Width="Auto" Height="100"/>
+                            <TextBlock FontSize="30" Text="Lock Teach" VerticalAlignment="Stretch" HorizontalAlignment="Center"/>
+                        </StackPanel>
+                    </Button>
+
+                    <Button HorizontalAlignment="Stretch"
+                            Style="{StaticResource MaterialDesignRaisedButton}"
+                            Margin="20"
+                            materialDesign:ButtonAssist.CornerRadius="10"
+                            Command="{Binding InOutControlPopup}"
+                            Height="150" Width="220">
+                        <StackPanel>
+                            <materialDesign:PackIcon Kind="CursorDefaultClickOutline" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Width="Auto" Height="100"/>
+                            <TextBlock FontSize="30" Text="I/O Control" VerticalAlignment="Stretch" HorizontalAlignment="Center"/>
+                        </StackPanel>
+                    </Button>
+                </StackPanel>
+
+                <!--<DockPanel Grid.Column="0">
+                    <StackPanel VerticalAlignment="Center">
+                        <Button HorizontalAlignment="Stretch"
+                            Style="{StaticResource MaterialDesignRaisedButton}"
+                            Margin="20"
+                            materialDesign:ButtonAssist.CornerRadius="10"
+                            Command="{Binding DriveTeachPopup}"
+                            Height="150" Width="250">
+                            <StackPanel>
+                                <materialDesign:PackIcon Kind="CarTractionControl" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Width="Auto" Height="100"/>
+                                <TextBlock FontSize="20" Text="Drive Teach" VerticalAlignment="Stretch" HorizontalAlignment="Center"/>
+                            </StackPanel>
+                        </Button>
                     </StackPanel>
-                </Button>
+                </DockPanel>
 
-                <Button HorizontalAlignment="Stretch"
-                    Style="{StaticResource MaterialDesignRaisedButton}"
-                    Margin="20"
-                    materialDesign:ButtonProgressAssist.Value="-1"
-                    materialDesign:ButtonProgressAssist.IsIndicatorVisible="True"
-                    materialDesign:ButtonProgressAssist.IsIndeterminate="True"
-                    Command="{Binding InOutControlPopup}"
-                    Height="Auto" Width="Auto">
-                    <StackPanel>
-                        <materialDesign:PackIcon Kind="CursorDefaultClickOutline" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Width="Auto" Height="50"/>
-                        <TextBlock Text="#I/O Control" VerticalAlignment="Stretch" HorizontalAlignment="Center"/>
+                <DockPanel Grid.Column="1">
+                    <StackPanel VerticalAlignment="Center">
+                        <Button HorizontalAlignment="Stretch"
+                            Style="{StaticResource MaterialDesignRaisedButton}"
+                            Margin="20"
+                            materialDesign:ButtonAssist.CornerRadius="10"
+                            Command="{Binding LockPopup}"
+                             Height="150" Width="250">
+                            <StackPanel>
+                                <materialDesign:PackIcon Kind="PackageUp" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Width="Auto" Height="100"/>
+                                <TextBlock FontSize="20" Text="Lock Teach" VerticalAlignment="Stretch" HorizontalAlignment="Center"/>
+                            </StackPanel>
+                        </Button>
                     </StackPanel>
-                </Button>
+                </DockPanel>
 
-            </StackPanel>
+                <DockPanel Grid.Column="2">
+                    <StackPanel VerticalAlignment="Center">
+                        <Button HorizontalAlignment="Stretch"
+                            Style="{StaticResource MaterialDesignRaisedButton}"
+                            Margin="20"
+                            materialDesign:ButtonAssist.CornerRadius="10"
+                            Command="{Binding InOutControlPopup}"
+                            Height="150" Width="250">
+                            <StackPanel>
+                                <materialDesign:PackIcon Kind="CursorDefaultClickOutline" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Width="Auto" Height="100"/>
+                                <TextBlock FontSize="20" Text="I/O Control" VerticalAlignment="Stretch" HorizontalAlignment="Center"/>
+                            </StackPanel>
+                        </Button>
+                    </StackPanel>
+                </DockPanel>-->
+            </Grid>
         </Grid>
     </Grid>
 </UserControl>

+ 2 - 1
Dev/OHV/OHV.Module.MainViews/Views/TeachView.xaml.cs

@@ -21,7 +21,8 @@ namespace OHV.Module.MainViews.Views
     public partial class TeachView : UserControl
     {
         public TeachViewModel ViewModel { get => this.DataContext as TeachViewModel; }
-        public TeachView()
+
+        public TeachView( )
         {
             InitializeComponent();
 

+ 189 - 83
Dev/OHV/OHV.Module.MainViews/Views/UnitView.xaml

@@ -10,6 +10,7 @@
              mc:Ignorable="d" 
              Height="942"
              Width="Auto"
+             MinWidth="1386"
              Background="#37474f">
 
     <Grid>
@@ -20,95 +21,200 @@
 
         <Grid Grid.Column="0">
             <Grid Margin="15,15" Background="#263238">
-            </Grid>
-        </Grid>
+                <!--<Grid.ColumnDefinitions>
+                    <ColumnDefinition Width="*"/>
+                    <ColumnDefinition Width="*"/>
+                    <ColumnDefinition Width="*"/>
+                </Grid.ColumnDefinitions>-->
+
+                <Grid.RowDefinitions>
+                    <RowDefinition Height="*"/>
+                    <RowDefinition Height="*"/>
+                </Grid.RowDefinitions>
+
+                <Grid Grid.Row="0">
+                    <StackPanel Orientation="Horizontal"
+                                VerticalAlignment="Bottom"
+                                HorizontalAlignment="Center" Margin="20">
+                        
+                        <Button HorizontalAlignment="Stretch"
+                             Style="{StaticResource MaterialDesignRaisedButton}"
+                            Margin="20"
+                            materialDesign:ButtonAssist.CornerRadius="20"
+                            Command="{Binding InoutPupup}"
+                            Height="150" Width="220">
+                            <StackPanel>
+                                <materialDesign:PackIcon Kind="LedOn" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Width="Auto" Height="100"/>
+                                <TextBlock FontSize="30" Text="InOut" VerticalAlignment="Stretch" HorizontalAlignment="Center"/>
+                            </StackPanel>
+                        </Button>
+
+                        <Button HorizontalAlignment="Stretch"
+                             Style="{StaticResource MaterialDesignRaisedButton}"
+                            Margin="20"
+                            materialDesign:ButtonAssist.CornerRadius="20"
+                            Command="{Binding ServoConfigCommand}"
+                            Height="150" Width="220">
+                            <StackPanel>
+                                <materialDesign:PackIcon Kind="Gear" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Width="Auto" Height="100"/>
+                                <TextBlock FontSize="30" Text="Motor" VerticalAlignment="Stretch" HorizontalAlignment="Center"/>
+                            </StackPanel>
+                        </Button>
+
+                        <Button HorizontalAlignment="Stretch"
+                            Style="{StaticResource MaterialDesignRaisedButton}"
+                            Margin="20"
+                            materialDesign:ButtonAssist.CornerRadius="20"
+                            Command="{Binding BatteryPopup}"
+                            Height="150" Width="220">
+                            <StackPanel>
+                                <materialDesign:PackIcon Kind="BatteryCharging" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Width="Auto" Height="100"/>
+                                <TextBlock FontSize="30" Text="Battery" VerticalAlignment="Stretch" HorizontalAlignment="Center"/>
+                            </StackPanel>
+                        </Button>
+                    </StackPanel>
+                </Grid>
+
+                <Grid Grid.Row="1">
+                    <StackPanel Orientation="Horizontal" 
+                                VerticalAlignment="Top"
+                                HorizontalAlignment="Center"
+                                Margin="20">
+
+                        <Button HorizontalAlignment="Stretch"
+                            Style="{StaticResource MaterialDesignRaisedButton}"
+                            Margin="20"
+                            materialDesign:ButtonAssist.CornerRadius="20"
+                            Command="{Binding SteerPopup}"
+                            Height="150" Width="220">
+                            <StackPanel>
+                                <materialDesign:PackIcon Kind="CarHandBrake" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Width="auto" Height="100"/>
+                                <TextBlock FontSize="30" Text="Steering" VerticalAlignment="Stretch" HorizontalAlignment="Center"/>
+                            </StackPanel>
+                        </Button>
 
-        <Grid Grid.Column="1" HorizontalAlignment="Right" Background="#263238">
-            <StackPanel>
-                <Button HorizontalAlignment="Stretch"
-                    Style="{StaticResource MaterialDesignRaisedButton}"
-                    Margin="20"
-                    materialDesign:ButtonProgressAssist.Value="-1"
-                    materialDesign:ButtonProgressAssist.IsIndicatorVisible="True"
-                    materialDesign:ButtonProgressAssist.IsIndeterminate="True"
-                    Command="{Binding InoutPupup}"
-                    Height="Auto" Width="Auto">
-                    <StackPanel>
-                        <materialDesign:PackIcon Kind="LedOn" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Width="Auto" Height="50"/>
-                        <TextBlock Text="#InOut" VerticalAlignment="Stretch" HorizontalAlignment="Center"/>
+                        <Button HorizontalAlignment="Stretch"
+                            Style="{StaticResource MaterialDesignRaisedButton}"
+                            Margin="20"
+                            materialDesign:ButtonAssist.CornerRadius="20"
+                            Command="{Binding OpticalReaderPopup}"
+                            Height="150" Width="220">
+                            <StackPanel>
+                                <materialDesign:PackIcon Kind="WifiStrength2" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Width="auto" Height="100"/>
+                                <TextBlock FontSize="30" Text="Safe Detect" VerticalAlignment="Stretch" HorizontalAlignment="Center"/>
+                            </StackPanel>
+                        </Button>
+
+                        <Button HorizontalAlignment="Stretch"
+                            Style="{StaticResource MaterialDesignRaisedButton}"
+                            Margin="20"
+                            materialDesign:ButtonAssist.CornerRadius="20"
+                            Command="{Binding OcsPopup}"
+                            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"/>
+                            </StackPanel>
+                        </Button>
                     </StackPanel>
-                </Button>
-
-                <Button HorizontalAlignment="Stretch"
-                    Style="{StaticResource MaterialDesignRaisedButton}"
-                    Margin="20"
-                    materialDesign:ButtonProgressAssist.Value="-1"
-                    materialDesign:ButtonProgressAssist.IsIndicatorVisible="True"
-                    materialDesign:ButtonProgressAssist.IsIndeterminate="True"
-                    Command="{Binding ServoConfigCommand}"
-                    Height="Auto" Width="Auto">
-                    <StackPanel>
-                        <materialDesign:PackIcon Kind="Gear" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Width="Auto" Height="50"/>
-                        <TextBlock Text="#Motor" VerticalAlignment="Stretch" HorizontalAlignment="Center"/>
+                </Grid>
+
+                <!--<DockPanel Grid.Column="0" Grid.Row="0" >
+                    <StackPanel VerticalAlignment="Center">
+                        <Button HorizontalAlignment="Stretch"
+                             Style="{StaticResource MaterialDesignRaisedButton}"
+                            Margin="20"
+                            materialDesign:ButtonAssist.CornerRadius="20"
+                            Command="{Binding InoutPupup}"
+                            Height="150" Width="250">
+                            <StackPanel>
+                                <materialDesign:PackIcon Kind="LedOn" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Width="Auto" Height="100"/>
+                                <TextBlock FontSize="20" Text="InOut" VerticalAlignment="Stretch" HorizontalAlignment="Center"/>
+                            </StackPanel>
+                        </Button>
                     </StackPanel>
-                </Button>
-
-                <Button HorizontalAlignment="Stretch"
-                    Style="{StaticResource MaterialDesignRaisedButton}"
-                    Margin="20"
-                    materialDesign:ButtonProgressAssist.Value="-1"
-                    materialDesign:ButtonProgressAssist.IsIndicatorVisible="True"
-                    materialDesign:ButtonProgressAssist.IsIndeterminate="True"
-                    Command="{Binding BatteryPopup}"
-                    Height="Auto" Width="Auto">
-                    <StackPanel>
-                        <materialDesign:PackIcon Kind="BatteryCharging" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Width="Auto" Height="50"/>
-                        <TextBlock Text="#Battery" VerticalAlignment="Stretch" HorizontalAlignment="Center"/>
+                </DockPanel>
+
+                <DockPanel Grid.Column="1" Grid.Row="0">
+                    <StackPanel VerticalAlignment="Center">
+                        <Button HorizontalAlignment="Stretch"
+                             Style="{StaticResource MaterialDesignRaisedButton}"
+                            Margin="20"
+                            materialDesign:ButtonAssist.CornerRadius="20"
+                            Command="{Binding ServoConfigCommand}"
+                            Height="150" Width="250">
+                            <StackPanel>
+                                <materialDesign:PackIcon Kind="Gear" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Width="Auto" Height="100"/>
+                                <TextBlock FontSize="20" Text="Motor" VerticalAlignment="Stretch" HorizontalAlignment="Center"/>
+                            </StackPanel>
+                        </Button>
                     </StackPanel>
-                </Button>
-
-                <Button HorizontalAlignment="Stretch"
-                    Style="{StaticResource MaterialDesignRaisedButton}"
-                    Margin="20"
-                    materialDesign:ButtonProgressAssist.Value="-1"
-                    materialDesign:ButtonProgressAssist.IsIndicatorVisible="True"
-                    materialDesign:ButtonProgressAssist.IsIndeterminate="True"
-                    Command="{Binding SteerPopup}"
-                    Height="auto" Width="auto">
-                    <StackPanel>
-                        <materialDesign:PackIcon Kind="CarHandBrake" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Width="auto" Height="50"/>
-                        <TextBlock Text="#Steering" VerticalAlignment="Stretch" HorizontalAlignment="Center"/>
+                </DockPanel>
+
+                <DockPanel Grid.Column="2" Grid.Row="0">
+                    <StackPanel VerticalAlignment="Center">
+                        <Button HorizontalAlignment="Stretch"
+                            Style="{StaticResource MaterialDesignRaisedButton}"
+                            Margin="20"
+                            materialDesign:ButtonAssist.CornerRadius="20"
+                            Command="{Binding BatteryPopup}"
+                            Height="150" Width="250">
+                            <StackPanel>
+                                <materialDesign:PackIcon Kind="BatteryCharging" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Width="Auto" Height="100"/>
+                                <TextBlock FontSize="20" Text="Battery" VerticalAlignment="Stretch" HorizontalAlignment="Center"/>
+                            </StackPanel>
+                        </Button>
                     </StackPanel>
-                </Button>
-
-                <Button HorizontalAlignment="Stretch"
-                    Style="{StaticResource MaterialDesignRaisedButton}"
-                    Margin="20"
-                    materialDesign:ButtonProgressAssist.Value="-1"
-                    materialDesign:ButtonProgressAssist.IsIndicatorVisible="True"
-                    materialDesign:ButtonProgressAssist.IsIndeterminate="True"
-                    Command="{Binding OpticalReaderPopup}"
-                    Height="auto" Width="auto">
-                    <StackPanel>
-                        <materialDesign:PackIcon Kind="WifiStrength2" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Width="auto" Height="50"/>
-                        <TextBlock Text="#Lazer" VerticalAlignment="Stretch" HorizontalAlignment="Center"/>
+                </DockPanel>
+
+                <DockPanel Grid.Column="0" Grid.Row="1">
+                    <StackPanel VerticalAlignment="Center">
+                        <Button HorizontalAlignment="Stretch"
+                            Style="{StaticResource MaterialDesignRaisedButton}"
+                            Margin="20"
+                            materialDesign:ButtonAssist.CornerRadius="20"
+                            Command="{Binding SteerPopup}"
+                            Height="150" Width="250">
+                            <StackPanel>
+                                <materialDesign:PackIcon Kind="CarHandBrake" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Width="auto" Height="100"/>
+                                <TextBlock FontSize="20" Text="Steering" VerticalAlignment="Stretch" HorizontalAlignment="Center"/>
+                            </StackPanel>
+                        </Button>
                     </StackPanel>
-                </Button>
-
-                <Button HorizontalAlignment="Stretch"
-                    Style="{StaticResource MaterialDesignRaisedButton}"
-                    Margin="20"
-                    materialDesign:ButtonProgressAssist.Value="-1"
-                    materialDesign:ButtonProgressAssist.IsIndicatorVisible="True"
-                    materialDesign:ButtonProgressAssist.IsIndeterminate="True"
-                    Command="{Binding OcsPopup}"
-                    Height="auto" Width="auto">
-                    <StackPanel>
-                        <materialDesign:PackIcon Kind="NetworkOutline" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Width="auto" Height="50"/>
-                        <TextBlock Text="#OCS" VerticalAlignment="Stretch" HorizontalAlignment="Center"/>
+                </DockPanel>
+
+                <DockPanel Grid.Column="1" Grid.Row="1">
+                    <StackPanel VerticalAlignment="Center">
+                        <Button HorizontalAlignment="Stretch"
+                            Style="{StaticResource MaterialDesignRaisedButton}"
+                            Margin="20"
+                            materialDesign:ButtonAssist.CornerRadius="20"
+                            Command="{Binding OpticalReaderPopup}"
+                            Height="150" Width="250">
+                            <StackPanel>
+                                <materialDesign:PackIcon Kind="WifiStrength2" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Width="auto" Height="100"/>
+                                <TextBlock FontSize="20" Text="Lazer" VerticalAlignment="Stretch" HorizontalAlignment="Center"/>
+                            </StackPanel>
+                        </Button>
+                    </StackPanel>
+                </DockPanel>
+
+                <DockPanel Grid.Column="2" Grid.Row="1">
+                    <StackPanel VerticalAlignment="Center">
+                        <Button HorizontalAlignment="Stretch"
+                            Style="{StaticResource MaterialDesignRaisedButton}"
+                            Margin="20"
+                            materialDesign:ButtonAssist.CornerRadius="20"
+                            Command="{Binding OcsPopup}"
+                            Height="150" Width="250">
+                            <StackPanel>
+                                <materialDesign:PackIcon Kind="NetworkOutline" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Width="auto" Height="100"/>
+                                <TextBlock FontSize="20" Text="OCS" VerticalAlignment="Stretch" HorizontalAlignment="Center"/>
+                            </StackPanel>
+                        </Button>
                     </StackPanel>
-                </Button>
-            </StackPanel>
+                </DockPanel>-->
+            </Grid>
         </Grid>
     </Grid>
-</UserControl>
+</UserControl>

+ 3 - 2
Dev/OHV/OHV.Vehicle/Concept/AnimatedSplashScreenWindow.xaml

@@ -4,7 +4,7 @@
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
         xmlns:local="clr-namespace:OHV.Vehicle.Concept"
-        
+        xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
         mc:Ignorable="d"
         Title="AnimatedSplashScreenWindow" Height="270" Width="750"
         WindowStyle="None"
@@ -75,7 +75,8 @@
 
         <Label x:Name="UpdateMessageLabel" Grid.Row="2" Foreground="LightGray" FontStyle="Italic" Height="30" Content="Start APPS ..." HorizontalAlignment="Center" VerticalAlignment="Center"/>
         <ProgressBar x:Name="ProgressBar" Grid.Row="3" Height="10" Foreground="BlueViolet" Style="{StaticResource FlatProgressBar}" Value="{Binding ProgressValue}"/>
-        <Label Grid.Row="1" Content="Please Wait..." Foreground="LightGray" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="20" Margin="302,39,309,41"/>
+        <ProgressBar Style="{StaticResource MaterialDesignCircularProgressBar}" Value="0" IsIndeterminate="True" Width="40" Height="40" Margin="352,10,358,65" Grid.Row="1"/>
+        <Label Grid.Row="1" Content="Please Wait..." Foreground="LightGray" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="20" Margin="302,55,311,27"/>
     </Grid>
 
 </Window>

+ 40 - 30
Dev/OHV/OHV.Vehicle/Concept/D_MainWindow.xaml

@@ -128,23 +128,26 @@
                 </Grid.RowDefinitions>
 
                 <Grid Grid.Row="0">
-                    <Border Margin="5" BorderBrush="#FF00FFD3" BorderThickness="2">
-                        <Button VerticalAlignment="Top" HorizontalAlignment="Center"
-                        Style="{StaticResource MaterialDesignRaisedButton}"
-                        materialDesign:ButtonProgressAssist.Value="-1"
-                        materialDesign:ButtonProgressAssist.IsIndicatorVisible="True"
-                        materialDesign:ButtonProgressAssist.IsIndeterminate="True"
-                        Content="Waiting. . ."
-                        Width="171" Margin="86,18,87,0" />
-                    </Border>
+                    <Border Margin="5" BorderBrush="#FF00FFD3" BorderThickness="2"/>
                     <StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center">
-
-                        <StackPanel Orientation="Vertical" VerticalAlignment="Center" HorizontalAlignment="Center">
-                            <Button Content="Sign In" Margin="3"/>
-                        </StackPanel>
-
-                        <StackPanel Orientation="Vertical" VerticalAlignment="Center" HorizontalAlignment="Center">
-                            <Button Content="Sign Out" Margin="3" Background="{x:Null}"/>
+                        <StackPanel Orientation="Vertical">
+                            
+                            <Button Margin="15" Width="200" Height="50"
+                                    Command="{Binding BuzzerStopCommand}">
+                                <StackPanel Orientation="Horizontal">
+                                    <materialDesign:PackIcon Kind="BullhornOutline" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Height="35" Width="auto" Margin="0,0,40,0"/>
+                                    <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Text="Buzzer Stop" FontSize="15"/>
+                                </StackPanel>
+                            </Button>
+                            
+                            <Button Margin="15" Width="200" Height="50"
+                                    Command="{Binding EmergencyStopCommand}">
+                                <StackPanel Orientation="Horizontal">
+                                    <materialDesign:PackIcon Kind="AlarmLightOutline" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Height="35" Width="auto" Margin="0,0,20,0"/>
+                                    <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Text="Emergency Stop" FontSize="15"/>
+                                </StackPanel>
+                            </Button>
+                            
                         </StackPanel>
                     </StackPanel>
                 </Grid>
@@ -154,15 +157,15 @@
                     </Border>
                     <StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center">
                         <StackPanel Orientation="Vertical" VerticalAlignment="Center" HorizontalAlignment="Center">
-                            <Button Content="Vehicle Model" Margin="3" IsEnabled="False"/>
-                            <Button Content="MyNetwork" Margin="3" IsEnabled="False"/>
-                            <Button Content="SysNetwork" Margin="3" IsEnabled="False"/>
+                            <Button Content="Vehicle ID" Margin="3" IsEnabled="False"/>
+                            <Button Content="Vehicle IP" Margin="3" IsEnabled="False"/>
+                            <Button Content="OCS IP" Margin="3" IsEnabled="False"/>
                         </StackPanel>
 
                         <StackPanel Orientation="Vertical" VerticalAlignment="Center" HorizontalAlignment="Center">
-                            <Button Content="GV00SXDI01" Margin="3" Background="{x:Null}"/>
-                            <Button Content="127.0.0.1" Margin="3" Background="{x:Null}"/>
-                            <Button Content="192.168.0.10" Margin="3" Background="{x:Null}"/>
+                            <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>
@@ -173,12 +176,19 @@
                     <StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center">
                         <StackPanel Orientation="Vertical" VerticalAlignment="Center" HorizontalAlignment="Center">
                             <Button Content="Version" Margin="3" IsEnabled="False"/>
-                            <Button Content="LifeTime" Margin="3" IsEnabled="False"/>
+                            <Button Margin="3" IsEnabled="False" Height="50">
+                                <StackPanel>
+                                    <TextBlock HorizontalAlignment="Center"><Run>List Builded</Run></TextBlock>
+                                    <TextBlock HorizontalAlignment="Center"><Run>Time</Run></TextBlock>
+                                </StackPanel>
+                            </Button>
                         </StackPanel>
 
                         <StackPanel Orientation="Vertical" VerticalAlignment="Center" HorizontalAlignment="Center">
-                            <Button Content="1.0.0.01" Margin="3" Background="{x:Null}"/>
-                            <Button Content="yyyy-MM-dd" 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\}'}"/>
+                            </Button>
                         </StackPanel>
                     </StackPanel>
                 </Grid>
@@ -195,21 +205,21 @@
 
                         <StackPanel>
                             <Button Margin="0,4,0,0" Height="30" Width="auto" Background="{x:Null}">
-                                <!--<ProgressBar IsIndeterminate ="False" Value="{Binding UsageCPU}" Height="Auto"/>-->
                                 <TextBlock HorizontalAlignment="Center"><Run Text="{Binding CPU, StringFormat={}{0:0.0}%}"/></TextBlock>
-                                <!--<TextBlock HorizontalAlignment="Right"><Run Text="{Binding TotalCPU}"/></TextBlock>-->
                             </Button>
-                            <!--<Button Content="{Binding CPU}" Margin="3" Background="{x:Null}"/>-->
+                            
                             <Button Margin="0,8,0,0" Background="{x:Null}">
                                 <StackPanel>
                                     <TextBlock Text="{Binding RAM, StringFormat={}{0:0.0} GB}" 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>
@@ -219,14 +229,14 @@
                         <StackPanel Orientation="Vertical" VerticalAlignment="Center" HorizontalAlignment="Center">
                             <Button Margin="15" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Height="60" Width="250">
                                 <StackPanel Orientation="Horizontal">
-                                    <materialDesign:PackIcon Kind="GooglePlay" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Height="40" Width="auto" Margin="0,0,20,0"/>
+                                    <materialDesign:PackIcon Kind="GooglePlay" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Height="40" Width="auto" Margin="0,0,20,0" Background="DarkGreen"/>
                                     <TextBlock Text="START" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="30"/>
                                 </StackPanel>
                             </Button>
 
                             <Button Margin="15" HorizontalAlignment="Stretch" Height="60">
                                 <StackPanel Orientation="Horizontal">
-                                    <materialDesign:PackIcon Kind="Stop" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Height="40" Width="auto" Margin="0,0,32,0"/>
+                                    <materialDesign:PackIcon Kind="Stop" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Height="40" Width="auto" Margin="0,0,32,0" Background="Orange"/>
                                     <TextBlock Text="STOP" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="30"/>
                                 </StackPanel>
                             </Button>

+ 17 - 0
Dev/OHV/OHV.Vehicle/Concept/D_MainWindowViewModel.cs

@@ -109,6 +109,20 @@ namespace OHV.Vehicle.Concept
             }
         }
 
+        private string _swVersion;
+        public string SwVersion
+        {
+            get { return this._swVersion; }
+            set { this.SetProperty( ref this._swVersion , value ); }
+        }
+
+        private DateTime _lastBuildedTime;
+        public DateTime LastBuildedTime
+        {
+            get { return this._lastBuildedTime; }
+            set { this.SetProperty( ref this._lastBuildedTime , value ); }
+        }
+
         IEventAggregator eventAggregator = null;
         VCSystem VCSystem = null;
         MessageController messageController;
@@ -166,6 +180,9 @@ namespace OHV.Vehicle.Concept
 
             this._totalCPU = dti.cpuResult;
             this._cDrive = dti.GetCDrive();
+
+            this.SwVersion = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString();
+            this.LastBuildedTime = new Helpler.AssemblyInfo().Get_BuildDateTime();
         }
 
         private void OcsConnectCallBack( HostConnectedEventArgs obj )

+ 47 - 0
Dev/OHV/OHV.Vehicle/Helper/AssemblyInfo.cs

@@ -0,0 +1,47 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Reflection;
+using System.Runtime.InteropServices;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OHV.Vehicle.Helpler
+{
+    public class AssemblyInfo
+    {
+        public System.DateTime Get_BuildDateTime( System.Version version = null )
+        {
+            // 주.부.빌드.수정
+            // 주 버전    Major Number
+            // 부 버전    Minor Number
+            // 빌드 번호  Build Number
+            // 수정 버전  Revision NUmber
+
+            //매개 변수가 존재할 경우
+            if ( version == null )
+                version = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;
+
+            //세번째 값(Build Number)은 2000년 1월 1일부터
+            //Build된 날짜까지의 총 일(Days) 수 이다.
+            int day = version.Build;
+            System.DateTime dtBuild = ( new System.DateTime( 2000 , 1 , 1 ) ).AddDays( day );
+
+            //네번째 값(Revision NUmber)은 자정으로부터 Build된
+            //시간까지의 지나간 초(Second) 값 이다.
+            int intSeconds = version.Revision;
+            intSeconds = intSeconds * 2;
+            dtBuild = dtBuild.AddSeconds( intSeconds );
+
+
+            //시차 보정
+            System.Globalization.DaylightTime daylingTime = System.TimeZone.CurrentTimeZone
+                    .GetDaylightChanges( dtBuild.Year );
+            if ( System.TimeZone.IsDaylightSavingTime( dtBuild , daylingTime ) )
+                dtBuild = dtBuild.Add( daylingTime.Delta );
+
+            return dtBuild;
+        }
+    }
+}

Dev/OHV/OHV.Vehicle/Helpler/DeskTopInfo.cs → Dev/OHV/OHV.Vehicle/Helper/DeskTopInfo.cs


+ 3 - 2
Dev/OHV/OHV.Vehicle/OHV.Vehicle.csproj

@@ -13,7 +13,7 @@
     <FileAlignment>512</FileAlignment>
     <ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
     <WarningLevel>4</WarningLevel>
-    <Deterministic>true</Deterministic>
+    <Deterministic>False</Deterministic>
     <NuGetPackageImportStamp>
     </NuGetPackageImportStamp>
     <PublishUrl>게시\</PublishUrl>
@@ -162,7 +162,8 @@
     <Compile Include="Concept\D_MainWindowViewModel.cs">
       <DependentUpon>D_MainWindow.xaml</DependentUpon>
     </Compile>
-    <Compile Include="Helpler\DeskTopInfo.cs" />
+    <Compile Include="Helper\AssemblyInfo.cs" />
+    <Compile Include="Helper\DeskTopInfo.cs" />
     <Compile Include="Logger.cs" />
     <Compile Include="MainWindow.xaml.cs">
       <DependentUpon>MainWindow.xaml</DependentUpon>

+ 3 - 3
Dev/OHV/OHV.Vehicle/Properties/AssemblyInfo.cs

@@ -50,6 +50,6 @@ using System.Windows;
 //
 // 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호를
 // 기본값으로 할 수 있습니다.
-// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion( "1.0.0.0" )]
-[assembly: AssemblyFileVersion( "1.0.0.0" )]
+ [assembly: AssemblyVersion("1.0.*")]
+//[assembly: AssemblyVersion( "1.0.0.0" )]
+//[assembly: AssemblyFileVersion( "1.0.0.0" )]