commit
efa1a6600d
60 changed files with 3334 additions and 0 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,52 @@ |
|||||
|
{ |
||||
|
"Version": 1, |
||||
|
"WorkspaceRootPath": "C:\\Users\\COMPUTER1\\Desktop\\mobi\\marking_gui\\", |
||||
|
"Documents": [ |
||||
|
{ |
||||
|
"AbsoluteMoniker": "D:0:0:{9E96D5BE-9375-4ED3-82DE-F200F83EBC2F}|marking_gui\\marking_gui.csproj|c:\\users\\computer1\\desktop\\mobi\\marking_gui\\marking_gui\\mainwindow.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}", |
||||
|
"RelativeMoniker": "D:0:0:{9E96D5BE-9375-4ED3-82DE-F200F83EBC2F}|marking_gui\\marking_gui.csproj|solutionrelative:marking_gui\\mainwindow.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}" |
||||
|
}, |
||||
|
{ |
||||
|
"AbsoluteMoniker": "D:0:0:{9E96D5BE-9375-4ED3-82DE-F200F83EBC2F}|marking_gui\\marking_gui.csproj|C:\\Users\\COMPUTER1\\Desktop\\mobi\\marking_gui\\marking_gui\\mainwindow.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
||||
|
"RelativeMoniker": "D:0:0:{9E96D5BE-9375-4ED3-82DE-F200F83EBC2F}|marking_gui\\marking_gui.csproj|solutionrelative:marking_gui\\mainwindow.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
||||
|
} |
||||
|
], |
||||
|
"DocumentGroupContainers": [ |
||||
|
{ |
||||
|
"Orientation": 0, |
||||
|
"VerticalTabListWidth": 256, |
||||
|
"DocumentGroups": [ |
||||
|
{ |
||||
|
"DockedWidth": 200, |
||||
|
"SelectedChildIndex": 0, |
||||
|
"Children": [ |
||||
|
{ |
||||
|
"$type": "Document", |
||||
|
"DocumentIndex": 0, |
||||
|
"Title": "MainWindow.xaml", |
||||
|
"DocumentMoniker": "C:\\Users\\COMPUTER1\\Desktop\\mobi\\marking_gui\\marking_gui\\MainWindow.xaml", |
||||
|
"RelativeDocumentMoniker": "marking_gui\\MainWindow.xaml", |
||||
|
"ToolTip": "C:\\Users\\COMPUTER1\\Desktop\\mobi\\marking_gui\\marking_gui\\MainWindow.xaml", |
||||
|
"RelativeToolTip": "marking_gui\\MainWindow.xaml", |
||||
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|", |
||||
|
"WhenOpened": "2026-06-05T02:08:02.816Z", |
||||
|
"EditorCaption": "" |
||||
|
}, |
||||
|
{ |
||||
|
"$type": "Document", |
||||
|
"DocumentIndex": 1, |
||||
|
"Title": "MainWindow.xaml.cs", |
||||
|
"DocumentMoniker": "C:\\Users\\COMPUTER1\\Desktop\\mobi\\marking_gui\\marking_gui\\MainWindow.xaml.cs", |
||||
|
"RelativeDocumentMoniker": "marking_gui\\MainWindow.xaml.cs", |
||||
|
"ToolTip": "C:\\Users\\COMPUTER1\\Desktop\\mobi\\marking_gui\\marking_gui\\MainWindow.xaml.cs", |
||||
|
"RelativeToolTip": "marking_gui\\MainWindow.xaml.cs", |
||||
|
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", |
||||
|
"Icon": "00000000-0000-0000-0000-000000000000.000000|iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADKSURBVDhP7ZMhDoNAEEX/VlStqMYwJ\u002BgFegguwB1AIsC1ZhWKE3AVkj3DojCEBIOumZqWLENoSVPZl6zYPz8/k5ldQHC\u002BWbbtyFLfjW1HDvOGbTuyMYaJiIui2AxUYd5wN92ljvB0RHe9KCLiKIqglEJZlkr6VvgdAAARMQAkScJpmm52MiNnQEQ8DMO\u002BEGPMqviag3\u002BkZ\u002BZt8Yn0HPzLN/wDfh2gtYZzbnOVzjkOgmChLd52XddcVRX6vvflGa01sixDHMef/8ReHgD\u002BXy4W5TMHAAAAAElFTkSuQmCC", |
||||
|
"WhenOpened": "2026-06-05T02:08:02.789Z" |
||||
|
} |
||||
|
] |
||||
|
} |
||||
|
] |
||||
|
} |
||||
|
] |
||||
|
} |
||||
@ -0,0 +1,52 @@ |
|||||
|
{ |
||||
|
"Version": 1, |
||||
|
"WorkspaceRootPath": "C:\\Users\\COMPUTER1\\Desktop\\mobi\\marking_gui\\", |
||||
|
"Documents": [ |
||||
|
{ |
||||
|
"AbsoluteMoniker": "D:0:0:{9E96D5BE-9375-4ED3-82DE-F200F83EBC2F}|marking_gui\\marking_gui.csproj|c:\\users\\computer1\\desktop\\mobi\\marking_gui\\marking_gui\\mainwindow.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}", |
||||
|
"RelativeMoniker": "D:0:0:{9E96D5BE-9375-4ED3-82DE-F200F83EBC2F}|marking_gui\\marking_gui.csproj|solutionrelative:marking_gui\\mainwindow.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}" |
||||
|
}, |
||||
|
{ |
||||
|
"AbsoluteMoniker": "D:0:0:{9E96D5BE-9375-4ED3-82DE-F200F83EBC2F}|marking_gui\\marking_gui.csproj|C:\\Users\\COMPUTER1\\Desktop\\mobi\\marking_gui\\marking_gui\\mainwindow.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
||||
|
"RelativeMoniker": "D:0:0:{9E96D5BE-9375-4ED3-82DE-F200F83EBC2F}|marking_gui\\marking_gui.csproj|solutionrelative:marking_gui\\mainwindow.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
||||
|
} |
||||
|
], |
||||
|
"DocumentGroupContainers": [ |
||||
|
{ |
||||
|
"Orientation": 0, |
||||
|
"VerticalTabListWidth": 256, |
||||
|
"DocumentGroups": [ |
||||
|
{ |
||||
|
"DockedWidth": 200, |
||||
|
"SelectedChildIndex": 0, |
||||
|
"Children": [ |
||||
|
{ |
||||
|
"$type": "Document", |
||||
|
"DocumentIndex": 0, |
||||
|
"Title": "MainWindow.xaml", |
||||
|
"DocumentMoniker": "C:\\Users\\COMPUTER1\\Desktop\\mobi\\marking_gui\\marking_gui\\MainWindow.xaml", |
||||
|
"RelativeDocumentMoniker": "marking_gui\\MainWindow.xaml", |
||||
|
"ToolTip": "C:\\Users\\COMPUTER1\\Desktop\\mobi\\marking_gui\\marking_gui\\MainWindow.xaml", |
||||
|
"RelativeToolTip": "marking_gui\\MainWindow.xaml", |
||||
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|", |
||||
|
"WhenOpened": "2026-06-05T02:08:02.816Z", |
||||
|
"EditorCaption": "" |
||||
|
}, |
||||
|
{ |
||||
|
"$type": "Document", |
||||
|
"DocumentIndex": 1, |
||||
|
"Title": "MainWindow.xaml.cs", |
||||
|
"DocumentMoniker": "C:\\Users\\COMPUTER1\\Desktop\\mobi\\marking_gui\\marking_gui\\MainWindow.xaml.cs", |
||||
|
"RelativeDocumentMoniker": "marking_gui\\MainWindow.xaml.cs", |
||||
|
"ToolTip": "C:\\Users\\COMPUTER1\\Desktop\\mobi\\marking_gui\\marking_gui\\MainWindow.xaml.cs", |
||||
|
"RelativeToolTip": "marking_gui\\MainWindow.xaml.cs", |
||||
|
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", |
||||
|
"Icon": "00000000-0000-0000-0000-000000000000.000000|iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADKSURBVDhP7ZMhDoNAEEX/VlStqMYwJ\u002BgFegguwB1AIsC1ZhWKE3AVkj3DojCEBIOumZqWLENoSVPZl6zYPz8/k5ldQHC\u002BWbbtyFLfjW1HDvOGbTuyMYaJiIui2AxUYd5wN92ljvB0RHe9KCLiKIqglEJZlkr6VvgdAAARMQAkScJpmm52MiNnQEQ8DMO\u002BEGPMqviag3\u002BkZ\u002BZt8Yn0HPzLN/wDfh2gtYZzbnOVzjkOgmChLd52XddcVRX6vvflGa01sixDHMef/8ReHgD\u002BXy4W5TMHAAAAAElFTkSuQmCC", |
||||
|
"WhenOpened": "2026-06-05T02:08:02.789Z" |
||||
|
} |
||||
|
] |
||||
|
} |
||||
|
] |
||||
|
} |
||||
|
] |
||||
|
} |
||||
|
After Width: | Height: | Size: 243 KiB |
|
After Width: | Height: | Size: 275 KiB |
@ -0,0 +1,3 @@ |
|||||
|
<Solution> |
||||
|
<Project Path="marking_gui/marking_gui.csproj" Id="9e96d5be-9375-4ed3-82de-f200f83ebc2f" /> |
||||
|
</Solution> |
||||
@ -0,0 +1,11 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8" ?> |
||||
|
<configuration> |
||||
|
<connectionStrings> |
||||
|
<add name="MssqlConnection" |
||||
|
connectionString="Server=localhost;Database=MarkingDb;Trusted_Connection=True;" |
||||
|
providerName="System.Data.SqlClient" /> |
||||
|
</connectionStrings> |
||||
|
<startup> |
||||
|
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" /> |
||||
|
</startup> |
||||
|
</configuration> |
||||
@ -0,0 +1,8 @@ |
|||||
|
<Application x:Class="marking_gui.App" |
||||
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" |
||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" |
||||
|
xmlns:local="clr-namespace:marking_gui"> |
||||
|
<Application.Resources> |
||||
|
|
||||
|
</Application.Resources> |
||||
|
</Application> |
||||
@ -0,0 +1,39 @@ |
|||||
|
using System; |
||||
|
using System.Collections.Generic; |
||||
|
using System.Configuration; |
||||
|
using System.Data; |
||||
|
using System.Linq; |
||||
|
using System.Threading.Tasks; |
||||
|
using System.Windows; |
||||
|
|
||||
|
namespace marking_gui |
||||
|
{ |
||||
|
/// <summary>
|
||||
|
/// App.xaml에 대한 상호 작용 논리
|
||||
|
/// </summary>
|
||||
|
public partial class App : Application |
||||
|
{ |
||||
|
protected override void OnStartup(StartupEventArgs e) |
||||
|
{ |
||||
|
base.OnStartup(e); |
||||
|
|
||||
|
// 로그인 창이 닫힐 때 앱이 자동 종료되는 것을 방지하기 위해 ExplicitShutdown으로 설정
|
||||
|
ShutdownMode = ShutdownMode.OnExplicitShutdown; |
||||
|
|
||||
|
var loginWindow = new Housing.Login.StartupLoginWindow(); |
||||
|
if (loginWindow.ShowDialog() == true) |
||||
|
{ |
||||
|
var loginResult = loginWindow.Result; |
||||
|
var mainWindow = new MainWindow(loginResult); |
||||
|
|
||||
|
// 메인 창이 닫힐 때 앱이 정상 종료되도록 기본 모드로 원복
|
||||
|
ShutdownMode = ShutdownMode.OnLastWindowClose; |
||||
|
mainWindow.Show(); |
||||
|
} |
||||
|
else |
||||
|
{ |
||||
|
Shutdown(); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,293 @@ |
|||||
|
<Window x:Class="marking_gui.MainWindow" |
||||
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" |
||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" |
||||
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" |
||||
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" |
||||
|
xmlns:local="clr-namespace:marking_gui" |
||||
|
mc:Ignorable="d" |
||||
|
Title="양산형 테스트 기기 모니터링 시스템" Height="700" Width="900" |
||||
|
MinWidth="900" MinHeight="700" WindowState="Maximized" |
||||
|
WindowStartupLocation="CenterScreen" Background="#F3F4F6"> |
||||
|
<Window.Resources> |
||||
|
<!-- 버튼 스타일 --> |
||||
|
<Style x:Key="ModernButtonStyle" TargetType="Button"> |
||||
|
<Setter Property="Background" Value="#3B82F6"/> |
||||
|
<Setter Property="Foreground" Value="White"/> |
||||
|
<Setter Property="FontSize" Value="16"/> |
||||
|
<Setter Property="FontWeight" Value="Bold"/> |
||||
|
<Setter Property="Focusable" Value="False"/> |
||||
|
<Setter Property="BorderThickness" Value="0"/> |
||||
|
<Setter Property="Padding" Value="15,10"/> |
||||
|
<Setter Property="Template"> |
||||
|
<Setter.Value> |
||||
|
<ControlTemplate TargetType="Button"> |
||||
|
<Border Background="{TemplateBinding Background}" |
||||
|
CornerRadius="6" |
||||
|
BorderThickness="{TemplateBinding BorderThickness}" |
||||
|
BorderBrush="{TemplateBinding BorderBrush}"> |
||||
|
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/> |
||||
|
</Border> |
||||
|
</ControlTemplate> |
||||
|
</Setter.Value> |
||||
|
</Setter> |
||||
|
<Style.Triggers> |
||||
|
<Trigger Property="IsMouseOver" Value="True"> |
||||
|
<Setter Property="Background" Value="#2563EB"/> |
||||
|
</Trigger> |
||||
|
<Trigger Property="IsEnabled" Value="False"> |
||||
|
<Setter Property="Background" Value="#D1D5DB"/> |
||||
|
<Setter Property="Foreground" Value="#9CA3AF"/> |
||||
|
</Trigger> |
||||
|
</Style.Triggers> |
||||
|
</Style> |
||||
|
|
||||
|
<!-- 스타트 버튼 전용 스타일 (하단 영역 꽉 채우는 형태) --> |
||||
|
<Style x:Key="StartButtonStyle" TargetType="Button"> |
||||
|
<Setter Property="Background" Value="#10B981"/> |
||||
|
<Setter Property="Foreground" Value="White"/> |
||||
|
<Setter Property="FontSize" Value="24"/> |
||||
|
<Setter Property="FontWeight" Value="Bold"/> |
||||
|
<Setter Property="Focusable" Value="False"/> |
||||
|
<Setter Property="BorderThickness" Value="0"/> |
||||
|
<Setter Property="Template"> |
||||
|
<Setter.Value> |
||||
|
<ControlTemplate TargetType="Button"> |
||||
|
<Border Background="{TemplateBinding Background}"> |
||||
|
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/> |
||||
|
</Border> |
||||
|
</ControlTemplate> |
||||
|
</Setter.Value> |
||||
|
</Setter> |
||||
|
<Style.Triggers> |
||||
|
<Trigger Property="IsMouseOver" Value="True"> |
||||
|
<Setter Property="Background" Value="#059669"/> |
||||
|
</Trigger> |
||||
|
<Trigger Property="IsEnabled" Value="False"> |
||||
|
<Setter Property="Background" Value="#E5E7EB"/> |
||||
|
<Setter Property="Foreground" Value="#9CA3AF"/> |
||||
|
</Trigger> |
||||
|
</Style.Triggers> |
||||
|
</Style> |
||||
|
|
||||
|
<!-- 카드 보더 스타일 --> |
||||
|
<Style x:Key="CardBorderStyle" TargetType="Border"> |
||||
|
<Setter Property="Background" Value="White"/> |
||||
|
<Setter Property="CornerRadius" Value="8"/> |
||||
|
<Setter Property="BorderBrush" Value="#E5E7EB"/> |
||||
|
<Setter Property="BorderThickness" Value="1"/> |
||||
|
<Setter Property="Padding" Value="20"/> |
||||
|
<Setter Property="Margin" Value="10"/> |
||||
|
</Style> |
||||
|
</Window.Resources> |
||||
|
|
||||
|
<Grid> |
||||
|
<Grid.RowDefinitions> |
||||
|
<!-- 상단 헤더 --> |
||||
|
<RowDefinition Height="70"/> |
||||
|
<!-- 메인 콘텐츠 --> |
||||
|
<RowDefinition Height="*"/> |
||||
|
<!-- 하단 푸터 (스타트 버튼 배치) --> |
||||
|
<RowDefinition Height="120"/> |
||||
|
<!-- 최하단 바 (설정 버튼 배치) --> |
||||
|
<RowDefinition Height="50"/> |
||||
|
</Grid.RowDefinitions> |
||||
|
|
||||
|
<!-- 1. 상단 헤더 영역 --> |
||||
|
<Border Grid.Row="0" Background="#1F2937" Padding="20,10"> |
||||
|
<Grid> |
||||
|
<Grid.ColumnDefinitions> |
||||
|
<ColumnDefinition Width="*"/> |
||||
|
<ColumnDefinition Width="Auto"/> |
||||
|
</Grid.ColumnDefinitions> |
||||
|
<StackPanel Orientation="Horizontal" VerticalAlignment="Center"> |
||||
|
<TextBlock Text="Marking" Foreground="White" FontSize="20" FontWeight="Bold" VerticalAlignment="Center"/> |
||||
|
<TextBlock Text="v1.0.0 (Updated: 2026-06-05)" Foreground="#9CA3AF" FontSize="12" VerticalAlignment="Bottom" Margin="12,0,0,2"/> |
||||
|
<TextBlock x:Name="txtLoginInfo" Text="[작업자: --- | 모델: --- | 라인: ---]" Foreground="#9CA3AF" FontSize="13" FontWeight="Medium" VerticalAlignment="Bottom" Margin="25,0,0,2"/> |
||||
|
</StackPanel> |
||||
|
<StackPanel Grid.Column="1" Orientation="Horizontal" VerticalAlignment="Center"> |
||||
|
<TextBlock x:Name="txtCurrentTime" Text="0000-00-00 00:00:00" Foreground="White" FontSize="16" FontWeight="Bold" VerticalAlignment="Center" Margin="0,0,20,0"/> |
||||
|
<TextBlock Text="상태: 대기 중" x:Name="txtSystemStatus" Foreground="#10B981" FontSize="16" FontWeight="Bold" VerticalAlignment="Center"/> |
||||
|
</StackPanel> |
||||
|
</Grid> |
||||
|
</Border> |
||||
|
|
||||
|
<!-- 2. 메인 콘텐츠 영역 --> |
||||
|
<Grid Grid.Row="1" Margin="10"> |
||||
|
<Grid.ColumnDefinitions> |
||||
|
<!-- 좌측: S/N 입력 및 이전 단계 결과 (비율 3.5:6.5) --> |
||||
|
<ColumnDefinition Width="3.5*"/> |
||||
|
<!-- 우측: 현재 측정 데이터 및 판정 --> |
||||
|
<ColumnDefinition Width="6.5*"/> |
||||
|
</Grid.ColumnDefinitions> |
||||
|
|
||||
|
<!-- 좌측 패널 (Grid로 감싸서 반응형 스케일 지원) --> |
||||
|
<Grid Grid.Column="0"> |
||||
|
<Grid.RowDefinitions> |
||||
|
<RowDefinition Height="Auto"/> |
||||
|
<RowDefinition Height="*"/> |
||||
|
</Grid.RowDefinitions> |
||||
|
|
||||
|
<!-- 시리얼 입력 카드 --> |
||||
|
<Border Grid.Row="0" Style="{StaticResource CardBorderStyle}"> |
||||
|
<StackPanel> |
||||
|
<TextBlock Text="S/N 입력" FontSize="16" FontWeight="Bold" Foreground="#374151" Margin="0,0,0,10"/> |
||||
|
<Grid> |
||||
|
<Grid.ColumnDefinitions> |
||||
|
<ColumnDefinition Width="*"/> |
||||
|
<ColumnDefinition Width="65"/> |
||||
|
</Grid.ColumnDefinitions> |
||||
|
<TextBox x:Name="txtSerial" Grid.Column="0" FontSize="18" Padding="8,6" Margin="0,0,8,0" |
||||
|
VerticalContentAlignment="Center" BorderBrush="#D1D5DB" BorderThickness="1" GotFocus="txtSerial_GotFocus" KeyDown="txtSerial_KeyDown"/> |
||||
|
<Button x:Name="btnSearchSerial" Grid.Column="1" Content="조회" Style="{StaticResource ModernButtonStyle}" Click="btnSearchSerial_Click"/> |
||||
|
</Grid> |
||||
|
<TextBlock Text="※ 테스트 S/N: PASS1234 / FAIL5678" Foreground="#9CA3AF" FontSize="11" Margin="0,8,0,0"/> |
||||
|
</StackPanel> |
||||
|
</Border> |
||||
|
|
||||
|
<!-- 이전 시험 단계 결과 카드 (최소 높이 안전장치 추가) --> |
||||
|
<Border Grid.Row="1" Style="{StaticResource CardBorderStyle}" MinHeight="250"> |
||||
|
<Grid> |
||||
|
<Grid.RowDefinitions> |
||||
|
<RowDefinition Height="Auto"/> |
||||
|
<RowDefinition Height="*"/> |
||||
|
</Grid.RowDefinitions> |
||||
|
<TextBlock Grid.Row="0" Text="이전 시험 단계 결과" FontSize="16" FontWeight="Bold" Foreground="#374151" Margin="0,0,0,10"/> |
||||
|
|
||||
|
<Grid Grid.Row="1" Margin="0,5,0,0"> |
||||
|
<Grid.RowDefinitions> |
||||
|
<RowDefinition Height="*"/> |
||||
|
<RowDefinition Height="Auto"/> |
||||
|
<RowDefinition Height="*"/> |
||||
|
<RowDefinition Height="Auto"/> |
||||
|
<RowDefinition Height="*"/> |
||||
|
</Grid.RowDefinitions> |
||||
|
|
||||
|
<!-- Housing 검사 --> |
||||
|
<Grid Grid.Row="0" VerticalAlignment="Center"> |
||||
|
<Grid.ColumnDefinitions> |
||||
|
<ColumnDefinition Width="*"/> |
||||
|
<ColumnDefinition Width="Auto"/> |
||||
|
</Grid.ColumnDefinitions> |
||||
|
<TextBlock Text="1. Housing" FontSize="18" Foreground="#4B5563" FontWeight="SemiBold"/> |
||||
|
<TextBlock x:Name="txtPrevHousing" Grid.Column="1" Text="대기" FontSize="20" FontWeight="Bold" Foreground="#9CA3AF"/> |
||||
|
</Grid> |
||||
|
<Separator Grid.Row="1" Background="#F3F4F6"/> |
||||
|
|
||||
|
<!-- Cal 검사 --> |
||||
|
<Grid Grid.Row="2" VerticalAlignment="Center"> |
||||
|
<Grid.ColumnDefinitions> |
||||
|
<ColumnDefinition Width="*"/> |
||||
|
<ColumnDefinition Width="Auto"/> |
||||
|
</Grid.ColumnDefinitions> |
||||
|
<TextBlock Text="2. Calibration" FontSize="18" Foreground="#4B5563" FontWeight="SemiBold"/> |
||||
|
<TextBlock x:Name="txtPrevCal" Grid.Column="1" Text="대기" FontSize="20" FontWeight="Bold" Foreground="#9CA3AF"/> |
||||
|
</Grid> |
||||
|
<Separator Grid.Row="3" Background="#F3F4F6"/> |
||||
|
|
||||
|
<!-- EOL 검사 --> |
||||
|
<Grid Grid.Row="4" VerticalAlignment="Center"> |
||||
|
<Grid.ColumnDefinitions> |
||||
|
<ColumnDefinition Width="*"/> |
||||
|
<ColumnDefinition Width="Auto"/> |
||||
|
</Grid.ColumnDefinitions> |
||||
|
<TextBlock Text="3. EOL" FontSize="18" Foreground="#4B5563" FontWeight="SemiBold"/> |
||||
|
<TextBlock x:Name="txtPrevEol" Grid.Column="1" Text="대기" FontSize="20" FontWeight="Bold" Foreground="#9CA3AF"/> |
||||
|
</Grid> |
||||
|
</Grid> |
||||
|
</Grid> |
||||
|
</Border> |
||||
|
</Grid> <!-- 좌측 Grid 닫기 --> |
||||
|
|
||||
|
<!-- 우측 패널 --> |
||||
|
<Grid Grid.Column="1"> |
||||
|
<Grid.RowDefinitions> |
||||
|
<!-- 현재 전압 / 전류 측정값 (비율 1.8:3) --> |
||||
|
<RowDefinition Height="1.8*"/> |
||||
|
<!-- 최종 판정 영역 --> |
||||
|
<RowDefinition Height="3*"/> |
||||
|
</Grid.RowDefinitions> |
||||
|
|
||||
|
<!-- 전압/전류 측정값 표시 카드 --> |
||||
|
<Grid Grid.Row="0"> |
||||
|
<Grid.ColumnDefinitions> |
||||
|
<ColumnDefinition Width="*"/> |
||||
|
<ColumnDefinition Width="*"/> |
||||
|
</Grid.ColumnDefinitions> |
||||
|
|
||||
|
<!-- 전압 --> |
||||
|
<Border Grid.Column="0" Style="{StaticResource CardBorderStyle}" MinWidth="220" MinHeight="160" Padding="20,10"> |
||||
|
<Grid> |
||||
|
<Grid.RowDefinitions> |
||||
|
<RowDefinition Height="Auto"/> |
||||
|
<RowDefinition Height="*"/> |
||||
|
<RowDefinition Height="Auto"/> |
||||
|
</Grid.RowDefinitions> |
||||
|
<TextBlock Grid.Row="0" Text="측정 전압 (Voltage)" FontSize="14" Foreground="#6B7280" HorizontalAlignment="Center"/> |
||||
|
<Viewbox Grid.Row="1" Stretch="Uniform" Margin="0,5"> |
||||
|
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center"> |
||||
|
<TextBlock x:Name="txtVoltage" Text="---.-" FontSize="54" FontWeight="Bold" Foreground="#1F2937"/> |
||||
|
<TextBlock Text=" V" FontSize="20" FontWeight="Bold" Foreground="#9CA3AF" VerticalAlignment="Bottom" Margin="5,0,0,8"/> |
||||
|
</StackPanel> |
||||
|
</Viewbox> |
||||
|
<TextBlock x:Name="txtVoltageRangeGuide" Grid.Row="2" Text="기준범위: 4.0V ~ 6.0V" FontSize="12" Foreground="#9CA3AF" HorizontalAlignment="Center"/> |
||||
|
</Grid> |
||||
|
</Border> |
||||
|
|
||||
|
<!-- 전류 --> |
||||
|
<Border Grid.Column="1" Style="{StaticResource CardBorderStyle}" MinWidth="220" MinHeight="160" Padding="20,10"> |
||||
|
<Grid> |
||||
|
<Grid.RowDefinitions> |
||||
|
<RowDefinition Height="Auto"/> |
||||
|
<RowDefinition Height="*"/> |
||||
|
<RowDefinition Height="Auto"/> |
||||
|
</Grid.RowDefinitions> |
||||
|
<TextBlock Grid.Row="0" Text="측정 전류 (Current)" FontSize="14" Foreground="#6B7280" HorizontalAlignment="Center"/> |
||||
|
<Viewbox Grid.Row="1" Stretch="Uniform" Margin="0,5"> |
||||
|
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center"> |
||||
|
<TextBlock x:Name="txtCurrent" Text="--.-" FontSize="54" FontWeight="Bold" Foreground="#1F2937"/> |
||||
|
<TextBlock Text=" A" FontSize="20" FontWeight="Bold" Foreground="#9CA3AF" VerticalAlignment="Bottom" Margin="5,0,0,8"/> |
||||
|
</StackPanel> |
||||
|
</Viewbox> |
||||
|
<TextBlock x:Name="txtCurrentRangeGuide" Grid.Row="2" Text="기준범위: 8.0A ~ 10.0A" FontSize="12" Foreground="#9CA3AF" HorizontalAlignment="Center"/> |
||||
|
</Grid> |
||||
|
</Border> |
||||
|
</Grid> |
||||
|
|
||||
|
<!-- 최종 합/불 판정 영역 카드 --> |
||||
|
<Border Grid.Row="1" Style="{StaticResource CardBorderStyle}" x:Name="borderFinalResult" Background="#E5E7EB" MinHeight="200"> |
||||
|
<Grid> |
||||
|
<Grid.RowDefinitions> |
||||
|
<RowDefinition Height="Auto"/> |
||||
|
<RowDefinition Height="*"/> |
||||
|
</Grid.RowDefinitions> |
||||
|
<TextBlock Grid.Row="0" Text="최종 판정 결과" FontSize="16" FontWeight="SemiBold" Foreground="#4B5563" HorizontalAlignment="Center" Margin="10,15,10,5"/> |
||||
|
<Viewbox Grid.Row="1" Stretch="Uniform" Margin="10"> |
||||
|
<StackPanel HorizontalAlignment="Center"> |
||||
|
<TextBlock x:Name="txtFinalResult" Text="대 기 중" FontSize="80" FontWeight="Black" Foreground="#9CA3AF" HorizontalAlignment="Center"/> |
||||
|
<TextBlock x:Name="txtFinalSerial" Text="S/N: ---" FontSize="16" FontWeight="Bold" Foreground="#6B7280" HorizontalAlignment="Center" Margin="0,10,0,0"/> |
||||
|
</StackPanel> |
||||
|
</Viewbox> |
||||
|
</Grid> |
||||
|
</Border> |
||||
|
</Grid> |
||||
|
</Grid> |
||||
|
|
||||
|
<!-- 3. 하단 푸터 (전체 영역이 스타트 버튼) --> |
||||
|
<Border Grid.Row="2" BorderBrush="#D1D5DB" BorderThickness="0,1,0,0"> |
||||
|
<Button x:Name="btnStart" Content="▶ 검사 시작 (START)" |
||||
|
Style="{StaticResource StartButtonStyle}" IsEnabled="False" Click="btnStart_Click" |
||||
|
HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/> |
||||
|
</Border> |
||||
|
|
||||
|
<!-- 4. 최하단 바 (파라미터 버튼 배치) --> |
||||
|
<Border Grid.Row="3" Background="#1F2937" BorderBrush="#111827" BorderThickness="0,1,0,0" Padding="20,0"> |
||||
|
<Grid> |
||||
|
<!-- 파라미터 설정 버튼 (좌측 정렬) --> |
||||
|
<Button x:Name="btnOpenSettings" Content="⚙ 파라미터 설정" Width="140" Height="36" |
||||
|
Style="{StaticResource ModernButtonStyle}" Click="btnOpenSettings_Click" |
||||
|
HorizontalAlignment="Left" VerticalAlignment="Center" FontSize="14" Padding="10,0"/> |
||||
|
</Grid> |
||||
|
</Border> |
||||
|
</Grid> |
||||
|
</Window> |
||||
|
|
||||
@ -0,0 +1,288 @@ |
|||||
|
using System; |
||||
|
using System.Windows; |
||||
|
using System.Windows.Media; |
||||
|
using System.Windows.Threading; |
||||
|
using marking_gui.Models; |
||||
|
using marking_gui.Services; |
||||
|
|
||||
|
namespace marking_gui |
||||
|
{ |
||||
|
/// <summary>
|
||||
|
/// MainWindow.xaml에 대한 상호 작용 논리
|
||||
|
/// </summary>
|
||||
|
public partial class MainWindow : Window |
||||
|
{ |
||||
|
private DispatcherTimer _measurementTimer; |
||||
|
private DispatcherTimer _clockTimer; |
||||
|
private int _timerTickCount = 0; |
||||
|
|
||||
|
// 비즈니스 로직 및 가상 하드웨어/DB 서비스 분리
|
||||
|
private readonly MssqlDatabaseService _database = new MssqlDatabaseService(); |
||||
|
private readonly MockMeasurer _measurer = new MockMeasurer(); |
||||
|
private MeasurementLimits _limits = new MeasurementLimits(); |
||||
|
private readonly Housing.Login.StartupLoginWindowResult _loginInfo; |
||||
|
|
||||
|
public MainWindow() : this(new Housing.Login.StartupLoginWindowResult { Operator = "SYSTEM", Model = "DEFAULT", LineNo = "DEFAULT" }) |
||||
|
{ |
||||
|
} |
||||
|
|
||||
|
public MainWindow(Housing.Login.StartupLoginWindowResult loginResult) |
||||
|
{ |
||||
|
InitializeComponent(); |
||||
|
_loginInfo = loginResult ?? new Housing.Login.StartupLoginWindowResult { Operator = "SYSTEM", Model = "DEFAULT", LineNo = "DEFAULT" }; |
||||
|
|
||||
|
InitializeTimer(); |
||||
|
InitializeClock(); |
||||
|
ResetUI(); |
||||
|
InitializeLimits(); |
||||
|
DisplayLoginInfo(); |
||||
|
} |
||||
|
|
||||
|
private void DisplayLoginInfo() |
||||
|
{ |
||||
|
if (txtLoginInfo != null) |
||||
|
{ |
||||
|
txtLoginInfo.Text = string.Format("[작업자: {0} | 모델: {1} | 라인: {2}]", |
||||
|
_loginInfo.Operator, |
||||
|
string.IsNullOrEmpty(_loginInfo.Model) ? "N/A" : _loginInfo.Model, |
||||
|
string.IsNullOrEmpty(_loginInfo.LineNo) ? "N/A" : _loginInfo.LineNo); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
private void InitializeTimer() |
||||
|
{ |
||||
|
_measurementTimer = new DispatcherTimer(); |
||||
|
_measurementTimer.Interval = TimeSpan.FromMilliseconds(200); // 0.2초마다 갱신 (시뮬레이션 효과 연출)
|
||||
|
_measurementTimer.Tick += MeasurementTimer_Tick; |
||||
|
} |
||||
|
|
||||
|
private void InitializeClock() |
||||
|
{ |
||||
|
_clockTimer = new DispatcherTimer(); |
||||
|
_clockTimer.Interval = TimeSpan.FromSeconds(1); |
||||
|
_clockTimer.Tick += (s, e) => { |
||||
|
txtCurrentTime.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); |
||||
|
}; |
||||
|
_clockTimer.Start(); |
||||
|
txtCurrentTime.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); |
||||
|
} |
||||
|
|
||||
|
private void InitializeLimits() |
||||
|
{ |
||||
|
UpdateRangeGuides(); |
||||
|
} |
||||
|
|
||||
|
private void UpdateRangeGuides() |
||||
|
{ |
||||
|
txtVoltageRangeGuide.Text = string.Format("기준범위: {0:F1}V ~ {1:F1}V", _limits.MinVoltage, _limits.MaxVoltage); |
||||
|
txtCurrentRangeGuide.Text = string.Format("기준범위: {0:F1}A ~ {1:F1}A", _limits.MinCurrent, _limits.MaxCurrent); |
||||
|
} |
||||
|
|
||||
|
private void btnOpenSettings_Click(object sender, RoutedEventArgs e) |
||||
|
{ |
||||
|
SettingsWindow settings = new SettingsWindow(_limits); |
||||
|
settings.Owner = this; |
||||
|
|
||||
|
if (settings.ShowDialog() == true) |
||||
|
{ |
||||
|
_limits = settings.Limits; |
||||
|
UpdateRangeGuides(); |
||||
|
MessageBox.Show("기준 범위 설정이 적용되었습니다.", "설정 완료", MessageBoxButton.OK, MessageBoxImage.Information); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// UI 초기화 상태
|
||||
|
private void ResetUI() |
||||
|
{ |
||||
|
txtSystemStatus.Text = "상태: 대기 중"; |
||||
|
txtSystemStatus.Foreground = new SolidColorBrush(Color.FromRgb(156, 163, 175)); // Gray
|
||||
|
|
||||
|
txtPrevHousing.Text = "대기"; |
||||
|
txtPrevHousing.Foreground = new SolidColorBrush(Color.FromRgb(156, 163, 175)); |
||||
|
txtPrevCal.Text = "대기"; |
||||
|
txtPrevCal.Foreground = new SolidColorBrush(Color.FromRgb(156, 163, 175)); |
||||
|
txtPrevEol.Text = "대기"; |
||||
|
txtPrevEol.Foreground = new SolidColorBrush(Color.FromRgb(156, 163, 175)); |
||||
|
|
||||
|
txtVoltage.Text = "---.-"; |
||||
|
txtVoltage.Foreground = new SolidColorBrush(Color.FromRgb(31, 41, 55)); |
||||
|
txtCurrent.Text = "--.-"; |
||||
|
txtCurrent.Foreground = new SolidColorBrush(Color.FromRgb(31, 41, 55)); |
||||
|
|
||||
|
txtFinalResult.Text = "대 기 중"; |
||||
|
txtFinalResult.Foreground = new SolidColorBrush(Color.FromRgb(156, 163, 175)); |
||||
|
borderFinalResult.Background = new SolidColorBrush(Color.FromRgb(229, 231, 235)); // Light Gray
|
||||
|
txtFinalSerial.Text = "S/N: ---"; |
||||
|
|
||||
|
btnStart.IsEnabled = false; |
||||
|
} |
||||
|
|
||||
|
// 시리얼 텍스트 박스 포커스 이벤트
|
||||
|
private void txtSerial_GotFocus(object sender, RoutedEventArgs e) |
||||
|
{ |
||||
|
txtSerial.SelectAll(); |
||||
|
} |
||||
|
|
||||
|
// S/N 조회 버튼 클릭
|
||||
|
private void btnSearchSerial_Click(object sender, RoutedEventArgs e) |
||||
|
{ |
||||
|
string serial = txtSerial.Text.Trim().ToUpper(); |
||||
|
|
||||
|
if (string.IsNullOrEmpty(serial)) |
||||
|
{ |
||||
|
MessageBox.Show("S/N을 입력해주세요.", "알림", MessageBoxButton.OK, MessageBoxImage.Warning); |
||||
|
return; |
||||
|
} |
||||
|
|
||||
|
ResetUI(); |
||||
|
txtFinalSerial.Text = "S/N: " + serial; |
||||
|
|
||||
|
// 데이터베이스 서비스 조회 호출 (예외 방어 처리)
|
||||
|
Product product = null; |
||||
|
try |
||||
|
{ |
||||
|
product = _database.GetProductBySerial(serial); |
||||
|
} |
||||
|
catch (Exception ex) |
||||
|
{ |
||||
|
MessageBox.Show(ex.Message, "DB 조회 오류", MessageBoxButton.OK, MessageBoxImage.Error); |
||||
|
txtSystemStatus.Text = "상태: DB 연동 에러"; |
||||
|
txtSystemStatus.Foreground = new SolidColorBrush(Color.FromRgb(239, 68, 68)); |
||||
|
return; |
||||
|
} |
||||
|
|
||||
|
if (product != null) |
||||
|
{ |
||||
|
// 이전 검사 결과 바인딩 및 색상 설정
|
||||
|
txtPrevHousing.Text = product.HousingResult; |
||||
|
txtPrevHousing.Foreground = product.HousingResult == "PASS" |
||||
|
? new SolidColorBrush(Color.FromRgb(16, 185, 129)) |
||||
|
: new SolidColorBrush(Color.FromRgb(239, 68, 68)); |
||||
|
|
||||
|
txtPrevCal.Text = product.CalResult; |
||||
|
txtPrevCal.Foreground = product.CalResult == "PASS" |
||||
|
? new SolidColorBrush(Color.FromRgb(16, 185, 129)) |
||||
|
: new SolidColorBrush(Color.FromRgb(239, 68, 68)); |
||||
|
|
||||
|
txtPrevEol.Text = product.EolResult; |
||||
|
txtPrevEol.Foreground = product.EolResult == "PASS" |
||||
|
? new SolidColorBrush(Color.FromRgb(16, 185, 129)) |
||||
|
: new SolidColorBrush(Color.FromRgb(239, 68, 68)); |
||||
|
|
||||
|
if (product.IsPreviousStepsPassed) |
||||
|
{ |
||||
|
txtSystemStatus.Text = "상태: 검사 가능 (이전 단계 합격)"; |
||||
|
txtSystemStatus.Foreground = new SolidColorBrush(Color.FromRgb(16, 185, 129)); |
||||
|
|
||||
|
// 스타트 버튼 활성화
|
||||
|
btnStart.IsEnabled = true; |
||||
|
} |
||||
|
else |
||||
|
{ |
||||
|
string failedStep = string.Empty; |
||||
|
if (product.HousingResult == "FAIL") failedStep = "Housing 검사"; |
||||
|
else if (product.CalResult == "FAIL") failedStep = "Calibration 검사"; |
||||
|
else if (product.EolResult == "FAIL") failedStep = "EOL 검사"; |
||||
|
|
||||
|
txtSystemStatus.Text = "상태: 진행 불가 (이전 단계 불합격)"; |
||||
|
txtSystemStatus.Foreground = new SolidColorBrush(Color.FromRgb(239, 68, 68)); |
||||
|
|
||||
|
// 스타트 버튼 비활성화
|
||||
|
btnStart.IsEnabled = false; |
||||
|
|
||||
|
MessageBox.Show(string.Format("이전 공정 단계({0})가 불합격 상태이므로 최종 성능 검사를 시작할 수 없습니다.", failedStep), "검사 제한", MessageBoxButton.OK, MessageBoxImage.Error); |
||||
|
} |
||||
|
} |
||||
|
else |
||||
|
{ |
||||
|
MessageBox.Show("등록되지 않은 S/N입니다.\n테스트용 S/N(PASS1234 또는 FAIL5678)을 입력해 주세요.", "조회 실패", MessageBoxButton.OK, MessageBoxImage.Information); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// 엔터 키 입력 시 조회 처리
|
||||
|
private void txtSerial_KeyDown(object sender, System.Windows.Input.KeyEventArgs e) |
||||
|
{ |
||||
|
if (e.Key == System.Windows.Input.Key.Enter) |
||||
|
{ |
||||
|
btnSearchSerial_Click(sender, e); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// 스타트 버튼 클릭
|
||||
|
private void btnStart_Click(object sender, RoutedEventArgs e) |
||||
|
{ |
||||
|
btnStart.IsEnabled = false; |
||||
|
btnSearchSerial.IsEnabled = false; |
||||
|
txtSerial.IsEnabled = false; |
||||
|
|
||||
|
txtSystemStatus.Text = "상태: 검사 진행 중..."; |
||||
|
txtSystemStatus.Foreground = new SolidColorBrush(Color.FromRgb(59, 130, 246)); // Blue
|
||||
|
|
||||
|
txtFinalResult.Text = "측 정 중"; |
||||
|
txtFinalResult.Foreground = new SolidColorBrush(Color.FromRgb(59, 130, 246)); |
||||
|
borderFinalResult.Background = new SolidColorBrush(Color.FromRgb(219, 234, 254)); // Light Blue
|
||||
|
|
||||
|
// 시뮬레이션 타이머 시작
|
||||
|
_timerTickCount = 0; |
||||
|
_measurementTimer.Start(); |
||||
|
} |
||||
|
|
||||
|
// 타이머 틱 이벤트 (측정값 변화 시뮬레이션)
|
||||
|
private void MeasurementTimer_Tick(object sender, EventArgs e) |
||||
|
{ |
||||
|
_timerTickCount++; |
||||
|
|
||||
|
if (_timerTickCount < 10) // 약 2초 동안 측정값 흔들림 효과 연출
|
||||
|
{ |
||||
|
double tempVoltage, tempCurrent; |
||||
|
_measurer.GenerateNoiseValues(_limits, out tempVoltage, out tempCurrent); |
||||
|
|
||||
|
txtVoltage.Text = tempVoltage.ToString("F1"); |
||||
|
txtCurrent.Text = tempCurrent.ToString("F1"); |
||||
|
} |
||||
|
else // 최종 측정 완료 및 판정
|
||||
|
{ |
||||
|
_measurementTimer.Stop(); |
||||
|
|
||||
|
double finalVoltage, finalCurrent; |
||||
|
_measurer.GenerateFinalValues(_limits, out finalVoltage, out finalCurrent); |
||||
|
|
||||
|
txtVoltage.Text = finalVoltage.ToString("F1"); |
||||
|
txtCurrent.Text = finalCurrent.ToString("F1"); |
||||
|
|
||||
|
// 합/불 판정
|
||||
|
bool isVoltageOk = finalVoltage >= _limits.MinVoltage && finalVoltage <= _limits.MaxVoltage; |
||||
|
bool isCurrentOk = finalCurrent >= _limits.MinCurrent && finalCurrent <= _limits.MaxCurrent; |
||||
|
bool isFinalPass = isVoltageOk && isCurrentOk; |
||||
|
|
||||
|
// 측정값 색상 표시 (통과 시 검은색, 실패 시 빨간색)
|
||||
|
txtVoltage.Foreground = isVoltageOk ? new SolidColorBrush(Color.FromRgb(31, 41, 55)) : new SolidColorBrush(Color.FromRgb(239, 68, 68)); |
||||
|
txtCurrent.Foreground = isCurrentOk ? new SolidColorBrush(Color.FromRgb(31, 41, 55)) : new SolidColorBrush(Color.FromRgb(239, 68, 68)); |
||||
|
|
||||
|
if (isFinalPass) |
||||
|
{ |
||||
|
txtSystemStatus.Text = "상태: 검사 완료 (합격)"; |
||||
|
txtSystemStatus.Foreground = new SolidColorBrush(Color.FromRgb(16, 185, 129)); |
||||
|
|
||||
|
txtFinalResult.Text = "PASS"; |
||||
|
txtFinalResult.Foreground = new SolidColorBrush(Color.FromRgb(16, 185, 129)); |
||||
|
borderFinalResult.Background = new SolidColorBrush(Color.FromRgb(209, 250, 229)); // Light Green
|
||||
|
} |
||||
|
else |
||||
|
{ |
||||
|
txtSystemStatus.Text = "상태: 검사 완료 (불합격)"; |
||||
|
txtSystemStatus.Foreground = new SolidColorBrush(Color.FromRgb(239, 68, 68)); |
||||
|
|
||||
|
txtFinalResult.Text = "FAIL"; |
||||
|
txtFinalResult.Foreground = new SolidColorBrush(Color.FromRgb(239, 68, 68)); |
||||
|
borderFinalResult.Background = new SolidColorBrush(Color.FromRgb(254, 226, 226)); // Light Red
|
||||
|
} |
||||
|
|
||||
|
// 컨트롤 원상 복구 (재검사를 위해)
|
||||
|
btnSearchSerial.IsEnabled = true; |
||||
|
txtSerial.IsEnabled = true; |
||||
|
btnStart.IsEnabled = true; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,45 @@ |
|||||
|
using System; |
||||
|
|
||||
|
namespace marking_gui.Models |
||||
|
{ |
||||
|
public class MeasurementLimits |
||||
|
{ |
||||
|
public double MinVoltage { get; set; } |
||||
|
public double MaxVoltage { get; set; } |
||||
|
public double MinCurrent { get; set; } |
||||
|
public double MaxCurrent { get; set; } |
||||
|
|
||||
|
public MeasurementLimits(double minVoltage = 4.0, double maxVoltage = 6.0, double minCurrent = 8.0, double maxCurrent = 10.0) |
||||
|
{ |
||||
|
MinVoltage = minVoltage; |
||||
|
MaxVoltage = maxVoltage; |
||||
|
MinCurrent = minCurrent; |
||||
|
MaxCurrent = maxCurrent; |
||||
|
} |
||||
|
|
||||
|
public bool Validate(out string errorMessage) |
||||
|
{ |
||||
|
errorMessage = string.Empty; |
||||
|
|
||||
|
if (MinVoltage < 0 || MaxVoltage < 0 || MinCurrent < 0 || MaxCurrent < 0) |
||||
|
{ |
||||
|
errorMessage = "기준 범위 설정 값은 0 이상의 값이어야 합니다."; |
||||
|
return false; |
||||
|
} |
||||
|
|
||||
|
if (MinVoltage >= MaxVoltage) |
||||
|
{ |
||||
|
errorMessage = "전압 최소값은 최대값보다 작아야 합니다."; |
||||
|
return false; |
||||
|
} |
||||
|
|
||||
|
if (MinCurrent >= MaxCurrent) |
||||
|
{ |
||||
|
errorMessage = "전류 최소값은 최대값보다 작아야 합니다."; |
||||
|
return false; |
||||
|
} |
||||
|
|
||||
|
return true; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,28 @@ |
|||||
|
using System; |
||||
|
|
||||
|
namespace marking_gui.Models |
||||
|
{ |
||||
|
public class Product |
||||
|
{ |
||||
|
public string SerialNumber { get; set; } |
||||
|
public string HousingResult { get; set; } |
||||
|
public string CalResult { get; set; } |
||||
|
public string EolResult { get; set; } |
||||
|
|
||||
|
public bool IsPreviousStepsPassed |
||||
|
{ |
||||
|
get |
||||
|
{ |
||||
|
return HousingResult == "PASS" && CalResult == "PASS" && EolResult == "PASS"; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
public Product(string serialNumber, string housingResult = "대기", string calResult = "대기", string eolResult = "대기") |
||||
|
{ |
||||
|
SerialNumber = serialNumber; |
||||
|
HousingResult = housingResult; |
||||
|
CalResult = calResult; |
||||
|
EolResult = eolResult; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,52 @@ |
|||||
|
using System.Reflection; |
||||
|
using System.Resources; |
||||
|
using System.Runtime.CompilerServices; |
||||
|
using System.Runtime.InteropServices; |
||||
|
using System.Windows; |
||||
|
|
||||
|
// 어셈블리에 대한 일반 정보는 다음 특성 집합을 통해
|
||||
|
// 제어됩니다. 어셈블리와 관련된 정보를 수정하려면
|
||||
|
// 이러한 특성 값을 변경하세요.
|
||||
|
[assembly: AssemblyTitle("marking_gui")] |
||||
|
[assembly: AssemblyDescription("")] |
||||
|
[assembly: AssemblyConfiguration("")] |
||||
|
[assembly: AssemblyCompany("")] |
||||
|
[assembly: AssemblyProduct("marking_gui")] |
||||
|
[assembly: AssemblyCopyright("Copyright © 2026")] |
||||
|
[assembly: AssemblyTrademark("")] |
||||
|
[assembly: AssemblyCulture("")] |
||||
|
|
||||
|
// ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에
|
||||
|
// 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면
|
||||
|
// 해당 형식에 대해 ComVisible 특성을 true로 설정하세요.
|
||||
|
[assembly: ComVisible(false)] |
||||
|
|
||||
|
//지역화 가능 애플리케이션 빌드를 시작하려면 다음을 설정하세요.
|
||||
|
//.csproj 파일의 <UICulture>CultureYouAreCodingWith</UICulture>
|
||||
|
//<PropertyGroup> 내부. 예를 들어 미국 영어를 사용하는 경우
|
||||
|
//사용하는 경우 <UICulture>를 en-US로 설정합니다. 그런 다음 아래
|
||||
|
//NeutralResourceLanguage 특성의 주석 처리를 제거합니다. 아래 줄의 "en-US"를 업데이트하여
|
||||
|
//프로젝트 파일의 UICulture 설정과 일치시킵니다.
|
||||
|
|
||||
|
//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
|
||||
|
|
||||
|
|
||||
|
[assembly: ThemeInfo( |
||||
|
ResourceDictionaryLocation.None, //테마별 리소스 사전의 위치
|
||||
|
//(페이지 또는 응용 프로그램 리소스 사진에
|
||||
|
// 리소스가 없는 경우에 사용됨)
|
||||
|
ResourceDictionaryLocation.SourceAssembly //제네릭 리소스 사전의 위치
|
||||
|
//(페이지 또는 응용 프로그램 리소스 사진에
|
||||
|
// 리소스가 없는 경우에 사용됨)
|
||||
|
)] |
||||
|
|
||||
|
|
||||
|
// 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다.
|
||||
|
//
|
||||
|
// 주 버전
|
||||
|
// 부 버전
|
||||
|
// 빌드 번호
|
||||
|
// 수정 버전
|
||||
|
//
|
||||
|
[assembly: AssemblyVersion("1.0.0.0")] |
||||
|
[assembly: AssemblyFileVersion("1.0.0.0")] |
||||
@ -0,0 +1,71 @@ |
|||||
|
//------------------------------------------------------------------------------
|
||||
|
// <auto-generated>
|
||||
|
// 이 코드는 도구를 사용하여 생성되었습니다.
|
||||
|
// 런타임 버전:4.0.30319.42000
|
||||
|
//
|
||||
|
// 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면
|
||||
|
// 이러한 변경 내용이 손실됩니다.
|
||||
|
// </auto-generated>
|
||||
|
//------------------------------------------------------------------------------
|
||||
|
|
||||
|
namespace marking_gui.Properties |
||||
|
{ |
||||
|
|
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 지역화된 문자열 등을 찾기 위한 강력한 형식의 리소스 클래스입니다.
|
||||
|
/// </summary>
|
||||
|
// 이 클래스는 ResGen 또는 Visual Studio와 같은 도구를 통해 StronglyTypedResourceBuilder
|
||||
|
// 클래스에서 자동으로 생성되었습니다.
|
||||
|
// 멤버를 추가하거나 제거하려면 .ResX 파일을 편집한 다음 /str 옵션을 사용하여
|
||||
|
// ResGen을 다시 실행하거나 VS 프로젝트를 다시 빌드하십시오.
|
||||
|
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] |
||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()] |
||||
|
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] |
||||
|
internal class Resources |
||||
|
{ |
||||
|
|
||||
|
private static global::System.Resources.ResourceManager resourceMan; |
||||
|
|
||||
|
private static global::System.Globalization.CultureInfo resourceCulture; |
||||
|
|
||||
|
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] |
||||
|
internal Resources() |
||||
|
{ |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 이 클래스에서 사용하는 캐시된 ResourceManager 인스턴스를 반환합니다.
|
||||
|
/// </summary>
|
||||
|
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] |
||||
|
internal static global::System.Resources.ResourceManager ResourceManager |
||||
|
{ |
||||
|
get |
||||
|
{ |
||||
|
if ((resourceMan == null)) |
||||
|
{ |
||||
|
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("marking_gui.Properties.Resources", typeof(Resources).Assembly); |
||||
|
resourceMan = temp; |
||||
|
} |
||||
|
return resourceMan; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 이 강력한 형식의 리소스 클래스를 사용하여 모든 리소스 조회에 대해 현재 스레드의 CurrentUICulture 속성을
|
||||
|
/// 재정의합니다.
|
||||
|
/// </summary>
|
||||
|
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] |
||||
|
internal static global::System.Globalization.CultureInfo Culture |
||||
|
{ |
||||
|
get |
||||
|
{ |
||||
|
return resourceCulture; |
||||
|
} |
||||
|
set |
||||
|
{ |
||||
|
resourceCulture = value; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,117 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||
|
<root> |
||||
|
<!-- |
||||
|
Microsoft ResX Schema |
||||
|
|
||||
|
Version 2.0 |
||||
|
|
||||
|
The primary goals of this format is to allow a simple XML format |
||||
|
that is mostly human readable. The generation and parsing of the |
||||
|
various data types are done through the TypeConverter classes |
||||
|
associated with the data types. |
||||
|
|
||||
|
Example: |
||||
|
|
||||
|
... ado.net/XML headers & schema ... |
||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader> |
||||
|
<resheader name="version">2.0</resheader> |
||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> |
||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> |
||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> |
||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> |
||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> |
||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value> |
||||
|
</data> |
||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> |
||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> |
||||
|
<comment>This is a comment</comment> |
||||
|
</data> |
||||
|
|
||||
|
There are any number of "resheader" rows that contain simple |
||||
|
name/value pairs. |
||||
|
|
||||
|
Each data row contains a name, and value. The row also contains a |
||||
|
type or mimetype. Type corresponds to a .NET class that support |
||||
|
text/value conversion through the TypeConverter architecture. |
||||
|
Classes that don't support this are serialized and stored with the |
||||
|
mimetype set. |
||||
|
|
||||
|
The mimetype is used for serialized objects, and tells the |
||||
|
ResXResourceReader how to depersist the object. This is currently not |
||||
|
extensible. For a given mimetype the value must be set accordingly: |
||||
|
|
||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format |
||||
|
that the ResXResourceWriter will generate, however the reader can |
||||
|
read any of the formats listed below. |
||||
|
|
||||
|
mimetype: application/x-microsoft.net.object.binary.base64 |
||||
|
value : The object must be serialized with |
||||
|
: System.Serialization.Formatters.Binary.BinaryFormatter |
||||
|
: and then encoded with base64 encoding. |
||||
|
|
||||
|
mimetype: application/x-microsoft.net.object.soap.base64 |
||||
|
value : The object must be serialized with |
||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter |
||||
|
: and then encoded with base64 encoding. |
||||
|
|
||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64 |
||||
|
value : The object must be serialized into a byte array |
||||
|
: using a System.ComponentModel.TypeConverter |
||||
|
: and then encoded with base64 encoding. |
||||
|
--> |
||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> |
||||
|
<xsd:element name="root" msdata:IsDataSet="true"> |
||||
|
<xsd:complexType> |
||||
|
<xsd:choice maxOccurs="unbounded"> |
||||
|
<xsd:element name="metadata"> |
||||
|
<xsd:complexType> |
||||
|
<xsd:sequence> |
||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" /> |
||||
|
</xsd:sequence> |
||||
|
<xsd:attribute name="name" type="xsd:string" /> |
||||
|
<xsd:attribute name="type" type="xsd:string" /> |
||||
|
<xsd:attribute name="mimetype" type="xsd:string" /> |
||||
|
</xsd:complexType> |
||||
|
</xsd:element> |
||||
|
<xsd:element name="assembly"> |
||||
|
<xsd:complexType> |
||||
|
<xsd:attribute name="alias" type="xsd:string" /> |
||||
|
<xsd:attribute name="name" type="xsd:string" /> |
||||
|
</xsd:complexType> |
||||
|
</xsd:element> |
||||
|
<xsd:element name="data"> |
||||
|
<xsd:complexType> |
||||
|
<xsd:sequence> |
||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> |
||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> |
||||
|
</xsd:sequence> |
||||
|
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" /> |
||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> |
||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> |
||||
|
</xsd:complexType> |
||||
|
</xsd:element> |
||||
|
<xsd:element name="resheader"> |
||||
|
<xsd:complexType> |
||||
|
<xsd:sequence> |
||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> |
||||
|
</xsd:sequence> |
||||
|
<xsd:attribute name="name" type="xsd:string" use="required" /> |
||||
|
</xsd:complexType> |
||||
|
</xsd:element> |
||||
|
</xsd:choice> |
||||
|
</xsd:complexType> |
||||
|
</xsd:element> |
||||
|
</xsd:schema> |
||||
|
<resheader name="resmimetype"> |
||||
|
<value>text/microsoft-resx</value> |
||||
|
</resheader> |
||||
|
<resheader name="version"> |
||||
|
<value>2.0</value> |
||||
|
</resheader> |
||||
|
<resheader name="reader"> |
||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> |
||||
|
</resheader> |
||||
|
<resheader name="writer"> |
||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> |
||||
|
</resheader> |
||||
|
</root> |
||||
@ -0,0 +1,30 @@ |
|||||
|
//------------------------------------------------------------------------------
|
||||
|
// <auto-generated>
|
||||
|
// This code was generated by a tool.
|
||||
|
// Runtime Version:4.0.30319.42000
|
||||
|
//
|
||||
|
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
|
// the code is regenerated.
|
||||
|
// </auto-generated>
|
||||
|
//------------------------------------------------------------------------------
|
||||
|
|
||||
|
namespace marking_gui.Properties |
||||
|
{ |
||||
|
|
||||
|
|
||||
|
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] |
||||
|
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] |
||||
|
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase |
||||
|
{ |
||||
|
|
||||
|
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); |
||||
|
|
||||
|
public static Settings Default |
||||
|
{ |
||||
|
get |
||||
|
{ |
||||
|
return defaultInstance; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,7 @@ |
|||||
|
<?xml version='1.0' encoding='utf-8'?> |
||||
|
<SettingsFile xmlns="uri:settings" CurrentProfile="(Default)"> |
||||
|
<Profiles> |
||||
|
<Profile Name="(Default)" /> |
||||
|
</Profiles> |
||||
|
<Settings /> |
||||
|
</SettingsFile> |
||||
@ -0,0 +1,30 @@ |
|||||
|
using System; |
||||
|
using marking_gui.Models; |
||||
|
|
||||
|
namespace marking_gui.Services |
||||
|
{ |
||||
|
public class MockDatabase |
||||
|
{ |
||||
|
public Product GetProductBySerial(string serial) |
||||
|
{ |
||||
|
if (string.IsNullOrEmpty(serial)) |
||||
|
return null; |
||||
|
|
||||
|
string searchSerial = serial.Trim().ToUpper(); |
||||
|
|
||||
|
if (searchSerial == "PASS1234") |
||||
|
{ |
||||
|
// 이전 검사 모두 합격
|
||||
|
return new Product(searchSerial, "PASS", "PASS", "PASS"); |
||||
|
} |
||||
|
else if (searchSerial == "FAIL5678") |
||||
|
{ |
||||
|
// 이전 검사 중 Calibration 단계 실패
|
||||
|
return new Product(searchSerial, "PASS", "FAIL", "PASS"); |
||||
|
} |
||||
|
|
||||
|
// 등록되지 않은 S/N
|
||||
|
return null; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,58 @@ |
|||||
|
using System; |
||||
|
using marking_gui.Models; |
||||
|
|
||||
|
namespace marking_gui.Services |
||||
|
{ |
||||
|
public class MockMeasurer |
||||
|
{ |
||||
|
private readonly Random _random = new Random(); |
||||
|
|
||||
|
// 2초 동안 측정 중 요동칠 가상 데이터 생성
|
||||
|
public void GenerateNoiseValues(MeasurementLimits limits, out double voltage, out double current) |
||||
|
{ |
||||
|
double midVoltage = (limits.MinVoltage + limits.MaxVoltage) / 2.0; |
||||
|
double midCurrent = (limits.MinCurrent + limits.MaxCurrent) / 2.0; |
||||
|
|
||||
|
// 설정 범위 폭에 맞추어 ±50% 범위의 노이즈 생성
|
||||
|
double voltageSpan = limits.MaxVoltage - limits.MinVoltage; |
||||
|
double currentSpan = limits.MaxCurrent - limits.MinCurrent; |
||||
|
|
||||
|
voltage = midVoltage + (_random.NextDouble() * voltageSpan - (voltageSpan / 2.0)); |
||||
|
current = midCurrent + (_random.NextDouble() * currentSpan - (currentSpan / 2.0)); |
||||
|
} |
||||
|
|
||||
|
// 최종 합/불 판정 측정값 결정 (80% 확률로 합격 범위, 20% 확률로 불합격 범위 값 생성)
|
||||
|
public void GenerateFinalValues(MeasurementLimits limits, out double voltage, out double current) |
||||
|
{ |
||||
|
double voltageSpan = limits.MaxVoltage - limits.MinVoltage; |
||||
|
double currentSpan = limits.MaxCurrent - limits.MinCurrent; |
||||
|
|
||||
|
if (_random.Next(0, 10) < 8) |
||||
|
{ |
||||
|
// 합격 범위 내의 가상 측정값 생성
|
||||
|
voltage = limits.MinVoltage + (_random.NextDouble() * voltageSpan); |
||||
|
current = limits.MinCurrent + (_random.NextDouble() * currentSpan); |
||||
|
} |
||||
|
else |
||||
|
{ |
||||
|
// 불합격 범위 유도
|
||||
|
if (_random.Next(0, 2) == 0) |
||||
|
{ |
||||
|
// 전압 에러 유도 (범위 폭의 50% 정도 벗어나도록 가/감산하여 음수 방지)
|
||||
|
voltage = _random.Next(0, 2) == 0 |
||||
|
? (limits.MinVoltage - (voltageSpan * 0.5)) |
||||
|
: (limits.MaxVoltage + (voltageSpan * 0.5)); |
||||
|
current = limits.MinCurrent + (_random.NextDouble() * currentSpan); |
||||
|
} |
||||
|
else |
||||
|
{ |
||||
|
// 전류 에러 유도
|
||||
|
voltage = limits.MinVoltage + (_random.NextDouble() * voltageSpan); |
||||
|
current = _random.Next(0, 2) == 0 |
||||
|
? (limits.MinCurrent - (currentSpan * 0.5)) |
||||
|
: (limits.MaxCurrent + (currentSpan * 0.5)); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,63 @@ |
|||||
|
using System; |
||||
|
using System.Configuration; |
||||
|
using marking_gui.Models; |
||||
|
|
||||
|
namespace marking_gui.Services |
||||
|
{ |
||||
|
public class MssqlDatabaseService |
||||
|
{ |
||||
|
private readonly string _connectionString; |
||||
|
|
||||
|
public MssqlDatabaseService() |
||||
|
{ |
||||
|
try |
||||
|
{ |
||||
|
// App.config 에서 연결 문자열을 로드하여 준비해둡니다.
|
||||
|
var connSettings = ConfigurationManager.ConnectionStrings["MssqlConnection"]; |
||||
|
if (connSettings != null) |
||||
|
{ |
||||
|
_connectionString = connSettings.ConnectionString; |
||||
|
} |
||||
|
else |
||||
|
{ |
||||
|
_connectionString = "Server=localhost;Database=MarkingDb;Trusted_Connection=True;"; |
||||
|
} |
||||
|
} |
||||
|
catch (Exception ex) |
||||
|
{ |
||||
|
_connectionString = string.Empty; |
||||
|
System.Diagnostics.Debug.WriteLine("설정 로드 중 예외 발생: " + ex.Message); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
public Product GetProductBySerial(string serial) |
||||
|
{ |
||||
|
if (string.IsNullOrEmpty(serial)) |
||||
|
return null; |
||||
|
|
||||
|
string searchSerial = serial.Trim().ToUpper(); |
||||
|
|
||||
|
// TODO: 사용자의 지시에 따라 실제 MSSQL DB 질의 쿼리는 아직 작성하지 않고 대기합니다.
|
||||
|
// 추후 실제 연동 시 아래 SQL Connection 및 SELECT 쿼리를 구현할 수 있도록 준비만 해둡니다.
|
||||
|
/* |
||||
|
string query = "SELECT SerialNumber, HousingResult, CalResult, EolResult FROM ProductResults WHERE UPPER(SerialNumber) = @Serial"; |
||||
|
using (var conn = new System.Data.SqlClient.SqlConnection(_connectionString)) |
||||
|
{ |
||||
|
... |
||||
|
} |
||||
|
*/ |
||||
|
|
||||
|
// 준비 단계 동안 임시로 기존 Mock 데이터를 반환하도록 구현 (Stub)
|
||||
|
if (searchSerial == "PASS1234") |
||||
|
{ |
||||
|
return new Product(searchSerial, "PASS", "PASS", "PASS"); |
||||
|
} |
||||
|
else if (searchSerial == "FAIL5678") |
||||
|
{ |
||||
|
return new Product(searchSerial, "PASS", "FAIL", "PASS"); |
||||
|
} |
||||
|
|
||||
|
return null; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,81 @@ |
|||||
|
<Window x:Class="marking_gui.SettingsWindow" |
||||
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" |
||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" |
||||
|
Title="기준 범위 설정" Height="250" Width="350" |
||||
|
WindowStartupLocation="CenterOwner" ResizeMode="NoResize" |
||||
|
Background="#F3F4F6" ShowInTaskbar="False"> |
||||
|
<Window.Resources> |
||||
|
<!-- 버튼 스타일 --> |
||||
|
<Style x:Key="DialogButtonStyle" TargetType="Button"> |
||||
|
<Setter Property="Background" Value="#3B82F6"/> |
||||
|
<Setter Property="Foreground" Value="White"/> |
||||
|
<Setter Property="FontSize" Value="13"/> |
||||
|
<Setter Property="FontWeight" Value="Bold"/> |
||||
|
<Setter Property="BorderThickness" Value="0"/> |
||||
|
<Setter Property="Padding" Value="15,6"/> |
||||
|
<Setter Property="Template"> |
||||
|
<Setter.Value> |
||||
|
<ControlTemplate TargetType="Button"> |
||||
|
<Border Background="{TemplateBinding Background}" CornerRadius="4"> |
||||
|
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/> |
||||
|
</Border> |
||||
|
</ControlTemplate> |
||||
|
</Setter.Value> |
||||
|
</Setter> |
||||
|
<Style.Triggers> |
||||
|
<Trigger Property="IsMouseOver" Value="True"> |
||||
|
<Setter Property="Background" Value="#2563EB"/> |
||||
|
</Trigger> |
||||
|
</Style.Triggers> |
||||
|
</Style> |
||||
|
<Style x:Key="CancelButtonStyle" TargetType="Button" BasedOn="{StaticResource DialogButtonStyle}"> |
||||
|
<Setter Property="Background" Value="#9CA3AF"/> |
||||
|
<Style.Triggers> |
||||
|
<Trigger Property="IsMouseOver" Value="True"> |
||||
|
<Setter Property="Background" Value="#4B5563"/> |
||||
|
</Trigger> |
||||
|
</Style.Triggers> |
||||
|
</Style> |
||||
|
</Window.Resources> |
||||
|
|
||||
|
<Grid Margin="20"> |
||||
|
<Grid.RowDefinitions> |
||||
|
<RowDefinition Height="Auto"/> |
||||
|
<RowDefinition Height="*"/> |
||||
|
<RowDefinition Height="Auto"/> |
||||
|
</Grid.RowDefinitions> |
||||
|
|
||||
|
<TextBlock Text="🔧 검사 판정 기준 범위 변경" FontSize="16" FontWeight="Bold" Foreground="#1F2937" Margin="0,0,0,15"/> |
||||
|
|
||||
|
<Grid Grid.Row="1"> |
||||
|
<Grid.RowDefinitions> |
||||
|
<RowDefinition Height="Auto"/> |
||||
|
<RowDefinition Height="10"/> |
||||
|
<RowDefinition Height="Auto"/> |
||||
|
</Grid.RowDefinitions> |
||||
|
<Grid.ColumnDefinitions> |
||||
|
<ColumnDefinition Width="80"/> |
||||
|
<ColumnDefinition Width="*"/> |
||||
|
<ColumnDefinition Width="20"/> |
||||
|
<ColumnDefinition Width="*"/> |
||||
|
</Grid.ColumnDefinitions> |
||||
|
|
||||
|
<!-- 전압 설정 --> |
||||
|
<TextBlock Grid.Row="0" Grid.Column="0" Text="전압 (V):" FontSize="14" VerticalAlignment="Center" Foreground="#4B5563" FontWeight="SemiBold"/> |
||||
|
<TextBox x:Name="txtMinVoltage" Grid.Row="0" Grid.Column="1" FontSize="14" Padding="4" VerticalContentAlignment="Center" HorizontalContentAlignment="Center" BorderBrush="#D1D5DB" BorderThickness="1"/> |
||||
|
<TextBlock Grid.Row="0" Grid.Column="2" Text="~" FontSize="14" VerticalAlignment="Center" HorizontalAlignment="Center"/> |
||||
|
<TextBox x:Name="txtMaxVoltage" Grid.Row="0" Grid.Column="3" FontSize="14" Padding="4" VerticalContentAlignment="Center" HorizontalContentAlignment="Center" BorderBrush="#D1D5DB" BorderThickness="1"/> |
||||
|
|
||||
|
<!-- 전류 설정 --> |
||||
|
<TextBlock Grid.Row="2" Grid.Column="0" Text="전류 (A):" FontSize="14" VerticalAlignment="Center" Foreground="#4B5563" FontWeight="SemiBold"/> |
||||
|
<TextBox x:Name="txtMinCurrent" Grid.Row="2" Grid.Column="1" FontSize="14" Padding="4" VerticalContentAlignment="Center" HorizontalContentAlignment="Center" BorderBrush="#D1D5DB" BorderThickness="1"/> |
||||
|
<TextBlock Grid.Row="2" Grid.Column="2" Text="~" FontSize="14" VerticalAlignment="Center" HorizontalAlignment="Center"/> |
||||
|
<TextBox x:Name="txtMaxCurrent" Grid.Row="2" Grid.Column="3" FontSize="14" Padding="4" VerticalContentAlignment="Center" HorizontalContentAlignment="Center" BorderBrush="#D1D5DB" BorderThickness="1"/> |
||||
|
</Grid> |
||||
|
|
||||
|
<StackPanel Grid.Row="2" Orientation="Horizontal" HorizontalAlignment="Right" Margin="0,15,0,0"> |
||||
|
<Button x:Name="btnSave" Content="저장" Style="{StaticResource DialogButtonStyle}" Width="70" Height="32" Click="btnSave_Click" Margin="0,0,10,0"/> |
||||
|
<Button x:Name="btnCancel" Content="취소" Style="{StaticResource CancelButtonStyle}" Width="70" Height="32" Click="btnCancel_Click"/> |
||||
|
</StackPanel> |
||||
|
</Grid> |
||||
|
</Window> |
||||
@ -0,0 +1,59 @@ |
|||||
|
using System; |
||||
|
using System.Windows; |
||||
|
using marking_gui.Models; |
||||
|
|
||||
|
namespace marking_gui |
||||
|
{ |
||||
|
/// <summary>
|
||||
|
/// SettingsWindow.xaml에 대한 상호 작용 논리
|
||||
|
/// </summary>
|
||||
|
public partial class SettingsWindow : Window |
||||
|
{ |
||||
|
public MeasurementLimits Limits { get; private set; } |
||||
|
|
||||
|
public SettingsWindow(MeasurementLimits limits) |
||||
|
{ |
||||
|
InitializeComponent(); |
||||
|
|
||||
|
// 원본의 데이터 무결성을 유지하기 위해 임시 복제하여 사용
|
||||
|
Limits = new MeasurementLimits(limits.MinVoltage, limits.MaxVoltage, limits.MinCurrent, limits.MaxCurrent); |
||||
|
|
||||
|
txtMinVoltage.Text = Limits.MinVoltage.ToString("F1"); |
||||
|
txtMaxVoltage.Text = Limits.MaxVoltage.ToString("F1"); |
||||
|
txtMinCurrent.Text = Limits.MinCurrent.ToString("F1"); |
||||
|
txtMaxCurrent.Text = Limits.MaxCurrent.ToString("F1"); |
||||
|
} |
||||
|
|
||||
|
private void btnSave_Click(object sender, RoutedEventArgs e) |
||||
|
{ |
||||
|
double minV, maxV, minC, maxC; |
||||
|
|
||||
|
if (!double.TryParse(txtMinVoltage.Text, out minV) || |
||||
|
!double.TryParse(txtMaxVoltage.Text, out maxV) || |
||||
|
!double.TryParse(txtMinCurrent.Text, out minC) || |
||||
|
!double.TryParse(txtMaxCurrent.Text, out maxC)) |
||||
|
{ |
||||
|
MessageBox.Show("기준 범위 설정 값은 올바른 숫자 형식이어야 합니다.", "설정 오류", MessageBoxButton.OK, MessageBoxImage.Warning); |
||||
|
return; |
||||
|
} |
||||
|
|
||||
|
MeasurementLimits tempLimits = new MeasurementLimits(minV, maxV, minC, maxC); |
||||
|
string errorMessage; |
||||
|
if (!tempLimits.Validate(out errorMessage)) |
||||
|
{ |
||||
|
MessageBox.Show(errorMessage, "설정 오류", MessageBoxButton.OK, MessageBoxImage.Warning); |
||||
|
return; |
||||
|
} |
||||
|
|
||||
|
Limits = tempLimits; |
||||
|
DialogResult = true; |
||||
|
Close(); |
||||
|
} |
||||
|
|
||||
|
private void btnCancel_Click(object sender, RoutedEventArgs e) |
||||
|
{ |
||||
|
DialogResult = false; |
||||
|
Close(); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,138 @@ |
|||||
|
<Window x:Class="Housing.Login.StartupLoginWindow" |
||||
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" |
||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" |
||||
|
Title="시스템 시작 로그인" Height="500" Width="480" |
||||
|
WindowStartupLocation="CenterScreen" ResizeMode="NoResize" |
||||
|
Background="#F3F4F6" BorderThickness="1" BorderBrush="#D1D5DB"> |
||||
|
<Window.Resources> |
||||
|
<!-- 입력 텍스트박스 스타일 --> |
||||
|
<Style TargetType="TextBox"> |
||||
|
<Setter Property="FontSize" Value="13"/> |
||||
|
<Setter Property="Padding" Value="8,5"/> |
||||
|
<Setter Property="BorderBrush" Value="#D1D5DB"/> |
||||
|
<Setter Property="BorderThickness" Value="1"/> |
||||
|
<Setter Property="Margin" Value="0,4,0,12"/> |
||||
|
<Setter Property="VerticalContentAlignment" Value="Center"/> |
||||
|
</Style> |
||||
|
<Style TargetType="PasswordBox"> |
||||
|
<Setter Property="FontSize" Value="13"/> |
||||
|
<Setter Property="Padding" Value="8,5"/> |
||||
|
<Setter Property="BorderBrush" Value="#D1D5DB"/> |
||||
|
<Setter Property="BorderThickness" Value="1"/> |
||||
|
<Setter Property="Margin" Value="0,4,0,12"/> |
||||
|
<Setter Property="VerticalContentAlignment" Value="Center"/> |
||||
|
</Style> |
||||
|
<!-- 라벨 스타일 --> |
||||
|
<Style TargetType="TextBlock"> |
||||
|
<Setter Property="Foreground" Value="#4B5563"/> |
||||
|
<Setter Property="FontWeight" Value="SemiBold"/> |
||||
|
<Setter Property="FontSize" Value="12"/> |
||||
|
</Style> |
||||
|
<!-- 버튼 스타일 --> |
||||
|
<Style x:Key="LoginButtonStyle" TargetType="Button"> |
||||
|
<Setter Property="Background" Value="#3B82F6"/> |
||||
|
<Setter Property="Foreground" Value="White"/> |
||||
|
<Setter Property="FontSize" Value="16"/> |
||||
|
<Setter Property="FontWeight" Value="Bold"/> |
||||
|
<Setter Property="Focusable" Value="False"/> |
||||
|
<Setter Property="BorderThickness" Value="0"/> |
||||
|
<Setter Property="Template"> |
||||
|
<Setter.Value> |
||||
|
<ControlTemplate TargetType="Button"> |
||||
|
<Border Background="{TemplateBinding Background}" CornerRadius="6"> |
||||
|
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/> |
||||
|
</Border> |
||||
|
</ControlTemplate> |
||||
|
</Setter.Value> |
||||
|
</Setter> |
||||
|
<Style.Triggers> |
||||
|
<Trigger Property="IsMouseOver" Value="True"> |
||||
|
<Setter Property="Background" Value="#2563EB"/> |
||||
|
</Trigger> |
||||
|
</Style.Triggers> |
||||
|
</Style> |
||||
|
</Window.Resources> |
||||
|
|
||||
|
<Grid> |
||||
|
<Grid.RowDefinitions> |
||||
|
<RowDefinition Height="60"/> |
||||
|
<RowDefinition Height="*"/> |
||||
|
<RowDefinition Height="65"/> |
||||
|
</Grid.RowDefinitions> |
||||
|
|
||||
|
<!-- 1. 헤더 영역 --> |
||||
|
<Border Grid.Row="0" Background="#1F2937" Padding="20,10"> |
||||
|
<StackPanel Orientation="Horizontal" VerticalAlignment="Center"> |
||||
|
<TextBlock Text="⚙" Foreground="White" FontSize="20" FontWeight="Bold" Margin="0,0,8,0"/> |
||||
|
<TextBlock Text="시스템 시작 설정 & 로그인" Foreground="White" FontSize="18" FontWeight="Bold"/> |
||||
|
</StackPanel> |
||||
|
</Border> |
||||
|
|
||||
|
<!-- 2. 입력 폼 영역 (2열 배치) --> |
||||
|
<Border Grid.Row="1" Background="White" Margin="15,15,15,0" CornerRadius="8" BorderBrush="#E5E7EB" BorderThickness="1" Padding="20,15"> |
||||
|
<Grid> |
||||
|
<Grid.ColumnDefinitions> |
||||
|
<ColumnDefinition Width="*"/> |
||||
|
<ColumnDefinition Width="20"/> |
||||
|
<ColumnDefinition Width="*"/> |
||||
|
</Grid.ColumnDefinitions> |
||||
|
<Grid.RowDefinitions> |
||||
|
<RowDefinition Height="Auto"/> |
||||
|
<RowDefinition Height="Auto"/> |
||||
|
<RowDefinition Height="Auto"/> |
||||
|
<RowDefinition Height="Auto"/> |
||||
|
</Grid.RowDefinitions> |
||||
|
|
||||
|
<!-- 좌측 열 --> |
||||
|
<StackPanel Grid.Column="0" Grid.Row="0"> |
||||
|
<TextBlock Text="제조사 (Maker)"/> |
||||
|
<TextBox x:Name="MakerTextBox" Text="MOBI"/> |
||||
|
</StackPanel> |
||||
|
<StackPanel Grid.Column="0" Grid.Row="1"> |
||||
|
<TextBlock Text="모델명 (Model)"/> |
||||
|
<TextBox x:Name="ModelTextBox" Text="MOBI-EV-01"/> |
||||
|
</StackPanel> |
||||
|
<StackPanel Grid.Column="0" Grid.Row="2"> |
||||
|
<TextBlock Text="색상 코드 (Color Code)"/> |
||||
|
<TextBox x:Name="ColorCodeTextBox" Text="BK-01"/> |
||||
|
</StackPanel> |
||||
|
<StackPanel Grid.Column="0" Grid.Row="3"> |
||||
|
<TextBlock Text="라인 번호 (Line No)"/> |
||||
|
<TextBox x:Name="LineNoTextBox" Text="LINE-3"/> |
||||
|
</StackPanel> |
||||
|
|
||||
|
<!-- 우측 열 --> |
||||
|
<StackPanel Grid.Column="2" Grid.Row="0"> |
||||
|
<TextBlock> |
||||
|
<Run Text="작업자 (Operator)"/> |
||||
|
<Run Text=" *" Foreground="#EF4444"/> |
||||
|
</TextBlock> |
||||
|
<TextBox x:Name="OperatorTextBox" Text="test"/> |
||||
|
</StackPanel> |
||||
|
<StackPanel Grid.Column="2" Grid.Row="1"> |
||||
|
<TextBlock> |
||||
|
<Run Text="비밀번호 (Password)"/> |
||||
|
<Run Text=" *" Foreground="#EF4444"/> |
||||
|
</TextBlock> |
||||
|
<PasswordBox x:Name="PasswordBox"/> |
||||
|
</StackPanel> |
||||
|
<StackPanel Grid.Column="2" Grid.Row="2"> |
||||
|
<TextBlock Text="LOT 번호 (Lot No)"/> |
||||
|
<TextBox x:Name="LotNoTextBox" Text="LOT-20260605"/> |
||||
|
</StackPanel> |
||||
|
<StackPanel Grid.Column="2" Grid.Row="3"> |
||||
|
<TextBlock Text="지그 번호 (Jig No)"/> |
||||
|
<TextBox x:Name="JigNoTextBox" Text="JIG-12"/> |
||||
|
</StackPanel> |
||||
|
</Grid> |
||||
|
</Border> |
||||
|
|
||||
|
<!-- 3. 하단 로그인 버튼 영역 --> |
||||
|
<Border Grid.Row="2" Padding="15,5"> |
||||
|
<StackPanel> |
||||
|
<TextBlock Text="※ 테스트 계정: test / test (자동 입력됨)" Foreground="#9CA3AF" FontSize="11" HorizontalAlignment="Center" Margin="0,0,0,5"/> |
||||
|
<Button x:Name="LogInButton" Content="시스템 시작 및 로그인" Style="{StaticResource LoginButtonStyle}" Height="40" Click="LogInButton_Click"/> |
||||
|
</StackPanel> |
||||
|
</Border> |
||||
|
</Grid> |
||||
|
</Window> |
||||
@ -0,0 +1,71 @@ |
|||||
|
using System.Windows; |
||||
|
|
||||
|
namespace Housing.Login |
||||
|
{ |
||||
|
/* |
||||
|
* Usage in App.xaml.cs or Program.cs: |
||||
|
* |
||||
|
* var loginWindow = new Housing.Login.StartupLoginWindow(); |
||||
|
* if (loginWindow.ShowDialog() != true) |
||||
|
* { |
||||
|
* return; |
||||
|
* } |
||||
|
* |
||||
|
* StartupLoginWindowResult loginResult = loginWindow.Result; |
||||
|
*/ |
||||
|
|
||||
|
public sealed class StartupLoginWindowResult |
||||
|
{ |
||||
|
public string Maker { get; set; } = string.Empty; |
||||
|
public string Model { get; set; } = string.Empty; |
||||
|
public string ColorCode { get; set; } = string.Empty; |
||||
|
public string Operator { get; set; } = string.Empty; |
||||
|
public string Password { get; set; } = string.Empty; |
||||
|
public string LineNo { get; set; } = string.Empty; |
||||
|
public string LotNo { get; set; } = string.Empty; |
||||
|
public string JigNo { get; set; } = string.Empty; |
||||
|
} |
||||
|
|
||||
|
public partial class StartupLoginWindow : Window |
||||
|
{ |
||||
|
public StartupLoginWindowResult Result { get; private set; } = new StartupLoginWindowResult(); |
||||
|
|
||||
|
public StartupLoginWindow() |
||||
|
{ |
||||
|
InitializeComponent(); |
||||
|
PasswordBox.Password = "test"; |
||||
|
} |
||||
|
|
||||
|
private void LogInButton_Click(object sender, RoutedEventArgs e) |
||||
|
{ |
||||
|
if (string.IsNullOrWhiteSpace(OperatorTextBox.Text)) |
||||
|
{ |
||||
|
MessageBox.Show(this, "Please enter Operator.", "Login", MessageBoxButton.OK, MessageBoxImage.Warning); |
||||
|
OperatorTextBox.Focus(); |
||||
|
return; |
||||
|
} |
||||
|
|
||||
|
if (string.IsNullOrWhiteSpace(PasswordBox.Password)) |
||||
|
{ |
||||
|
MessageBox.Show(this, "Please enter Password.", "Login", MessageBoxButton.OK, MessageBoxImage.Warning); |
||||
|
PasswordBox.Focus(); |
||||
|
return; |
||||
|
} |
||||
|
|
||||
|
Result = new StartupLoginWindowResult |
||||
|
{ |
||||
|
Maker = MakerTextBox.Text.Trim(), |
||||
|
Model = ModelTextBox.Text.Trim(), |
||||
|
ColorCode = ColorCodeTextBox.Text.Trim(), |
||||
|
Operator = OperatorTextBox.Text.Trim(), |
||||
|
Password = PasswordBox.Password, |
||||
|
LineNo = LineNoTextBox.Text.Trim(), |
||||
|
LotNo = LotNoTextBox.Text.Trim(), |
||||
|
JigNo = JigNoTextBox.Text.Trim() |
||||
|
}; |
||||
|
|
||||
|
DialogResult = true; |
||||
|
Close(); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
Binary file not shown.
@ -0,0 +1,11 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8" ?> |
||||
|
<configuration> |
||||
|
<connectionStrings> |
||||
|
<add name="MssqlConnection" |
||||
|
connectionString="Server=localhost;Database=MarkingDb;Trusted_Connection=True;" |
||||
|
providerName="System.Data.SqlClient" /> |
||||
|
</connectionStrings> |
||||
|
<startup> |
||||
|
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" /> |
||||
|
</startup> |
||||
|
</configuration> |
||||
Binary file not shown.
@ -0,0 +1,119 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||
|
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
||||
|
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> |
||||
|
<PropertyGroup> |
||||
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> |
||||
|
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> |
||||
|
<ProjectGuid>{9E96D5BE-9375-4ED3-82DE-F200F83EBC2F}</ProjectGuid> |
||||
|
<OutputType>WinExe</OutputType> |
||||
|
<RootNamespace>marking_gui</RootNamespace> |
||||
|
<AssemblyName>marking_gui</AssemblyName> |
||||
|
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion> |
||||
|
<FileAlignment>512</FileAlignment> |
||||
|
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> |
||||
|
<WarningLevel>4</WarningLevel> |
||||
|
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> |
||||
|
<Deterministic>true</Deterministic> |
||||
|
</PropertyGroup> |
||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> |
||||
|
<PlatformTarget>AnyCPU</PlatformTarget> |
||||
|
<DebugSymbols>true</DebugSymbols> |
||||
|
<DebugType>full</DebugType> |
||||
|
<Optimize>false</Optimize> |
||||
|
<OutputPath>bin\Debug\</OutputPath> |
||||
|
<DefineConstants>DEBUG;TRACE</DefineConstants> |
||||
|
<ErrorReport>prompt</ErrorReport> |
||||
|
<WarningLevel>4</WarningLevel> |
||||
|
</PropertyGroup> |
||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> |
||||
|
<PlatformTarget>AnyCPU</PlatformTarget> |
||||
|
<DebugType>pdbonly</DebugType> |
||||
|
<Optimize>true</Optimize> |
||||
|
<OutputPath>bin\Release\</OutputPath> |
||||
|
<DefineConstants>TRACE</DefineConstants> |
||||
|
<ErrorReport>prompt</ErrorReport> |
||||
|
<WarningLevel>4</WarningLevel> |
||||
|
</PropertyGroup> |
||||
|
<ItemGroup> |
||||
|
<Reference Include="System" /> |
||||
|
<Reference Include="System.Data" /> |
||||
|
<Reference Include="System.Xml" /> |
||||
|
<Reference Include="Microsoft.CSharp" /> |
||||
|
<Reference Include="System.Core" /> |
||||
|
<Reference Include="System.Xml.Linq" /> |
||||
|
<Reference Include="System.Data.DataSetExtensions" /> |
||||
|
<Reference Include="System.Net.Http" /> |
||||
|
<Reference Include="System.Xaml"> |
||||
|
<RequiredTargetFramework>4.0</RequiredTargetFramework> |
||||
|
</Reference> |
||||
|
<Reference Include="WindowsBase" /> |
||||
|
<Reference Include="PresentationCore" /> |
||||
|
<Reference Include="PresentationFramework" /> |
||||
|
<Reference Include="System.Configuration" /> |
||||
|
</ItemGroup> |
||||
|
<ItemGroup> |
||||
|
<ApplicationDefinition Include="App.xaml"> |
||||
|
<Generator>MSBuild:Compile</Generator> |
||||
|
<SubType>Designer</SubType> |
||||
|
</ApplicationDefinition> |
||||
|
<Page Include="MainWindow.xaml"> |
||||
|
<Generator>MSBuild:Compile</Generator> |
||||
|
<SubType>Designer</SubType> |
||||
|
</Page> |
||||
|
<Page Include="SettingsWindow.xaml"> |
||||
|
<Generator>MSBuild:Compile</Generator> |
||||
|
<SubType>Designer</SubType> |
||||
|
</Page> |
||||
|
<Page Include="StartupLoginWindow.xaml"> |
||||
|
<Generator>MSBuild:Compile</Generator> |
||||
|
<SubType>Designer</SubType> |
||||
|
</Page> |
||||
|
<Compile Include="App.xaml.cs"> |
||||
|
<DependentUpon>App.xaml</DependentUpon> |
||||
|
<SubType>Code</SubType> |
||||
|
</Compile> |
||||
|
<Compile Include="MainWindow.xaml.cs"> |
||||
|
<DependentUpon>MainWindow.xaml</DependentUpon> |
||||
|
<SubType>Code</SubType> |
||||
|
</Compile> |
||||
|
<Compile Include="SettingsWindow.xaml.cs"> |
||||
|
<DependentUpon>SettingsWindow.xaml</DependentUpon> |
||||
|
<SubType>Code</SubType> |
||||
|
</Compile> |
||||
|
<Compile Include="StartupLoginWindow.xaml.cs"> |
||||
|
<DependentUpon>StartupLoginWindow.xaml</DependentUpon> |
||||
|
<SubType>Code</SubType> |
||||
|
</Compile> |
||||
|
<Compile Include="Models\Product.cs" /> |
||||
|
<Compile Include="Models\MeasurementLimits.cs" /> |
||||
|
<Compile Include="Services\MssqlDatabaseService.cs" /> |
||||
|
<Compile Include="Services\MockMeasurer.cs" /> |
||||
|
</ItemGroup> |
||||
|
<ItemGroup> |
||||
|
<Compile Include="Properties\AssemblyInfo.cs"> |
||||
|
<SubType>Code</SubType> |
||||
|
</Compile> |
||||
|
<Compile Include="Properties\Resources.Designer.cs"> |
||||
|
<AutoGen>True</AutoGen> |
||||
|
<DesignTime>True</DesignTime> |
||||
|
<DependentUpon>Resources.resx</DependentUpon> |
||||
|
</Compile> |
||||
|
<Compile Include="Properties\Settings.Designer.cs"> |
||||
|
<AutoGen>True</AutoGen> |
||||
|
<DependentUpon>Settings.settings</DependentUpon> |
||||
|
<DesignTimeSharedInput>True</DesignTimeSharedInput> |
||||
|
</Compile> |
||||
|
<EmbeddedResource Include="Properties\Resources.resx"> |
||||
|
<Generator>ResXFileCodeGenerator</Generator> |
||||
|
<LastGenOutput>Resources.Designer.cs</LastGenOutput> |
||||
|
</EmbeddedResource> |
||||
|
<None Include="Properties\Settings.settings"> |
||||
|
<Generator>SettingsSingleFileGenerator</Generator> |
||||
|
<LastGenOutput>Settings.Designer.cs</LastGenOutput> |
||||
|
</None> |
||||
|
</ItemGroup> |
||||
|
<ItemGroup> |
||||
|
<None Include="App.config" /> |
||||
|
</ItemGroup> |
||||
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> |
||||
|
</Project> |
||||
@ -0,0 +1,4 @@ |
|||||
|
// <autogenerated />
|
||||
|
using System; |
||||
|
using System.Reflection; |
||||
|
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] |
||||
@ -0,0 +1,55 @@ |
|||||
|
#pragma checksum "..\..\App.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "FF67D152D4477693C16E024DEA5C02E25401A0E92468F2967B847C769CD467E5"
|
||||
|
//------------------------------------------------------------------------------
|
||||
|
// <auto-generated>
|
||||
|
// 이 코드는 도구를 사용하여 생성되었습니다.
|
||||
|
// 런타임 버전:4.0.30319.42000
|
||||
|
//
|
||||
|
// 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면
|
||||
|
// 이러한 변경 내용이 손실됩니다.
|
||||
|
// </auto-generated>
|
||||
|
//------------------------------------------------------------------------------
|
||||
|
|
||||
|
using System; |
||||
|
using System.Diagnostics; |
||||
|
using System.Windows; |
||||
|
using System.Windows.Automation; |
||||
|
using System.Windows.Controls; |
||||
|
using System.Windows.Controls.Primitives; |
||||
|
using System.Windows.Data; |
||||
|
using System.Windows.Documents; |
||||
|
using System.Windows.Ink; |
||||
|
using System.Windows.Input; |
||||
|
using System.Windows.Markup; |
||||
|
using System.Windows.Media; |
||||
|
using System.Windows.Media.Animation; |
||||
|
using System.Windows.Media.Effects; |
||||
|
using System.Windows.Media.Imaging; |
||||
|
using System.Windows.Media.Media3D; |
||||
|
using System.Windows.Media.TextFormatting; |
||||
|
using System.Windows.Navigation; |
||||
|
using System.Windows.Shapes; |
||||
|
using System.Windows.Shell; |
||||
|
using marking_gui; |
||||
|
|
||||
|
|
||||
|
namespace marking_gui { |
||||
|
|
||||
|
|
||||
|
/// <summary>
|
||||
|
/// App
|
||||
|
/// </summary>
|
||||
|
public partial class App : System.Windows.Application { |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// Application Entry Point.
|
||||
|
/// </summary>
|
||||
|
[System.STAThreadAttribute()] |
||||
|
[System.Diagnostics.DebuggerNonUserCodeAttribute()] |
||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] |
||||
|
public static void Main() { |
||||
|
marking_gui.App app = new marking_gui.App(); |
||||
|
app.Run(); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
@ -0,0 +1,55 @@ |
|||||
|
#pragma checksum "..\..\App.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "FF67D152D4477693C16E024DEA5C02E25401A0E92468F2967B847C769CD467E5"
|
||||
|
//------------------------------------------------------------------------------
|
||||
|
// <auto-generated>
|
||||
|
// 이 코드는 도구를 사용하여 생성되었습니다.
|
||||
|
// 런타임 버전:4.0.30319.42000
|
||||
|
//
|
||||
|
// 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면
|
||||
|
// 이러한 변경 내용이 손실됩니다.
|
||||
|
// </auto-generated>
|
||||
|
//------------------------------------------------------------------------------
|
||||
|
|
||||
|
using System; |
||||
|
using System.Diagnostics; |
||||
|
using System.Windows; |
||||
|
using System.Windows.Automation; |
||||
|
using System.Windows.Controls; |
||||
|
using System.Windows.Controls.Primitives; |
||||
|
using System.Windows.Data; |
||||
|
using System.Windows.Documents; |
||||
|
using System.Windows.Ink; |
||||
|
using System.Windows.Input; |
||||
|
using System.Windows.Markup; |
||||
|
using System.Windows.Media; |
||||
|
using System.Windows.Media.Animation; |
||||
|
using System.Windows.Media.Effects; |
||||
|
using System.Windows.Media.Imaging; |
||||
|
using System.Windows.Media.Media3D; |
||||
|
using System.Windows.Media.TextFormatting; |
||||
|
using System.Windows.Navigation; |
||||
|
using System.Windows.Shapes; |
||||
|
using System.Windows.Shell; |
||||
|
using marking_gui; |
||||
|
|
||||
|
|
||||
|
namespace marking_gui { |
||||
|
|
||||
|
|
||||
|
/// <summary>
|
||||
|
/// App
|
||||
|
/// </summary>
|
||||
|
public partial class App : System.Windows.Application { |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// Application Entry Point.
|
||||
|
/// </summary>
|
||||
|
[System.STAThreadAttribute()] |
||||
|
[System.Diagnostics.DebuggerNonUserCodeAttribute()] |
||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] |
||||
|
public static void Main() { |
||||
|
marking_gui.App app = new marking_gui.App(); |
||||
|
app.Run(); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
Binary file not shown.
Binary file not shown.
@ -0,0 +1,295 @@ |
|||||
|
#pragma checksum "..\..\MainWindow.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "91D3EFB5F855ECB843447939E03D0FB956CA4155D34ABB2AD6ECC0C1038A3CB3"
|
||||
|
//------------------------------------------------------------------------------
|
||||
|
// <auto-generated>
|
||||
|
// 이 코드는 도구를 사용하여 생성되었습니다.
|
||||
|
// 런타임 버전:4.0.30319.42000
|
||||
|
//
|
||||
|
// 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면
|
||||
|
// 이러한 변경 내용이 손실됩니다.
|
||||
|
// </auto-generated>
|
||||
|
//------------------------------------------------------------------------------
|
||||
|
|
||||
|
using System; |
||||
|
using System.Diagnostics; |
||||
|
using System.Windows; |
||||
|
using System.Windows.Automation; |
||||
|
using System.Windows.Controls; |
||||
|
using System.Windows.Controls.Primitives; |
||||
|
using System.Windows.Data; |
||||
|
using System.Windows.Documents; |
||||
|
using System.Windows.Ink; |
||||
|
using System.Windows.Input; |
||||
|
using System.Windows.Markup; |
||||
|
using System.Windows.Media; |
||||
|
using System.Windows.Media.Animation; |
||||
|
using System.Windows.Media.Effects; |
||||
|
using System.Windows.Media.Imaging; |
||||
|
using System.Windows.Media.Media3D; |
||||
|
using System.Windows.Media.TextFormatting; |
||||
|
using System.Windows.Navigation; |
||||
|
using System.Windows.Shapes; |
||||
|
using System.Windows.Shell; |
||||
|
using marking_gui; |
||||
|
|
||||
|
|
||||
|
namespace marking_gui { |
||||
|
|
||||
|
|
||||
|
/// <summary>
|
||||
|
/// MainWindow
|
||||
|
/// </summary>
|
||||
|
public partial class MainWindow : System.Windows.Window, System.Windows.Markup.IComponentConnector { |
||||
|
|
||||
|
|
||||
|
#line 105 "..\..\MainWindow.xaml"
|
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] |
||||
|
internal System.Windows.Controls.TextBlock txtLoginInfo; |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
|
||||
|
|
||||
|
#line 108 "..\..\MainWindow.xaml"
|
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] |
||||
|
internal System.Windows.Controls.TextBlock txtCurrentTime; |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
|
||||
|
|
||||
|
#line 109 "..\..\MainWindow.xaml"
|
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] |
||||
|
internal System.Windows.Controls.TextBlock txtSystemStatus; |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
|
||||
|
|
||||
|
#line 139 "..\..\MainWindow.xaml"
|
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] |
||||
|
internal System.Windows.Controls.TextBox txtSerial; |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
|
||||
|
|
||||
|
#line 141 "..\..\MainWindow.xaml"
|
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] |
||||
|
internal System.Windows.Controls.Button btnSearchSerial; |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
|
||||
|
|
||||
|
#line 172 "..\..\MainWindow.xaml"
|
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] |
||||
|
internal System.Windows.Controls.TextBlock txtPrevHousing; |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
|
||||
|
|
||||
|
#line 183 "..\..\MainWindow.xaml"
|
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] |
||||
|
internal System.Windows.Controls.TextBlock txtPrevCal; |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
|
||||
|
|
||||
|
#line 194 "..\..\MainWindow.xaml"
|
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] |
||||
|
internal System.Windows.Controls.TextBlock txtPrevEol; |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
|
||||
|
|
||||
|
#line 228 "..\..\MainWindow.xaml"
|
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] |
||||
|
internal System.Windows.Controls.TextBlock txtVoltage; |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
|
||||
|
|
||||
|
#line 232 "..\..\MainWindow.xaml"
|
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] |
||||
|
internal System.Windows.Controls.TextBlock txtVoltageRangeGuide; |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
|
||||
|
|
||||
|
#line 247 "..\..\MainWindow.xaml"
|
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] |
||||
|
internal System.Windows.Controls.TextBlock txtCurrent; |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
|
||||
|
|
||||
|
#line 251 "..\..\MainWindow.xaml"
|
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] |
||||
|
internal System.Windows.Controls.TextBlock txtCurrentRangeGuide; |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
|
||||
|
|
||||
|
#line 257 "..\..\MainWindow.xaml"
|
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] |
||||
|
internal System.Windows.Controls.Border borderFinalResult; |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
|
||||
|
|
||||
|
#line 266 "..\..\MainWindow.xaml"
|
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] |
||||
|
internal System.Windows.Controls.TextBlock txtFinalResult; |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
|
||||
|
|
||||
|
#line 267 "..\..\MainWindow.xaml"
|
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] |
||||
|
internal System.Windows.Controls.TextBlock txtFinalSerial; |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
|
||||
|
|
||||
|
#line 277 "..\..\MainWindow.xaml"
|
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] |
||||
|
internal System.Windows.Controls.Button btnStart; |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
|
||||
|
|
||||
|
#line 286 "..\..\MainWindow.xaml"
|
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] |
||||
|
internal System.Windows.Controls.Button btnOpenSettings; |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
|
||||
|
private bool _contentLoaded; |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// InitializeComponent
|
||||
|
/// </summary>
|
||||
|
[System.Diagnostics.DebuggerNonUserCodeAttribute()] |
||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] |
||||
|
public void InitializeComponent() { |
||||
|
if (_contentLoaded) { |
||||
|
return; |
||||
|
} |
||||
|
_contentLoaded = true; |
||||
|
System.Uri resourceLocater = new System.Uri("/marking_gui;component/mainwindow.xaml", System.UriKind.Relative); |
||||
|
|
||||
|
#line 1 "..\..\MainWindow.xaml"
|
||||
|
System.Windows.Application.LoadComponent(this, resourceLocater); |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
} |
||||
|
|
||||
|
[System.Diagnostics.DebuggerNonUserCodeAttribute()] |
||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] |
||||
|
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] |
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")] |
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")] |
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")] |
||||
|
void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) { |
||||
|
switch (connectionId) |
||||
|
{ |
||||
|
case 1: |
||||
|
this.txtLoginInfo = ((System.Windows.Controls.TextBlock)(target)); |
||||
|
return; |
||||
|
case 2: |
||||
|
this.txtCurrentTime = ((System.Windows.Controls.TextBlock)(target)); |
||||
|
return; |
||||
|
case 3: |
||||
|
this.txtSystemStatus = ((System.Windows.Controls.TextBlock)(target)); |
||||
|
return; |
||||
|
case 4: |
||||
|
this.txtSerial = ((System.Windows.Controls.TextBox)(target)); |
||||
|
|
||||
|
#line 140 "..\..\MainWindow.xaml"
|
||||
|
this.txtSerial.GotFocus += new System.Windows.RoutedEventHandler(this.txtSerial_GotFocus); |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
|
||||
|
#line 140 "..\..\MainWindow.xaml"
|
||||
|
this.txtSerial.KeyDown += new System.Windows.Input.KeyEventHandler(this.txtSerial_KeyDown); |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
return; |
||||
|
case 5: |
||||
|
this.btnSearchSerial = ((System.Windows.Controls.Button)(target)); |
||||
|
|
||||
|
#line 141 "..\..\MainWindow.xaml"
|
||||
|
this.btnSearchSerial.Click += new System.Windows.RoutedEventHandler(this.btnSearchSerial_Click); |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
return; |
||||
|
case 6: |
||||
|
this.txtPrevHousing = ((System.Windows.Controls.TextBlock)(target)); |
||||
|
return; |
||||
|
case 7: |
||||
|
this.txtPrevCal = ((System.Windows.Controls.TextBlock)(target)); |
||||
|
return; |
||||
|
case 8: |
||||
|
this.txtPrevEol = ((System.Windows.Controls.TextBlock)(target)); |
||||
|
return; |
||||
|
case 9: |
||||
|
this.txtVoltage = ((System.Windows.Controls.TextBlock)(target)); |
||||
|
return; |
||||
|
case 10: |
||||
|
this.txtVoltageRangeGuide = ((System.Windows.Controls.TextBlock)(target)); |
||||
|
return; |
||||
|
case 11: |
||||
|
this.txtCurrent = ((System.Windows.Controls.TextBlock)(target)); |
||||
|
return; |
||||
|
case 12: |
||||
|
this.txtCurrentRangeGuide = ((System.Windows.Controls.TextBlock)(target)); |
||||
|
return; |
||||
|
case 13: |
||||
|
this.borderFinalResult = ((System.Windows.Controls.Border)(target)); |
||||
|
return; |
||||
|
case 14: |
||||
|
this.txtFinalResult = ((System.Windows.Controls.TextBlock)(target)); |
||||
|
return; |
||||
|
case 15: |
||||
|
this.txtFinalSerial = ((System.Windows.Controls.TextBlock)(target)); |
||||
|
return; |
||||
|
case 16: |
||||
|
this.btnStart = ((System.Windows.Controls.Button)(target)); |
||||
|
|
||||
|
#line 278 "..\..\MainWindow.xaml"
|
||||
|
this.btnStart.Click += new System.Windows.RoutedEventHandler(this.btnStart_Click); |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
return; |
||||
|
case 17: |
||||
|
this.btnOpenSettings = ((System.Windows.Controls.Button)(target)); |
||||
|
|
||||
|
#line 287 "..\..\MainWindow.xaml"
|
||||
|
this.btnOpenSettings.Click += new System.Windows.RoutedEventHandler(this.btnOpenSettings_Click); |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
return; |
||||
|
} |
||||
|
this._contentLoaded = true; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
@ -0,0 +1,295 @@ |
|||||
|
#pragma checksum "..\..\MainWindow.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "91D3EFB5F855ECB843447939E03D0FB956CA4155D34ABB2AD6ECC0C1038A3CB3"
|
||||
|
//------------------------------------------------------------------------------
|
||||
|
// <auto-generated>
|
||||
|
// 이 코드는 도구를 사용하여 생성되었습니다.
|
||||
|
// 런타임 버전:4.0.30319.42000
|
||||
|
//
|
||||
|
// 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면
|
||||
|
// 이러한 변경 내용이 손실됩니다.
|
||||
|
// </auto-generated>
|
||||
|
//------------------------------------------------------------------------------
|
||||
|
|
||||
|
using System; |
||||
|
using System.Diagnostics; |
||||
|
using System.Windows; |
||||
|
using System.Windows.Automation; |
||||
|
using System.Windows.Controls; |
||||
|
using System.Windows.Controls.Primitives; |
||||
|
using System.Windows.Data; |
||||
|
using System.Windows.Documents; |
||||
|
using System.Windows.Ink; |
||||
|
using System.Windows.Input; |
||||
|
using System.Windows.Markup; |
||||
|
using System.Windows.Media; |
||||
|
using System.Windows.Media.Animation; |
||||
|
using System.Windows.Media.Effects; |
||||
|
using System.Windows.Media.Imaging; |
||||
|
using System.Windows.Media.Media3D; |
||||
|
using System.Windows.Media.TextFormatting; |
||||
|
using System.Windows.Navigation; |
||||
|
using System.Windows.Shapes; |
||||
|
using System.Windows.Shell; |
||||
|
using marking_gui; |
||||
|
|
||||
|
|
||||
|
namespace marking_gui { |
||||
|
|
||||
|
|
||||
|
/// <summary>
|
||||
|
/// MainWindow
|
||||
|
/// </summary>
|
||||
|
public partial class MainWindow : System.Windows.Window, System.Windows.Markup.IComponentConnector { |
||||
|
|
||||
|
|
||||
|
#line 105 "..\..\MainWindow.xaml"
|
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] |
||||
|
internal System.Windows.Controls.TextBlock txtLoginInfo; |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
|
||||
|
|
||||
|
#line 108 "..\..\MainWindow.xaml"
|
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] |
||||
|
internal System.Windows.Controls.TextBlock txtCurrentTime; |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
|
||||
|
|
||||
|
#line 109 "..\..\MainWindow.xaml"
|
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] |
||||
|
internal System.Windows.Controls.TextBlock txtSystemStatus; |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
|
||||
|
|
||||
|
#line 139 "..\..\MainWindow.xaml"
|
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] |
||||
|
internal System.Windows.Controls.TextBox txtSerial; |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
|
||||
|
|
||||
|
#line 141 "..\..\MainWindow.xaml"
|
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] |
||||
|
internal System.Windows.Controls.Button btnSearchSerial; |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
|
||||
|
|
||||
|
#line 172 "..\..\MainWindow.xaml"
|
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] |
||||
|
internal System.Windows.Controls.TextBlock txtPrevHousing; |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
|
||||
|
|
||||
|
#line 183 "..\..\MainWindow.xaml"
|
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] |
||||
|
internal System.Windows.Controls.TextBlock txtPrevCal; |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
|
||||
|
|
||||
|
#line 194 "..\..\MainWindow.xaml"
|
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] |
||||
|
internal System.Windows.Controls.TextBlock txtPrevEol; |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
|
||||
|
|
||||
|
#line 228 "..\..\MainWindow.xaml"
|
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] |
||||
|
internal System.Windows.Controls.TextBlock txtVoltage; |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
|
||||
|
|
||||
|
#line 232 "..\..\MainWindow.xaml"
|
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] |
||||
|
internal System.Windows.Controls.TextBlock txtVoltageRangeGuide; |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
|
||||
|
|
||||
|
#line 247 "..\..\MainWindow.xaml"
|
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] |
||||
|
internal System.Windows.Controls.TextBlock txtCurrent; |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
|
||||
|
|
||||
|
#line 251 "..\..\MainWindow.xaml"
|
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] |
||||
|
internal System.Windows.Controls.TextBlock txtCurrentRangeGuide; |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
|
||||
|
|
||||
|
#line 257 "..\..\MainWindow.xaml"
|
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] |
||||
|
internal System.Windows.Controls.Border borderFinalResult; |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
|
||||
|
|
||||
|
#line 266 "..\..\MainWindow.xaml"
|
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] |
||||
|
internal System.Windows.Controls.TextBlock txtFinalResult; |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
|
||||
|
|
||||
|
#line 267 "..\..\MainWindow.xaml"
|
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] |
||||
|
internal System.Windows.Controls.TextBlock txtFinalSerial; |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
|
||||
|
|
||||
|
#line 277 "..\..\MainWindow.xaml"
|
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] |
||||
|
internal System.Windows.Controls.Button btnStart; |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
|
||||
|
|
||||
|
#line 286 "..\..\MainWindow.xaml"
|
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] |
||||
|
internal System.Windows.Controls.Button btnOpenSettings; |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
|
||||
|
private bool _contentLoaded; |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// InitializeComponent
|
||||
|
/// </summary>
|
||||
|
[System.Diagnostics.DebuggerNonUserCodeAttribute()] |
||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] |
||||
|
public void InitializeComponent() { |
||||
|
if (_contentLoaded) { |
||||
|
return; |
||||
|
} |
||||
|
_contentLoaded = true; |
||||
|
System.Uri resourceLocater = new System.Uri("/marking_gui;component/mainwindow.xaml", System.UriKind.Relative); |
||||
|
|
||||
|
#line 1 "..\..\MainWindow.xaml"
|
||||
|
System.Windows.Application.LoadComponent(this, resourceLocater); |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
} |
||||
|
|
||||
|
[System.Diagnostics.DebuggerNonUserCodeAttribute()] |
||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] |
||||
|
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] |
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")] |
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")] |
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")] |
||||
|
void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) { |
||||
|
switch (connectionId) |
||||
|
{ |
||||
|
case 1: |
||||
|
this.txtLoginInfo = ((System.Windows.Controls.TextBlock)(target)); |
||||
|
return; |
||||
|
case 2: |
||||
|
this.txtCurrentTime = ((System.Windows.Controls.TextBlock)(target)); |
||||
|
return; |
||||
|
case 3: |
||||
|
this.txtSystemStatus = ((System.Windows.Controls.TextBlock)(target)); |
||||
|
return; |
||||
|
case 4: |
||||
|
this.txtSerial = ((System.Windows.Controls.TextBox)(target)); |
||||
|
|
||||
|
#line 140 "..\..\MainWindow.xaml"
|
||||
|
this.txtSerial.GotFocus += new System.Windows.RoutedEventHandler(this.txtSerial_GotFocus); |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
|
||||
|
#line 140 "..\..\MainWindow.xaml"
|
||||
|
this.txtSerial.KeyDown += new System.Windows.Input.KeyEventHandler(this.txtSerial_KeyDown); |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
return; |
||||
|
case 5: |
||||
|
this.btnSearchSerial = ((System.Windows.Controls.Button)(target)); |
||||
|
|
||||
|
#line 141 "..\..\MainWindow.xaml"
|
||||
|
this.btnSearchSerial.Click += new System.Windows.RoutedEventHandler(this.btnSearchSerial_Click); |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
return; |
||||
|
case 6: |
||||
|
this.txtPrevHousing = ((System.Windows.Controls.TextBlock)(target)); |
||||
|
return; |
||||
|
case 7: |
||||
|
this.txtPrevCal = ((System.Windows.Controls.TextBlock)(target)); |
||||
|
return; |
||||
|
case 8: |
||||
|
this.txtPrevEol = ((System.Windows.Controls.TextBlock)(target)); |
||||
|
return; |
||||
|
case 9: |
||||
|
this.txtVoltage = ((System.Windows.Controls.TextBlock)(target)); |
||||
|
return; |
||||
|
case 10: |
||||
|
this.txtVoltageRangeGuide = ((System.Windows.Controls.TextBlock)(target)); |
||||
|
return; |
||||
|
case 11: |
||||
|
this.txtCurrent = ((System.Windows.Controls.TextBlock)(target)); |
||||
|
return; |
||||
|
case 12: |
||||
|
this.txtCurrentRangeGuide = ((System.Windows.Controls.TextBlock)(target)); |
||||
|
return; |
||||
|
case 13: |
||||
|
this.borderFinalResult = ((System.Windows.Controls.Border)(target)); |
||||
|
return; |
||||
|
case 14: |
||||
|
this.txtFinalResult = ((System.Windows.Controls.TextBlock)(target)); |
||||
|
return; |
||||
|
case 15: |
||||
|
this.txtFinalSerial = ((System.Windows.Controls.TextBlock)(target)); |
||||
|
return; |
||||
|
case 16: |
||||
|
this.btnStart = ((System.Windows.Controls.Button)(target)); |
||||
|
|
||||
|
#line 278 "..\..\MainWindow.xaml"
|
||||
|
this.btnStart.Click += new System.Windows.RoutedEventHandler(this.btnStart_Click); |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
return; |
||||
|
case 17: |
||||
|
this.btnOpenSettings = ((System.Windows.Controls.Button)(target)); |
||||
|
|
||||
|
#line 287 "..\..\MainWindow.xaml"
|
||||
|
this.btnOpenSettings.Click += new System.Windows.RoutedEventHandler(this.btnOpenSettings_Click); |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
return; |
||||
|
} |
||||
|
this._contentLoaded = true; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
Binary file not shown.
@ -0,0 +1,155 @@ |
|||||
|
#pragma checksum "..\..\SettingsWindow.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "33961FE01569FF3D7FDD670A40AE2AB5450B6E4881EBA8EABD242BBB6EA0F36D"
|
||||
|
//------------------------------------------------------------------------------
|
||||
|
// <auto-generated>
|
||||
|
// 이 코드는 도구를 사용하여 생성되었습니다.
|
||||
|
// 런타임 버전:4.0.30319.42000
|
||||
|
//
|
||||
|
// 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면
|
||||
|
// 이러한 변경 내용이 손실됩니다.
|
||||
|
// </auto-generated>
|
||||
|
//------------------------------------------------------------------------------
|
||||
|
|
||||
|
using System; |
||||
|
using System.Diagnostics; |
||||
|
using System.Windows; |
||||
|
using System.Windows.Automation; |
||||
|
using System.Windows.Controls; |
||||
|
using System.Windows.Controls.Primitives; |
||||
|
using System.Windows.Data; |
||||
|
using System.Windows.Documents; |
||||
|
using System.Windows.Ink; |
||||
|
using System.Windows.Input; |
||||
|
using System.Windows.Markup; |
||||
|
using System.Windows.Media; |
||||
|
using System.Windows.Media.Animation; |
||||
|
using System.Windows.Media.Effects; |
||||
|
using System.Windows.Media.Imaging; |
||||
|
using System.Windows.Media.Media3D; |
||||
|
using System.Windows.Media.TextFormatting; |
||||
|
using System.Windows.Navigation; |
||||
|
using System.Windows.Shapes; |
||||
|
using System.Windows.Shell; |
||||
|
|
||||
|
|
||||
|
namespace marking_gui { |
||||
|
|
||||
|
|
||||
|
/// <summary>
|
||||
|
/// SettingsWindow
|
||||
|
/// </summary>
|
||||
|
public partial class SettingsWindow : System.Windows.Window, System.Windows.Markup.IComponentConnector { |
||||
|
|
||||
|
|
||||
|
#line 65 "..\..\SettingsWindow.xaml"
|
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] |
||||
|
internal System.Windows.Controls.TextBox txtMinVoltage; |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
|
||||
|
|
||||
|
#line 67 "..\..\SettingsWindow.xaml"
|
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] |
||||
|
internal System.Windows.Controls.TextBox txtMaxVoltage; |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
|
||||
|
|
||||
|
#line 71 "..\..\SettingsWindow.xaml"
|
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] |
||||
|
internal System.Windows.Controls.TextBox txtMinCurrent; |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
|
||||
|
|
||||
|
#line 73 "..\..\SettingsWindow.xaml"
|
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] |
||||
|
internal System.Windows.Controls.TextBox txtMaxCurrent; |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
|
||||
|
|
||||
|
#line 77 "..\..\SettingsWindow.xaml"
|
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] |
||||
|
internal System.Windows.Controls.Button btnSave; |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
|
||||
|
|
||||
|
#line 78 "..\..\SettingsWindow.xaml"
|
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] |
||||
|
internal System.Windows.Controls.Button btnCancel; |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
|
||||
|
private bool _contentLoaded; |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// InitializeComponent
|
||||
|
/// </summary>
|
||||
|
[System.Diagnostics.DebuggerNonUserCodeAttribute()] |
||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] |
||||
|
public void InitializeComponent() { |
||||
|
if (_contentLoaded) { |
||||
|
return; |
||||
|
} |
||||
|
_contentLoaded = true; |
||||
|
System.Uri resourceLocater = new System.Uri("/marking_gui;component/settingswindow.xaml", System.UriKind.Relative); |
||||
|
|
||||
|
#line 1 "..\..\SettingsWindow.xaml"
|
||||
|
System.Windows.Application.LoadComponent(this, resourceLocater); |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
} |
||||
|
|
||||
|
[System.Diagnostics.DebuggerNonUserCodeAttribute()] |
||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] |
||||
|
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] |
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")] |
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")] |
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")] |
||||
|
void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) { |
||||
|
switch (connectionId) |
||||
|
{ |
||||
|
case 1: |
||||
|
this.txtMinVoltage = ((System.Windows.Controls.TextBox)(target)); |
||||
|
return; |
||||
|
case 2: |
||||
|
this.txtMaxVoltage = ((System.Windows.Controls.TextBox)(target)); |
||||
|
return; |
||||
|
case 3: |
||||
|
this.txtMinCurrent = ((System.Windows.Controls.TextBox)(target)); |
||||
|
return; |
||||
|
case 4: |
||||
|
this.txtMaxCurrent = ((System.Windows.Controls.TextBox)(target)); |
||||
|
return; |
||||
|
case 5: |
||||
|
this.btnSave = ((System.Windows.Controls.Button)(target)); |
||||
|
|
||||
|
#line 77 "..\..\SettingsWindow.xaml"
|
||||
|
this.btnSave.Click += new System.Windows.RoutedEventHandler(this.btnSave_Click); |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
return; |
||||
|
case 6: |
||||
|
this.btnCancel = ((System.Windows.Controls.Button)(target)); |
||||
|
|
||||
|
#line 78 "..\..\SettingsWindow.xaml"
|
||||
|
this.btnCancel.Click += new System.Windows.RoutedEventHandler(this.btnCancel_Click); |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
return; |
||||
|
} |
||||
|
this._contentLoaded = true; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
@ -0,0 +1,155 @@ |
|||||
|
#pragma checksum "..\..\SettingsWindow.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "33961FE01569FF3D7FDD670A40AE2AB5450B6E4881EBA8EABD242BBB6EA0F36D"
|
||||
|
//------------------------------------------------------------------------------
|
||||
|
// <auto-generated>
|
||||
|
// 이 코드는 도구를 사용하여 생성되었습니다.
|
||||
|
// 런타임 버전:4.0.30319.42000
|
||||
|
//
|
||||
|
// 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면
|
||||
|
// 이러한 변경 내용이 손실됩니다.
|
||||
|
// </auto-generated>
|
||||
|
//------------------------------------------------------------------------------
|
||||
|
|
||||
|
using System; |
||||
|
using System.Diagnostics; |
||||
|
using System.Windows; |
||||
|
using System.Windows.Automation; |
||||
|
using System.Windows.Controls; |
||||
|
using System.Windows.Controls.Primitives; |
||||
|
using System.Windows.Data; |
||||
|
using System.Windows.Documents; |
||||
|
using System.Windows.Ink; |
||||
|
using System.Windows.Input; |
||||
|
using System.Windows.Markup; |
||||
|
using System.Windows.Media; |
||||
|
using System.Windows.Media.Animation; |
||||
|
using System.Windows.Media.Effects; |
||||
|
using System.Windows.Media.Imaging; |
||||
|
using System.Windows.Media.Media3D; |
||||
|
using System.Windows.Media.TextFormatting; |
||||
|
using System.Windows.Navigation; |
||||
|
using System.Windows.Shapes; |
||||
|
using System.Windows.Shell; |
||||
|
|
||||
|
|
||||
|
namespace marking_gui { |
||||
|
|
||||
|
|
||||
|
/// <summary>
|
||||
|
/// SettingsWindow
|
||||
|
/// </summary>
|
||||
|
public partial class SettingsWindow : System.Windows.Window, System.Windows.Markup.IComponentConnector { |
||||
|
|
||||
|
|
||||
|
#line 65 "..\..\SettingsWindow.xaml"
|
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] |
||||
|
internal System.Windows.Controls.TextBox txtMinVoltage; |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
|
||||
|
|
||||
|
#line 67 "..\..\SettingsWindow.xaml"
|
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] |
||||
|
internal System.Windows.Controls.TextBox txtMaxVoltage; |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
|
||||
|
|
||||
|
#line 71 "..\..\SettingsWindow.xaml"
|
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] |
||||
|
internal System.Windows.Controls.TextBox txtMinCurrent; |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
|
||||
|
|
||||
|
#line 73 "..\..\SettingsWindow.xaml"
|
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] |
||||
|
internal System.Windows.Controls.TextBox txtMaxCurrent; |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
|
||||
|
|
||||
|
#line 77 "..\..\SettingsWindow.xaml"
|
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] |
||||
|
internal System.Windows.Controls.Button btnSave; |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
|
||||
|
|
||||
|
#line 78 "..\..\SettingsWindow.xaml"
|
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] |
||||
|
internal System.Windows.Controls.Button btnCancel; |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
|
||||
|
private bool _contentLoaded; |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// InitializeComponent
|
||||
|
/// </summary>
|
||||
|
[System.Diagnostics.DebuggerNonUserCodeAttribute()] |
||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] |
||||
|
public void InitializeComponent() { |
||||
|
if (_contentLoaded) { |
||||
|
return; |
||||
|
} |
||||
|
_contentLoaded = true; |
||||
|
System.Uri resourceLocater = new System.Uri("/marking_gui;component/settingswindow.xaml", System.UriKind.Relative); |
||||
|
|
||||
|
#line 1 "..\..\SettingsWindow.xaml"
|
||||
|
System.Windows.Application.LoadComponent(this, resourceLocater); |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
} |
||||
|
|
||||
|
[System.Diagnostics.DebuggerNonUserCodeAttribute()] |
||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] |
||||
|
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] |
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")] |
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")] |
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")] |
||||
|
void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) { |
||||
|
switch (connectionId) |
||||
|
{ |
||||
|
case 1: |
||||
|
this.txtMinVoltage = ((System.Windows.Controls.TextBox)(target)); |
||||
|
return; |
||||
|
case 2: |
||||
|
this.txtMaxVoltage = ((System.Windows.Controls.TextBox)(target)); |
||||
|
return; |
||||
|
case 3: |
||||
|
this.txtMinCurrent = ((System.Windows.Controls.TextBox)(target)); |
||||
|
return; |
||||
|
case 4: |
||||
|
this.txtMaxCurrent = ((System.Windows.Controls.TextBox)(target)); |
||||
|
return; |
||||
|
case 5: |
||||
|
this.btnSave = ((System.Windows.Controls.Button)(target)); |
||||
|
|
||||
|
#line 77 "..\..\SettingsWindow.xaml"
|
||||
|
this.btnSave.Click += new System.Windows.RoutedEventHandler(this.btnSave_Click); |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
return; |
||||
|
case 6: |
||||
|
this.btnCancel = ((System.Windows.Controls.Button)(target)); |
||||
|
|
||||
|
#line 78 "..\..\SettingsWindow.xaml"
|
||||
|
this.btnCancel.Click += new System.Windows.RoutedEventHandler(this.btnCancel_Click); |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
return; |
||||
|
} |
||||
|
this._contentLoaded = true; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
Binary file not shown.
@ -0,0 +1,182 @@ |
|||||
|
#pragma checksum "..\..\StartupLoginWindow.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "0B89F527155E3EAFBE9C0A93994E6FA56AC662C1FB48127C3AC7F487F3DBFA24"
|
||||
|
//------------------------------------------------------------------------------
|
||||
|
// <auto-generated>
|
||||
|
// 이 코드는 도구를 사용하여 생성되었습니다.
|
||||
|
// 런타임 버전:4.0.30319.42000
|
||||
|
//
|
||||
|
// 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면
|
||||
|
// 이러한 변경 내용이 손실됩니다.
|
||||
|
// </auto-generated>
|
||||
|
//------------------------------------------------------------------------------
|
||||
|
|
||||
|
using System; |
||||
|
using System.Diagnostics; |
||||
|
using System.Windows; |
||||
|
using System.Windows.Automation; |
||||
|
using System.Windows.Controls; |
||||
|
using System.Windows.Controls.Primitives; |
||||
|
using System.Windows.Data; |
||||
|
using System.Windows.Documents; |
||||
|
using System.Windows.Ink; |
||||
|
using System.Windows.Input; |
||||
|
using System.Windows.Markup; |
||||
|
using System.Windows.Media; |
||||
|
using System.Windows.Media.Animation; |
||||
|
using System.Windows.Media.Effects; |
||||
|
using System.Windows.Media.Imaging; |
||||
|
using System.Windows.Media.Media3D; |
||||
|
using System.Windows.Media.TextFormatting; |
||||
|
using System.Windows.Navigation; |
||||
|
using System.Windows.Shapes; |
||||
|
using System.Windows.Shell; |
||||
|
|
||||
|
|
||||
|
namespace Housing.Login { |
||||
|
|
||||
|
|
||||
|
/// <summary>
|
||||
|
/// StartupLoginWindow
|
||||
|
/// </summary>
|
||||
|
public partial class StartupLoginWindow : System.Windows.Window, System.Windows.Markup.IComponentConnector { |
||||
|
|
||||
|
|
||||
|
#line 89 "..\..\StartupLoginWindow.xaml"
|
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] |
||||
|
internal System.Windows.Controls.TextBox MakerTextBox; |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
|
||||
|
|
||||
|
#line 93 "..\..\StartupLoginWindow.xaml"
|
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] |
||||
|
internal System.Windows.Controls.TextBox ModelTextBox; |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
|
||||
|
|
||||
|
#line 97 "..\..\StartupLoginWindow.xaml"
|
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] |
||||
|
internal System.Windows.Controls.TextBox ColorCodeTextBox; |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
|
||||
|
|
||||
|
#line 101 "..\..\StartupLoginWindow.xaml"
|
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] |
||||
|
internal System.Windows.Controls.TextBox LineNoTextBox; |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
|
||||
|
|
||||
|
#line 110 "..\..\StartupLoginWindow.xaml"
|
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] |
||||
|
internal System.Windows.Controls.TextBox OperatorTextBox; |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
|
||||
|
|
||||
|
#line 117 "..\..\StartupLoginWindow.xaml"
|
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] |
||||
|
internal System.Windows.Controls.PasswordBox PasswordBox; |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
|
||||
|
|
||||
|
#line 121 "..\..\StartupLoginWindow.xaml"
|
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] |
||||
|
internal System.Windows.Controls.TextBox LotNoTextBox; |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
|
||||
|
|
||||
|
#line 125 "..\..\StartupLoginWindow.xaml"
|
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] |
||||
|
internal System.Windows.Controls.TextBox JigNoTextBox; |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
|
||||
|
|
||||
|
#line 134 "..\..\StartupLoginWindow.xaml"
|
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] |
||||
|
internal System.Windows.Controls.Button LogInButton; |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
|
||||
|
private bool _contentLoaded; |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// InitializeComponent
|
||||
|
/// </summary>
|
||||
|
[System.Diagnostics.DebuggerNonUserCodeAttribute()] |
||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] |
||||
|
public void InitializeComponent() { |
||||
|
if (_contentLoaded) { |
||||
|
return; |
||||
|
} |
||||
|
_contentLoaded = true; |
||||
|
System.Uri resourceLocater = new System.Uri("/marking_gui;component/startuploginwindow.xaml", System.UriKind.Relative); |
||||
|
|
||||
|
#line 1 "..\..\StartupLoginWindow.xaml"
|
||||
|
System.Windows.Application.LoadComponent(this, resourceLocater); |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
} |
||||
|
|
||||
|
[System.Diagnostics.DebuggerNonUserCodeAttribute()] |
||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] |
||||
|
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] |
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")] |
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")] |
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")] |
||||
|
void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) { |
||||
|
switch (connectionId) |
||||
|
{ |
||||
|
case 1: |
||||
|
this.MakerTextBox = ((System.Windows.Controls.TextBox)(target)); |
||||
|
return; |
||||
|
case 2: |
||||
|
this.ModelTextBox = ((System.Windows.Controls.TextBox)(target)); |
||||
|
return; |
||||
|
case 3: |
||||
|
this.ColorCodeTextBox = ((System.Windows.Controls.TextBox)(target)); |
||||
|
return; |
||||
|
case 4: |
||||
|
this.LineNoTextBox = ((System.Windows.Controls.TextBox)(target)); |
||||
|
return; |
||||
|
case 5: |
||||
|
this.OperatorTextBox = ((System.Windows.Controls.TextBox)(target)); |
||||
|
return; |
||||
|
case 6: |
||||
|
this.PasswordBox = ((System.Windows.Controls.PasswordBox)(target)); |
||||
|
return; |
||||
|
case 7: |
||||
|
this.LotNoTextBox = ((System.Windows.Controls.TextBox)(target)); |
||||
|
return; |
||||
|
case 8: |
||||
|
this.JigNoTextBox = ((System.Windows.Controls.TextBox)(target)); |
||||
|
return; |
||||
|
case 9: |
||||
|
this.LogInButton = ((System.Windows.Controls.Button)(target)); |
||||
|
|
||||
|
#line 134 "..\..\StartupLoginWindow.xaml"
|
||||
|
this.LogInButton.Click += new System.Windows.RoutedEventHandler(this.LogInButton_Click); |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
return; |
||||
|
} |
||||
|
this._contentLoaded = true; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
@ -0,0 +1,182 @@ |
|||||
|
#pragma checksum "..\..\StartupLoginWindow.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "3E7427B4858245795A7F90250B5B4ED420C4D1D9471FEC97E8B80C741D6410AC"
|
||||
|
//------------------------------------------------------------------------------
|
||||
|
// <auto-generated>
|
||||
|
// 이 코드는 도구를 사용하여 생성되었습니다.
|
||||
|
// 런타임 버전:4.0.30319.42000
|
||||
|
//
|
||||
|
// 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면
|
||||
|
// 이러한 변경 내용이 손실됩니다.
|
||||
|
// </auto-generated>
|
||||
|
//------------------------------------------------------------------------------
|
||||
|
|
||||
|
using System; |
||||
|
using System.Diagnostics; |
||||
|
using System.Windows; |
||||
|
using System.Windows.Automation; |
||||
|
using System.Windows.Controls; |
||||
|
using System.Windows.Controls.Primitives; |
||||
|
using System.Windows.Data; |
||||
|
using System.Windows.Documents; |
||||
|
using System.Windows.Ink; |
||||
|
using System.Windows.Input; |
||||
|
using System.Windows.Markup; |
||||
|
using System.Windows.Media; |
||||
|
using System.Windows.Media.Animation; |
||||
|
using System.Windows.Media.Effects; |
||||
|
using System.Windows.Media.Imaging; |
||||
|
using System.Windows.Media.Media3D; |
||||
|
using System.Windows.Media.TextFormatting; |
||||
|
using System.Windows.Navigation; |
||||
|
using System.Windows.Shapes; |
||||
|
using System.Windows.Shell; |
||||
|
|
||||
|
|
||||
|
namespace Housing.Login { |
||||
|
|
||||
|
|
||||
|
/// <summary>
|
||||
|
/// StartupLoginWindow
|
||||
|
/// </summary>
|
||||
|
public partial class StartupLoginWindow : System.Windows.Window, System.Windows.Markup.IComponentConnector { |
||||
|
|
||||
|
|
||||
|
#line 89 "..\..\StartupLoginWindow.xaml"
|
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] |
||||
|
internal System.Windows.Controls.TextBox MakerTextBox; |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
|
||||
|
|
||||
|
#line 93 "..\..\StartupLoginWindow.xaml"
|
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] |
||||
|
internal System.Windows.Controls.TextBox ModelTextBox; |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
|
||||
|
|
||||
|
#line 97 "..\..\StartupLoginWindow.xaml"
|
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] |
||||
|
internal System.Windows.Controls.TextBox ColorCodeTextBox; |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
|
||||
|
|
||||
|
#line 101 "..\..\StartupLoginWindow.xaml"
|
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] |
||||
|
internal System.Windows.Controls.TextBox LineNoTextBox; |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
|
||||
|
|
||||
|
#line 110 "..\..\StartupLoginWindow.xaml"
|
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] |
||||
|
internal System.Windows.Controls.TextBox OperatorTextBox; |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
|
||||
|
|
||||
|
#line 117 "..\..\StartupLoginWindow.xaml"
|
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] |
||||
|
internal System.Windows.Controls.PasswordBox PasswordBox; |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
|
||||
|
|
||||
|
#line 121 "..\..\StartupLoginWindow.xaml"
|
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] |
||||
|
internal System.Windows.Controls.TextBox LotNoTextBox; |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
|
||||
|
|
||||
|
#line 125 "..\..\StartupLoginWindow.xaml"
|
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] |
||||
|
internal System.Windows.Controls.TextBox JigNoTextBox; |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
|
||||
|
|
||||
|
#line 132 "..\..\StartupLoginWindow.xaml"
|
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] |
||||
|
internal System.Windows.Controls.Button LogInButton; |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
|
||||
|
private bool _contentLoaded; |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// InitializeComponent
|
||||
|
/// </summary>
|
||||
|
[System.Diagnostics.DebuggerNonUserCodeAttribute()] |
||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] |
||||
|
public void InitializeComponent() { |
||||
|
if (_contentLoaded) { |
||||
|
return; |
||||
|
} |
||||
|
_contentLoaded = true; |
||||
|
System.Uri resourceLocater = new System.Uri("/marking_gui;component/startuploginwindow.xaml", System.UriKind.Relative); |
||||
|
|
||||
|
#line 1 "..\..\StartupLoginWindow.xaml"
|
||||
|
System.Windows.Application.LoadComponent(this, resourceLocater); |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
} |
||||
|
|
||||
|
[System.Diagnostics.DebuggerNonUserCodeAttribute()] |
||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] |
||||
|
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] |
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")] |
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")] |
||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")] |
||||
|
void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) { |
||||
|
switch (connectionId) |
||||
|
{ |
||||
|
case 1: |
||||
|
this.MakerTextBox = ((System.Windows.Controls.TextBox)(target)); |
||||
|
return; |
||||
|
case 2: |
||||
|
this.ModelTextBox = ((System.Windows.Controls.TextBox)(target)); |
||||
|
return; |
||||
|
case 3: |
||||
|
this.ColorCodeTextBox = ((System.Windows.Controls.TextBox)(target)); |
||||
|
return; |
||||
|
case 4: |
||||
|
this.LineNoTextBox = ((System.Windows.Controls.TextBox)(target)); |
||||
|
return; |
||||
|
case 5: |
||||
|
this.OperatorTextBox = ((System.Windows.Controls.TextBox)(target)); |
||||
|
return; |
||||
|
case 6: |
||||
|
this.PasswordBox = ((System.Windows.Controls.PasswordBox)(target)); |
||||
|
return; |
||||
|
case 7: |
||||
|
this.LotNoTextBox = ((System.Windows.Controls.TextBox)(target)); |
||||
|
return; |
||||
|
case 8: |
||||
|
this.JigNoTextBox = ((System.Windows.Controls.TextBox)(target)); |
||||
|
return; |
||||
|
case 9: |
||||
|
this.LogInButton = ((System.Windows.Controls.Button)(target)); |
||||
|
|
||||
|
#line 132 "..\..\StartupLoginWindow.xaml"
|
||||
|
this.LogInButton.Click += new System.Windows.RoutedEventHandler(this.LogInButton_Click); |
||||
|
|
||||
|
#line default
|
||||
|
#line hidden
|
||||
|
return; |
||||
|
} |
||||
|
this._contentLoaded = true; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
Binary file not shown.
Binary file not shown.
@ -0,0 +1 @@ |
|||||
|
559df058ce0c66c637b01951457837d0ef0f289591a84f9f0b0c4b4e214ea9db |
||||
@ -0,0 +1,19 @@ |
|||||
|
C:\Users\COMPUTER1\Desktop\mobi\marking_gui\marking_gui\obj\Debug\marking_gui.Properties.Resources.resources |
||||
|
C:\Users\COMPUTER1\Desktop\mobi\marking_gui\marking_gui\obj\Debug\marking_gui.csproj.GenerateResource.cache |
||||
|
C:\Users\COMPUTER1\Desktop\mobi\marking_gui\marking_gui\bin\Debug\marking_gui.exe.config |
||||
|
C:\Users\COMPUTER1\Desktop\mobi\marking_gui\marking_gui\bin\Debug\marking_gui.exe |
||||
|
C:\Users\COMPUTER1\Desktop\mobi\marking_gui\marking_gui\bin\Debug\marking_gui.pdb |
||||
|
C:\Users\COMPUTER1\Desktop\mobi\marking_gui\marking_gui\obj\Debug\MainWindow.g.cs |
||||
|
C:\Users\COMPUTER1\Desktop\mobi\marking_gui\marking_gui\obj\Debug\App.g.cs |
||||
|
C:\Users\COMPUTER1\Desktop\mobi\marking_gui\marking_gui\obj\Debug\marking_gui_MarkupCompile.cache |
||||
|
C:\Users\COMPUTER1\Desktop\mobi\marking_gui\marking_gui\obj\Debug\marking_gui_MarkupCompile.lref |
||||
|
C:\Users\COMPUTER1\Desktop\mobi\marking_gui\marking_gui\obj\Debug\MainWindow.baml |
||||
|
C:\Users\COMPUTER1\Desktop\mobi\marking_gui\marking_gui\obj\Debug\marking_gui.g.resources |
||||
|
C:\Users\COMPUTER1\Desktop\mobi\marking_gui\marking_gui\obj\Debug\marking_gui.exe |
||||
|
C:\Users\COMPUTER1\Desktop\mobi\marking_gui\marking_gui\obj\Debug\marking_gui.pdb |
||||
|
C:\Users\COMPUTER1\Desktop\mobi\marking_gui\marking_gui\obj\Debug\SettingsWindow.baml |
||||
|
C:\Users\COMPUTER1\Desktop\mobi\marking_gui\marking_gui\obj\Debug\SettingsWindow.g.cs |
||||
|
C:\Users\COMPUTER1\Desktop\mobi\marking_gui\marking_gui\obj\Debug\marking_gui.csproj.AssemblyReference.cache |
||||
|
C:\Users\COMPUTER1\Desktop\mobi\marking_gui\marking_gui\obj\Debug\marking_gui.csproj.CoreCompileInputs.cache |
||||
|
C:\Users\COMPUTER1\Desktop\mobi\marking_gui\marking_gui\obj\Debug\StartupLoginWindow.baml |
||||
|
C:\Users\COMPUTER1\Desktop\mobi\marking_gui\marking_gui\obj\Debug\StartupLoginWindow.g.cs |
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,20 @@ |
|||||
|
marking_gui |
||||
|
|
||||
|
|
||||
|
winexe |
||||
|
C# |
||||
|
.cs |
||||
|
C:\Users\COMPUTER1\Desktop\mobi\marking_gui\marking_gui\obj\Debug\ |
||||
|
marking_gui |
||||
|
none |
||||
|
false |
||||
|
DEBUG;TRACE |
||||
|
C:\Users\COMPUTER1\Desktop\mobi\marking_gui\marking_gui\App.xaml |
||||
|
31238780151 |
||||
|
|
||||
|
11-917122263 |
||||
|
141066371409 |
||||
|
MainWindow.xaml;SettingsWindow.xaml;StartupLoginWindow.xaml; |
||||
|
|
||||
|
False |
||||
|
|
||||
@ -0,0 +1,20 @@ |
|||||
|
marking_gui |
||||
|
|
||||
|
|
||||
|
winexe |
||||
|
C# |
||||
|
.cs |
||||
|
C:\Users\COMPUTER1\Desktop\mobi\marking_gui\marking_gui\obj\Debug\ |
||||
|
marking_gui |
||||
|
none |
||||
|
false |
||||
|
DEBUG;TRACE |
||||
|
C:\Users\COMPUTER1\Desktop\mobi\marking_gui\marking_gui\App.xaml |
||||
|
3-1210742192 |
||||
|
|
||||
|
12189271937 |
||||
|
14-207034072 |
||||
|
MainWindow.xaml;SettingsWindow.xaml;StartupLoginWindow.xaml; |
||||
|
|
||||
|
True |
||||
|
|
||||
@ -0,0 +1,4 @@ |
|||||
|
|
||||
|
|
||||
|
FC:\Users\COMPUTER1\Desktop\mobi\marking_gui\marking_gui\MainWindow.xaml;; |
||||
|
|
||||
@ -0,0 +1,4 @@ |
|||||
|
|
||||
|
|
||||
|
FC:\Users\COMPUTER1\Desktop\mobi\marking_gui\marking_gui\MainWindow.xaml;; |
||||
|
|
||||
@ -0,0 +1,162 @@ |
|||||
|
# 양산형 테스트 기기 모니터링 시스템 사용자 설명서 (User Manual) |
||||
|
|
||||
|
|
||||
|
|
||||
|
본 문서는 **양산형 테스트 기기 모니터링 시스템**을 사용하는 작업자 및 검사자를 위한 운영 설명서입니다. 프로그램의 시작부터 제품 조회, 성능 검사 수행, 판정 기준 설정까지 내부 프로그램 코드를 몰라도 누구나 쉽게 작동법을 이해할 수 있도록 사용자 화면 관점에서 기술되었습니다. |
||||
|
|
||||
|
|
||||
|
|
||||
|
--- |
||||
|
|
||||
|
|
||||
|
|
||||
|
## 1. 시스템 개요 (Introduction) |
||||
|
|
||||
|
|
||||
|
|
||||
|
본 시스템은 제조 라인의 최종 단계에서 제품의 전기적 성능(측정 전압 및 전류)을 검사하고 최종 합격/불합격 여부를 판정하는 모니터링 프로그램입니다. |
||||
|
|
||||
|
- **이전 단계 확인:** 제품의 바코드(S/N)를 조회하여 이전 주요 공정(Housing, Calibration, EOL)을 모두 통과했는지 자동으로 검증합니다. |
||||
|
|
||||
|
- **실시간 계측 및 판정:** 검사를 시작하면 전기적 신호가 측정되며, 설정된 범위 이내인 경우 최종 `PASS`(합격), 범위를 벗어나면 `FAIL`(불합격) 판정을 내립니다. |
||||
|
|
||||
|
- **파라미터 조율:** 생산 제품 사양에 맞춰 합격 판정 기준 범위(최소/최대 전압 및 전류)를 간편하게 변경할 수 있습니다. |
||||
|
|
||||
|
|
||||
|
|
||||
|
--- |
||||
|
|
||||
|
|
||||
|
|
||||
|
## 2. 전체 동작 흐름도 (Operational Flow) |
||||
|
|
||||
|
|
||||
|
|
||||
|
검사자가 프로그램을 구동하여 최종 검사를 완료하기까지의 전체 프로세스는 다음과 같습니다. |
||||
|
|
||||
|
|
||||
|
|
||||
|
```mermaid |
||||
|
graph TD |
||||
|
A([1. 프로그램 실행]) --> B[시작 설정 및 로그인 팝업] |
||||
|
B --> C{로그인 및 설정 완료?} |
||||
|
C -- 취소/종료 --> D([프로그램 종료]) |
||||
|
C -- 로그인 완료 클릭 --> E[메인 모니터링 화면 기동] |
||||
|
E --> F[상단바에서 작업자 및 모델 정보 확인] |
||||
|
F --> G[S/N 입력 칸에 바코드 스캔 또는 직접 입력] |
||||
|
G --> H[조회 버튼 클릭 또는 엔터 키 입력] |
||||
|
H --> I{이전 검사 결과 확인} |
||||
|
I -- 이전 단계 중 불합격 존재 --> J[경고 팝업 창 출력 및 진행 불가 표시] |
||||
|
J --> K[START 버튼 비활성화 상태 유지 -> 검사 불가] |
||||
|
K --> G |
||||
|
I -- 이전 단계 모두 합격 PASS --> L[상태: 검사 가능 표시 및 START 버튼 활성화] |
||||
|
L --> M[▶ 검사 시작 START 버튼 클릭] |
||||
|
M --> N[상태: 검사 진행 중 표시 및 수치 측정 시작] |
||||
|
N --> O[전압/전류 계측값이 2초간 흔들리며 측정 동작 연출] |
||||
|
O --> P[측정 완료 및 최종값 표시] |
||||
|
P --> Q{측정 전압/전류가 기준범위 이내인가?} |
||||
|
Q -- 합격 범위 내 --> R[대형 화면에 PASS 녹색 표시 및 합격 판정] |
||||
|
Q -- 범위 이탈 --> S[대형 화면에 FAIL 적색 표시 및 불합격 판정] |
||||
|
R --> T[시스템 원상 복구 및 다음 제품 검사 대기] |
||||
|
S --> T |
||||
|
T --> G |
||||
|
``` |
||||
|
|
||||
|
|
||||
|
|
||||
|
--- |
||||
|
|
||||
|
|
||||
|
|
||||
|
## 3. 상세 기능별 동작 가이드 |
||||
|
|
||||
|
|
||||
|
|
||||
|
### 3.1. 시스템 시작 설정 및 로그인 |
||||
|
|
||||
|
1. **프로그램 기동:** 프로그램을 켜면 메인 화면이 뜨기 전, **[시스템 시작 설정 & 로그인]** 화면이 화면 중앙에 먼저 나타납니다. |
||||
|
|
||||
|
2. **설정값 기입:** 제조사, 모델명, 색상 코드, 라인 번호, LOT 번호, 지그 번호를 확인 및 기입하고, 담당 **작업자명**과 **비밀번호**를 입력합니다. |
||||
|
|
||||
|
3. **빠른 테스트 실행 (테스트 계정):** |
||||
|
|
||||
|
- 검사 편의를 위해 작업자(`test`)와 비밀번호(`test`)가 미리 입력되어 있습니다. |
||||
|
|
||||
|
- 별도 수정 없이 곧바로 하단의 **[시스템 시작 및 로그인]** 단추를 누르면 로그인이 완료됩니다. |
||||
|
|
||||
|
4. **정보 연동:** 로그인이 완료되면 로그인 창이 닫히고 메인 화면이 자동으로 최대화되어 열립니다. 메인 화면 좌측 상단바 영역에 입력했던 정보가 `[작업자: test | 모델: MOBI-EV-01 | 라인: LINE-3]` 형태로 상시 노출됩니다. |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
--- |
||||
|
|
||||
|
|
||||
|
|
||||
|
### 3.2. 제품 조회 및 이전 공정 이력 검증 |
||||
|
|
||||
|
1. **S/N(시리얼 번호) 스캔:** 메인 화면 좌측의 **'S/N 입력'** 상자에 제품 바코드를 스캔하거나 입력합니다. (키보드의 엔터 키 또는 **[조회]** 버튼 클릭) |
||||
|
|
||||
|
2. **이전 단계 확인:** 시스템이 이전 공정 단계들의 결과를 불러와 화면 좌측 **'이전 시험 단계 결과'** 표에 표시합니다. |
||||
|
|
||||
|
- **합격 제품 테스트 (S/N: `PASS1234`):** Housing, Calibration, EOL 단계가 모두 초록색 `PASS`로 채워지며, 하단의 대형 **[▶ 검사 시작 (START)]** 버튼이 초록색으로 활성화되어 성능 검사를 수행할 수 있습니다. |
||||
|
|
||||
|
- **불합격 제품 테스트 (S/N: `FAIL5678`):** 이전 단계 중 실패한 항목이 빨간색 `FAIL`로 표시되며, 경고 창이 나타납니다. 하단의 검사 시작 버튼은 비활성화되어 최종 검사 진행이 전면 차단됩니다. |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
--- |
||||
|
|
||||
|
|
||||
|
|
||||
|
### 3.3. 최종 성능 검사 및 합불 판정 |
||||
|
|
||||
|
1. **검사 시작:** 초록색으로 활성화된 **[▶ 검사 시작 (START)]** 버튼을 클릭합니다. |
||||
|
|
||||
|
2. **측정 중 상태 (2초간):** |
||||
|
|
||||
|
- 검사가 시작되면 상태창이 파란색 **'측정 중'**으로 변경되고 전압 및 전류 측정 영역의 수치들이 약 2초간 측정됩니다. |
||||
|
|
||||
|
|
||||
|
3. **최종 판정:** |
||||
|
|
||||
|
- 2초가 지나면 측정이 끝나고 최종 검출된 전압과 전류 수치가 화면에 고정됩니다. |
||||
|
|
||||
|
- **합격 (`PASS`):** 측정된 전압(디폴트 `4.0V ~ 6.0V`)과 전류(디폴트 `8.0A ~ 10.0A`)가 모두 가이드 범위 내에 도달하면 대형 판정 영역이 초록색 배경의 **`PASS`**로 갱신되며 최종 합격 판정이 완료됩니다. |
||||
|
|
||||
|
- **불합격 (`FAIL`):** 전압이나 전류 중 하나라도 기준 범위를 벗어나면 해당 측정 텍스트와 대형 판정 영역이 빨간색 배경의 **`FAIL`**로 변하여 경보를 나타냅니다. |
||||
|
|
||||
|
- 판정이 종료되면 시스템은 자동으로 대기 상태로 복구되어 다음 제품 검사를 진행할 준비를 마칩니다. |
||||
|
|
||||
|
|
||||
|
|
||||
|
--- |
||||
|
|
||||
|
|
||||
|
|
||||
|
### 3.4. 판정 기준 파라미터 설정 |
||||
|
|
||||
|
1. **설정창 열기:** 최하단 바 좌측에 있는 파란색 **[⚙ 파라미터 설정]** 버튼을 클릭합니다. |
||||
|
|
||||
|
2. **기준값 수정:** 화면에 팝업창이 나타나며 전압의 최소/최대값 및 전류의 최소/최대 기준 범위를 키보드로 입력하여 수정할 수 있습니다. |
||||
|
|
||||
|
3. **유효성 체크 및 저장:** |
||||
|
|
||||
|
- 입력한 값은 음수여서는 안 되며, 최소값이 최대값보다 작아야 저장할 수 있습니다. |
||||
|
|
||||
|
- **[저장]**을 누르면 변경 사항이 적용되며, 메인 화면 전압/전류 카드 하단에 표시되는 가이드 문구(`기준범위: X.XV ~ Y.YV`)가 실시간으로 자동 변경되어 즉시 새로운 판정 기준으로 적용됩니다. |
||||
|
|
||||
|
--- |
||||
|
### 4. GUI |
||||
|
#### 메인 화면 |
||||
|
![[Pasted image 20260605142629.png]] |
||||
|
|
||||
|
#### 작동화면 |
||||
|
![[Pasted image 20260605142747.png]] |
||||
|
|
||||
|
#### 이전 시험 단계 실패 화면 |
||||
|
![[Pasted image 20260605142804.png]] |
||||
|
|
||||
|
#### 파라미터 설정 화면 |
||||
|
![[Pasted image 20260605142845.png]] |
||||
Loading…
Reference in new issue