199 changed files with 1899 additions and 4110 deletions
Binary file not shown.
@ -0,0 +1,83 @@ |
|||
-- ============================================================================ |
|||
-- Project: NE1aW 온압센서 |
|||
-- Document: dbo.EOL Table Schema (Simplified Version) |
|||
-- Author: Antigravity AI |
|||
-- Date: 2026-05-28 |
|||
-- Description: 사용자 요구사항(ID, 좌/우, SPEC UL, SPEC LL, 누설값, 판정)에 맞추어 단순화된 스키마. |
|||
-- 재검사 이력 추적을 위해 Seq(PK) 및 InspectDateTime(일시) 컬럼 추가. |
|||
-- ============================================================================ |
|||
|
|||
-- 1. 데이터베이스 존재 여부 확인 및 자동 생성 |
|||
IF NOT EXISTS (SELECT * FROM sys.databases WHERE name = 'NE1aW_PT_SENSOR') |
|||
BEGIN |
|||
CREATE DATABASE [NE1aW_PT_SENSOR]; |
|||
PRINT 'Database [NE1aW_PT_SENSOR] created successfully.'; |
|||
END |
|||
GO |
|||
|
|||
USE [NE1aW_PT_SENSOR]; |
|||
GO |
|||
|
|||
-- 2. 기존 테이블이 존재할 경우 삭제 |
|||
IF OBJECT_ID('dbo.EOL', 'U') IS NOT NULL |
|||
BEGIN |
|||
DROP TABLE dbo.EOL; |
|||
PRINT 'Existing [dbo].[EOL] table dropped.'; |
|||
END |
|||
GO |
|||
|
|||
-- 3. 단순화된 테이블 생성 |
|||
CREATE TABLE [dbo].[EOL] ( |
|||
[InspectDate] NVARCHAR(10) NOT NULL, -- 검사 날짜 (YYYY-MM-DD) |
|||
[InspectTime] NVARCHAR(8) NOT NULL, -- 검사 시간 (HH:MM:SS) |
|||
[ID] NVARCHAR(30) NOT NULL, -- 센서 ID (ProductId) (기본키) |
|||
[Channel] NVARCHAR(10) NOT NULL, -- 좌 / 우 (LEFT / RIGHT) |
|||
[SpecUL] NVARCHAR(10) NOT NULL, -- SPEC UL |
|||
[SpecLL] NVARCHAR(10) NOT NULL, -- SPEC LL |
|||
[LeakValue] NVARCHAR(20) NOT NULL, -- 누설 측정값 (MeasuredValue) |
|||
[Result] NVARCHAR(5) NOT NULL, -- 판정 결과 (OK / NG) |
|||
|
|||
CONSTRAINT [PK_EOL_ID] PRIMARY KEY CLUSTERED ([ID] ASC) |
|||
); |
|||
GO |
|||
|
|||
PRINT 'Table [dbo].[EOL] created successfully with simplified columns and ID as Primary Key.'; |
|||
GO |
|||
|
|||
|
|||
-- ============================================================================ |
|||
-- [부록] 테스트 시나리오 SQL 예시 (단순화 버전) |
|||
-- ============================================================================ |
|||
/* |
|||
-- 1. 테스트용 기본 데이터 INSERT (정상 삽입) |
|||
INSERT INTO [dbo].[EOL] ( |
|||
[InspectDate], [InspectTime], [ID], [Channel], [SpecUL], [SpecLL], [LeakValue], [Result] |
|||
) |
|||
VALUES ( |
|||
'2026-06-02', '14:48:51', 'IC_SIMPLE_0001', 'LEFT', '1.00', '-1.00', '0.125', 'OK' |
|||
); |
|||
|
|||
-- 데이터 확인 |
|||
SELECT * FROM [dbo].[EOL]; |
|||
|
|||
-- 2. 동일 ID 재검사 시 MERGE 문을 이용한 UPSERT 테스트 (정상 업데이트 확인) |
|||
-- 예상 결과: 기존 'IC_SIMPLE_0001' 레코드의 LeakValue가 '0.098'로 업데이트됨 |
|||
MERGE INTO [dbo].[EOL] AS Target |
|||
USING (SELECT 'IC_SIMPLE_0001' AS ID) AS Source |
|||
ON (Target.ID = Source.ID) |
|||
WHEN MATCHED THEN |
|||
UPDATE SET |
|||
Target.Channel = 'LEFT', |
|||
Target.SpecUL = '1.00', |
|||
Target.SpecLL = '-1.00', |
|||
Target.LeakValue = '0.098', -- 업데이트될 새 값 |
|||
Target.Result = 'OK', |
|||
Target.InspectDate = '2026-06-02', |
|||
Target.InspectTime = '14:48:00' |
|||
WHEN NOT MATCHED THEN |
|||
INSERT ([ID], [Channel], [SpecUL], [SpecLL], [LeakValue], [Result], [InspectDate], [InspectTime]) |
|||
VALUES ('IC_SIMPLE_0001', 'LEFT', '1.00', '-1.00', '0.098', 'OK', '2026-06-02', '14:48:00'); |
|||
|
|||
-- 데이터 확인 (값 업데이트 확인) |
|||
SELECT * FROM [dbo].[EOL]; |
|||
*/ |
|||
@ -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.
Binary file not shown.
@ -1,104 +0,0 @@ |
|||
using System; |
|||
using System.Threading.Tasks; |
|||
using leak_test_project.Infrastructure; |
|||
using leak_test_project.Services; |
|||
using Moq; |
|||
using Xunit; |
|||
|
|||
namespace leak_test_project.Tests.Services |
|||
{ |
|||
public class Board4251ServiceTests |
|||
{ |
|||
[Fact] |
|||
public async Task CheckStatusAsync_Success_ReturnsTrue() |
|||
{ |
|||
// Arrange
|
|||
var mockComm = new Mock<ICommunication>(); |
|||
mockComm.Setup(c => c.IsOpen).Returns(true); |
|||
var service = new Board4251Service(mockComm.Object); |
|||
int channel = 1; |
|||
string expectedCommand = "x00c_001101:owt28006727ea97c7801\r\n"; |
|||
|
|||
// Simulate receiving Success message
|
|||
mockComm.Setup(c => c.Write(It.Is<string>(s => s == expectedCommand))) |
|||
.Callback<string>(cmd => { |
|||
Task.Run(() => { |
|||
mockComm.Raise(c => c.DataReceived += null, mockComm.Object, "Response: Success <end>"); |
|||
}); |
|||
}); |
|||
|
|||
// Act
|
|||
bool result = await service.CheckStatusAsync(channel); |
|||
|
|||
// Assert
|
|||
Assert.True(result); |
|||
mockComm.Verify(c => c.Write(expectedCommand), Times.AtLeastOnce); |
|||
} |
|||
|
|||
[Fact] |
|||
public async Task CheckStatusAsync_Fail_ReturnsFalse() |
|||
{ |
|||
// Arrange
|
|||
var mockComm = new Mock<ICommunication>(); |
|||
mockComm.Setup(c => c.IsOpen).Returns(true); |
|||
var service = new Board4251Service(mockComm.Object); |
|||
|
|||
// Simulate receiving Fail message
|
|||
mockComm.Setup(c => c.Write(It.IsAny<string>())) |
|||
.Callback<string>(cmd => { |
|||
Task.Run(() => { |
|||
mockComm.Raise(c => c.DataReceived += null, mockComm.Object, "Response: Fail <end>"); |
|||
}); |
|||
}); |
|||
|
|||
// Act
|
|||
bool result = await service.CheckStatusAsync(); // 기본값 채널 1 테스트
|
|||
|
|||
// Assert
|
|||
Assert.False(result); |
|||
} |
|||
|
|||
[Fact] |
|||
public async Task ReadIdAsync_ValidId_ReturnsId() |
|||
{ |
|||
// Arrange
|
|||
var mockComm = new Mock<ICommunication>(); |
|||
mockComm.Setup(c => c.IsOpen).Returns(true); |
|||
var service = new Board4251Service(mockComm.Object); |
|||
string expectedId = "ABC1234567890XYZ"; |
|||
int channel = 2; |
|||
string expectedCommand = "x00c_002101:ow2800326003e\r\n"; |
|||
|
|||
// Simulate receiving ID
|
|||
mockComm.Setup(c => c.Write(It.Is<string>(s => s == expectedCommand))) |
|||
.Callback<string>(cmd => { |
|||
Task.Run(() => { |
|||
mockComm.Raise(c => c.DataReceived += null, mockComm.Object, $"ID: {expectedId}\r\n<end>"); |
|||
}); |
|||
}); |
|||
|
|||
// Act
|
|||
string resultId = await service.ReadIdAsync(channel); |
|||
|
|||
// Assert
|
|||
Assert.Equal(expectedId, resultId); |
|||
mockComm.Verify(c => c.Write(expectedCommand), Times.AtLeastOnce); |
|||
} |
|||
|
|||
[Fact] |
|||
public async Task ReadIdAsync_Timeout_ReturnsNull() |
|||
{ |
|||
// Arrange
|
|||
var mockComm = new Mock<ICommunication>(); |
|||
mockComm.Setup(c => c.IsOpen).Returns(true); |
|||
var service = new Board4251Service(mockComm.Object); |
|||
service.TimeoutMs = 100; // 타임아웃 테스트 속도를 위해 100ms로 설정
|
|||
|
|||
// Act
|
|||
string resultId = await service.ReadIdAsync(); |
|||
|
|||
// Assert
|
|||
Assert.Null(resultId); |
|||
} |
|||
} |
|||
} |
|||
@ -1,30 +0,0 @@ |
|||
using Xunit; |
|||
using leak_test_project.Utils; |
|||
|
|||
namespace leak_test_project.Tests.Utils |
|||
{ |
|||
public class SentinelCrc8Tests |
|||
{ |
|||
[Theory] |
|||
[InlineData("ABC", "40")] // 0x41 ^ 0x42 ^ 0x43 = 0x40
|
|||
[InlineData("123", "30")] // 0x31 ^ 0x32 ^ 0x33 = 0x30
|
|||
public void CalculateHex_ShouldReturnXorSum(string input, string expected) |
|||
{ |
|||
// Act
|
|||
var result = SentinelCrc8.CalculateHex(input); |
|||
|
|||
// Assert
|
|||
Assert.Equal(expected, result); |
|||
} |
|||
|
|||
[Fact] |
|||
public void CalculateHex_EmptyString_ShouldReturn00() |
|||
{ |
|||
// Act
|
|||
var result = SentinelCrc8.CalculateHex(""); |
|||
|
|||
// Assert
|
|||
Assert.Equal("00", result); |
|||
} |
|||
} |
|||
} |
|||
@ -1,149 +0,0 @@ |
|||
using Xunit; |
|||
using leak_test_project.Utils; |
|||
using leak_test_project.Models; |
|||
|
|||
namespace leak_test_project.Tests.Utils |
|||
{ |
|||
public class SentinelParserTests |
|||
{ |
|||
[Theory] |
|||
[InlineData("AABB010\tH\tLR 0.123456 sccm", 'H', "LR 0.123456 sccm")] |
|||
[InlineData("AABB010 H LR 0.123456 sccm", 'H', "LR 0.123456 sccm")] |
|||
public void ExtractBody_ValidHeaderInput_ShouldExtractCorrectBodyAndTypeCode(string input, char expectedType, string expectedBody) |
|||
{ |
|||
// Act
|
|||
string resultBody = SentinelParser.ExtractBody(input, out char resultType); |
|||
|
|||
// Assert
|
|||
Assert.Equal(expectedType, resultType); |
|||
Assert.Equal(expectedBody, resultBody); |
|||
} |
|||
|
|||
[Fact] |
|||
public void ExtractBody_AutoResult_NoHeader_ShouldReturnResultType() |
|||
{ |
|||
// Arrange (C28 매뉴얼 표 규격: 헤더 없이 탭으로 구분된 최소 8개의 필드)
|
|||
string input = "C01\tN1\tP01\tR--\t16:15:14.123\t02/01/16\t0000098353\tA\t*\tPLR\tP\tLR 0.123456 sccm\tLR 0.123456 sccm\t\t\r\n"; |
|||
|
|||
// Act
|
|||
string resultBody = SentinelParser.ExtractBody(input, out char resultType); |
|||
|
|||
// Assert
|
|||
Assert.Equal('R', resultType); |
|||
Assert.Equal(input.Trim(), resultBody); |
|||
} |
|||
|
|||
[Fact] |
|||
public void ExtractBody_AutoStreaming_NoHeader_ShouldReturnStreamingType() |
|||
{ |
|||
// Arrange (헤더 없는 단순 스트리밍 데이터)
|
|||
string input = "LR 0.123456 sccm\r\n"; |
|||
|
|||
// Act
|
|||
string resultBody = SentinelParser.ExtractBody(input, out char resultType); |
|||
|
|||
// Assert
|
|||
Assert.Equal('S', resultType); |
|||
Assert.Equal(input.Trim(), resultBody); |
|||
} |
|||
|
|||
[Fact] |
|||
public void ParseStreamingValue_ValidInput_ShouldParseValueAndUnit() |
|||
{ |
|||
// Arrange
|
|||
string input = "AABB010\tH\tLR 0.123456 sccm"; |
|||
|
|||
// Act
|
|||
ParsedData result = SentinelParser.ParseStreamingValue(input); |
|||
|
|||
// Assert
|
|||
Assert.Equal(0.123456, result.MeasuredValue); |
|||
Assert.Equal("sccm", result.Unit); |
|||
} |
|||
|
|||
[Fact] |
|||
public void ParseStreamingValue_NoHeader_ShouldParseValueAndUnit() |
|||
{ |
|||
// Arrange
|
|||
string input = "LR -1.50 sccm\r\n"; |
|||
|
|||
// Act
|
|||
ParsedData result = SentinelParser.ParseStreamingValue(input); |
|||
|
|||
// Assert
|
|||
Assert.Equal(-1.50, result.MeasuredValue); |
|||
Assert.Equal("sccm", result.Unit); |
|||
} |
|||
|
|||
[Fact] |
|||
public void ParseFinalResult_ValidInput_ShouldParseAllFields() |
|||
{ |
|||
// Arrange
|
|||
// Sample based on manual: XXYYZZZ \t H \t C## \t P## \t LL \t HH:MM:SS \t MM/DD/YY \t ID \t Eval ...
|
|||
string body = "C01\tPort1\tP05\tLink\t12:30:45\t03/26/24\t1234567890\tA\tFlag\tTest\tEval\tLR 0.5 sccm"; |
|||
string input = "XXXXYYY\tH\t" + body; |
|||
|
|||
// Act
|
|||
ParsedData result = SentinelParser.ParseFinalResult(input); |
|||
|
|||
// Assert
|
|||
Assert.Equal("C01", result.ChannelNo); |
|||
Assert.Equal("P05", result.ProgramNo); |
|||
Assert.Equal("OK", result.Judgment); // A -> OK
|
|||
Assert.Equal(0.5, result.MeasuredValue); |
|||
Assert.Equal("sccm", result.Unit); |
|||
} |
|||
|
|||
[Fact] |
|||
public void ParseFinalResult_AutoResult_NoHeader_ShouldParseAllFields() |
|||
{ |
|||
// Arrange (C28 매뉴얼 Appendix D 표와 정확히 동일한 형식의 Auto Result 데이터)
|
|||
// Channel | Port | Prog | Link | Time | Date | UniqueId | Eval | SPC | Type | TestEval | TestData1
|
|||
string input = "C01\tN1\tP01\tR--\t16:15:14.123\t02/01/16\t0000098353\tA\t*\tPLR\tP\tLR 0.123456 sccm\tLR 0.123456 sccm\t\t\r\n"; |
|||
|
|||
// Act
|
|||
ParsedData result = SentinelParser.ParseFinalResult(input); |
|||
|
|||
// Assert
|
|||
Assert.Equal("C01", result.ChannelNo); |
|||
Assert.Equal("P01", result.ProgramNo); |
|||
Assert.Equal("16:15:14.123", result.TestTime); |
|||
Assert.Equal("02/01/16", result.TestDate); |
|||
Assert.Equal("0000098353", result.UniqueId); |
|||
Assert.Equal("98353", result.SerialNo); // 마지막 5자리
|
|||
Assert.Equal("OK", result.Judgment); // A -> OK
|
|||
Assert.Equal("A", result.SensorJudgment); |
|||
Assert.Equal(0.123456, result.MeasuredValue); |
|||
Assert.Equal("sccm", result.Unit); |
|||
} |
|||
|
|||
[Fact] |
|||
public void ParseFinalResult_AutoResult_Reject_ShouldParseProperly() |
|||
{ |
|||
// Arrange (불량 판정 시의 Auto Result 데이터 시뮬레이션)
|
|||
string input = "C02\tN1\tP02\tR--\t16:15:15.000\t02/01/16\t1111111111\tR\t*\tPLR\tF\tLR 1.50 sccm\t\t\r\n"; |
|||
|
|||
// Act
|
|||
ParsedData result = SentinelParser.ParseFinalResult(input); |
|||
|
|||
// Assert
|
|||
Assert.Equal("C02", result.ChannelNo); |
|||
Assert.Equal("NG", result.Judgment); // R -> NG
|
|||
Assert.Equal("R", result.SensorJudgment); |
|||
Assert.Equal(1.50, result.MeasuredValue); |
|||
} |
|||
|
|||
[Theory] |
|||
[InlineData(5.0, 10.0, 1.0, "OK")] |
|||
[InlineData(15.0, 10.0, 1.0, "NG")] |
|||
[InlineData(0.5, 10.0, 1.0, "NG")] |
|||
public void EvaluateJudgment_ShouldReturnCorrectStatus(double value, double ul, double ll, string expected) |
|||
{ |
|||
// Act
|
|||
var result = SentinelParser.EvaluateJudgment(value, ul, ll); |
|||
|
|||
// Assert
|
|||
Assert.Equal(expected, result); |
|||
} |
|||
} |
|||
} |
|||
Binary file not shown.
@ -1,2 +0,0 @@ |
|||
[09:44:25.780] [ERROR] [Board4253] Timeout waiting for response: x00c_001101:or2800326003e |
|||
[09:46:59.088] [ERROR] [Board4253] Timeout waiting for response: x00c_001101:or2800326003e |
|||
@ -1,25 +0,0 @@ |
|||
[10:14:54.667] [WARNING] [Board4251] Timeout waiting for response (Retry 1/3). Command: x00c_001101:ow2800326003e, ReceivedSoFar: |
|||
[10:14:55.084] [WARNING] [Board4251] Timeout waiting for response (Retry 2/3). Command: x00c_001101:ow2800326003e, ReceivedSoFar: |
|||
[10:14:55.501] [WARNING] [Board4251] Timeout waiting for response (Retry 3/3). Command: x00c_001101:ow2800326003e, ReceivedSoFar: |
|||
[10:14:55.934] [WARNING] [Board4251] Timeout waiting for response (Retry 4/3). Command: x00c_001101:ow2800326003e, ReceivedSoFar: |
|||
[10:14:55.934] [ERROR] [Board4251] Failed to receive response after 3 retries: x00c_001101:ow2800326003e |
|||
[10:18:58.651] [WARNING] [Board4251] Timeout waiting for response (Retry 1/3). Command: x00c_001101:ow2800326003e, ReceivedSoFar: |
|||
[10:18:59.085] [WARNING] [Board4251] Timeout waiting for response (Retry 2/3). Command: x00c_001101:ow2800326003e, ReceivedSoFar: |
|||
[10:18:59.502] [WARNING] [Board4251] Timeout waiting for response (Retry 3/3). Command: x00c_001101:ow2800326003e, ReceivedSoFar: |
|||
[10:18:59.920] [WARNING] [Board4251] Timeout waiting for response (Retry 4/3). Command: x00c_001101:ow2800326003e, ReceivedSoFar: |
|||
[10:18:59.920] [ERROR] [Board4251] Failed to receive response after 3 retries: x00c_001101:ow2800326003e |
|||
[10:19:07.251] [WARNING] [Board4251] Timeout waiting for response (Retry 1/3). Command: x00c_001101:ow2800326003e, ReceivedSoFar: |
|||
[10:19:07.669] [WARNING] [Board4251] Timeout waiting for response (Retry 2/3). Command: x00c_001101:ow2800326003e, ReceivedSoFar: |
|||
[10:19:08.101] [WARNING] [Board4251] Timeout waiting for response (Retry 3/3). Command: x00c_001101:ow2800326003e, ReceivedSoFar: |
|||
[10:19:08.535] [WARNING] [Board4251] Timeout waiting for response (Retry 4/3). Command: x00c_001101:ow2800326003e, ReceivedSoFar: |
|||
[10:19:08.536] [ERROR] [Board4251] Failed to receive response after 3 retries: x00c_001101:ow2800326003e |
|||
[10:25:39.456] [WARNING] [Board4251] Timeout waiting for response (Retry 1/3). Command: x00c_001101:ow2800326003e, ReceivedSoFar: |
|||
[10:25:39.881] [WARNING] [Board4251] Timeout waiting for response (Retry 2/3). Command: x00c_001101:ow2800326003e, ReceivedSoFar: |
|||
[10:25:40.304] [WARNING] [Board4251] Timeout waiting for response (Retry 3/3). Command: x00c_001101:ow2800326003e, ReceivedSoFar: |
|||
[10:25:40.725] [WARNING] [Board4251] Timeout waiting for response (Retry 4/3). Command: x00c_001101:ow2800326003e, ReceivedSoFar: |
|||
[10:25:40.726] [ERROR] [Board4251] Failed to receive response after 3 retries: x00c_001101:ow2800326003e |
|||
[10:26:30.241] [WARNING] [Board4251] Timeout waiting for response (Retry 1/3). Command: x00c_001101:ow2800326003e, ReceivedSoFar: |
|||
[10:26:30.672] [WARNING] [Board4251] Timeout waiting for response (Retry 2/3). Command: x00c_001101:ow2800326003e, ReceivedSoFar: |
|||
[10:26:31.088] [WARNING] [Board4251] Timeout waiting for response (Retry 3/3). Command: x00c_001101:ow2800326003e, ReceivedSoFar: |
|||
[10:26:31.505] [WARNING] [Board4251] Timeout waiting for response (Retry 4/3). Command: x00c_001101:ow2800326003e, ReceivedSoFar: |
|||
[10:26:31.505] [ERROR] [Board4251] Failed to receive response after 3 retries: x00c_001101:ow2800326003e |
|||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,10 +0,0 @@ |
|||
[10:24:40.119] [WARNING] [Board4251] Timeout waiting for response (Retry 1/3). Command: x00c_001101:ow2800326003e, ReceivedSoFar: |
|||
[10:24:40.539] [WARNING] [Board4251] Timeout waiting for response (Retry 2/3). Command: x00c_001101:ow2800326003e, ReceivedSoFar: |
|||
[10:24:40.970] [WARNING] [Board4251] Timeout waiting for response (Retry 3/3). Command: x00c_001101:ow2800326003e, ReceivedSoFar: |
|||
[10:24:41.396] [WARNING] [Board4251] Timeout waiting for response (Retry 4/3). Command: x00c_001101:ow2800326003e, ReceivedSoFar: |
|||
[10:24:41.396] [ERROR] [Board4251] Failed to receive response after 3 retries: x00c_001101:ow2800326003e |
|||
[10:25:21.146] [WARNING] [Board4251] Timeout waiting for response (Retry 1/3). Command: x00c_001101:ow2800326003e, ReceivedSoFar: |
|||
[10:25:21.569] [WARNING] [Board4251] Timeout waiting for response (Retry 2/3). Command: x00c_001101:ow2800326003e, ReceivedSoFar: |
|||
[10:25:21.995] [WARNING] [Board4251] Timeout waiting for response (Retry 3/3). Command: x00c_001101:ow2800326003e, ReceivedSoFar: |
|||
[10:25:22.417] [WARNING] [Board4251] Timeout waiting for response (Retry 4/3). Command: x00c_001101:ow2800326003e, ReceivedSoFar: |
|||
[10:25:22.417] [ERROR] [Board4251] Failed to receive response after 3 retries: x00c_001101:ow2800326003e |
|||
@ -1,47 +0,0 @@ |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
|
|||
<PropertyGroup> |
|||
<TargetFramework>net472</TargetFramework> |
|||
<IsPackable>false</IsPackable> |
|||
<RootNamespace>leak_test_project.Tests</RootNamespace> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" /> |
|||
<PackageReference Include="xunit" Version="2.6.2" /> |
|||
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.4"> |
|||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> |
|||
<PrivateAssets>all</PrivateAssets> |
|||
</PackageReference> |
|||
<PackageReference Include="coverlet.collector" Version="6.0.0"> |
|||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> |
|||
<PrivateAssets>all</PrivateAssets> |
|||
</PackageReference> |
|||
<PackageReference Include="Moq" Version="4.20.70" /> |
|||
</ItemGroup> |
|||
|
|||
<ItemGroup> |
|||
<Reference Include="PresentationFramework" /> |
|||
<Reference Include="PresentationCore" /> |
|||
<Reference Include="WindowsBase" /> |
|||
<Reference Include="System.Xaml" /> |
|||
</ItemGroup> |
|||
|
|||
<ItemGroup> |
|||
<!--<ProjectReference Include="..\leak_test_project\leak_test_project.csproj" />--> |
|||
<Compile Include="..\leak_test_project\Utils\ConfigHelper.cs" Link="Utils\ConfigHelper.cs" /> |
|||
<Compile Include="..\leak_test_project\Utils\SentinelParser.cs" Link="Utils\SentinelParser.cs" /> |
|||
<Compile Include="..\leak_test_project\Utils\LogUtils.cs" Link="Utils\LogUtils.cs" /> |
|||
<Compile Include="..\leak_test_project\Models\ProjectModels.cs" Link="Models\ProjectModels.cs" /> |
|||
<Compile Include="..\leak_test_project\Infrastructure\CommunicationBase.cs" Link="Infrastructure\CommunicationBase.cs" /> |
|||
<Compile Include="..\leak_test_project\Infrastructure\DioBoardBase.cs" Link="Infrastructure\DioBoardBase.cs" /> |
|||
<Compile Include="..\leak_test_project\Infrastructure\Dask.cs" Link="Infrastructure\Dask.cs" /> |
|||
<Compile Include="..\leak_test_project\Services\IIdSensorService.cs" Link="Services\IIdSensorService.cs" /> |
|||
<Compile Include="..\leak_test_project\Services\SentinelC28Service.cs" Link="Services\SentinelC28Service.cs" /> |
|||
<Compile Include="..\leak_test_project\Services\IoBoardService.cs" Link="Services\IoBoardService.cs" /> |
|||
<Compile Include="..\leak_test_project\Services\DioBoardFactory.cs" Link="Services\DioBoardFactory.cs" /> |
|||
<Compile Include="..\leak_test_project\Services\TestProcessService.cs" Link="Services\TestProcessService.cs" /> |
|||
<Compile Include="..\leak_test_project\Services\Board4251.cs" Link="Services\Board4251.cs" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
@ -1,4 +0,0 @@ |
|||
// <autogenerated />
|
|||
using System; |
|||
using System.Reflection; |
|||
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] |
|||
@ -1,23 +0,0 @@ |
|||
//------------------------------------------------------------------------------
|
|||
// <auto-generated>
|
|||
// 이 코드는 도구를 사용하여 생성되었습니다.
|
|||
// 런타임 버전:4.0.30319.42000
|
|||
//
|
|||
// 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면
|
|||
// 이러한 변경 내용이 손실됩니다.
|
|||
// </auto-generated>
|
|||
//------------------------------------------------------------------------------
|
|||
|
|||
using System; |
|||
using System.Reflection; |
|||
|
|||
[assembly: System.Reflection.AssemblyCompanyAttribute("leak_test_project.Tests")] |
|||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] |
|||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] |
|||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+77d1c3aaba381d0c78380cabfaed51897a31edc1")] |
|||
[assembly: System.Reflection.AssemblyProductAttribute("leak_test_project.Tests")] |
|||
[assembly: System.Reflection.AssemblyTitleAttribute("leak_test_project.Tests")] |
|||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] |
|||
|
|||
// Generated by the MSBuild WriteCodeFragment class.
|
|||
|
|||
@ -1 +0,0 @@ |
|||
dfa1bcc3dd55c3f75b42b34a72f780d712c9e1147faf3e82c45e2f51cf41885f |
|||
@ -1,8 +0,0 @@ |
|||
is_global = true |
|||
build_property.RootNamespace = leak_test_project.Tests |
|||
build_property.ProjectDir = C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\ |
|||
build_property.EnableComHosting = |
|||
build_property.EnableGeneratedComInterfaceComImportInterop = |
|||
build_property.CsWinRTUseWindowsUIXamlProjections = false |
|||
build_property.EffectiveAnalysisLevelStyle = |
|||
build_property.EnableCodeStyleSeverity = |
|||
Binary file not shown.
Binary file not shown.
@ -1 +0,0 @@ |
|||
0c498c72e1af24f34d80cd6f85d77cb00370ba1742f248052ac2cf5deed9afa2 |
|||
@ -1,54 +0,0 @@ |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Debug\net472\xunit.runner.visualstudio.testadapter.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Debug\net472\xunit.abstractions.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Debug\net472\xunit.runner.reporters.net452.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Debug\net472\xunit.runner.utility.net452.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Debug\net472\leak_test_project.Tests.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Debug\net472\leak_test_project.Tests.pdb |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Debug\net472\Castle.Core.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Debug\net472\Microsoft.VisualStudio.CodeCoverage.Shim.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Debug\net472\Microsoft.TestPlatform.CoreUtilities.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Debug\net472\Microsoft.TestPlatform.PlatformAbstractions.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Debug\net472\Microsoft.VisualStudio.TestPlatform.ObjectModel.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Debug\net472\Moq.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Debug\net472\NuGet.Frameworks.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Debug\net472\System.Collections.Immutable.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Debug\net472\System.Reflection.Metadata.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Debug\net472\System.Runtime.CompilerServices.Unsafe.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Debug\net472\System.Threading.Tasks.Extensions.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Debug\net472\xunit.assert.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Debug\net472\xunit.core.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Debug\net472\xunit.execution.desktop.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Debug\net472\cs\Microsoft.TestPlatform.CoreUtilities.resources.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Debug\net472\cs\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Debug\net472\de\Microsoft.TestPlatform.CoreUtilities.resources.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Debug\net472\de\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Debug\net472\es\Microsoft.TestPlatform.CoreUtilities.resources.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Debug\net472\es\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Debug\net472\fr\Microsoft.TestPlatform.CoreUtilities.resources.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Debug\net472\fr\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Debug\net472\it\Microsoft.TestPlatform.CoreUtilities.resources.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Debug\net472\it\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Debug\net472\ja\Microsoft.TestPlatform.CoreUtilities.resources.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Debug\net472\ja\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Debug\net472\ko\Microsoft.TestPlatform.CoreUtilities.resources.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Debug\net472\ko\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Debug\net472\pl\Microsoft.TestPlatform.CoreUtilities.resources.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Debug\net472\pl\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Debug\net472\pt-BR\Microsoft.TestPlatform.CoreUtilities.resources.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Debug\net472\pt-BR\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Debug\net472\ru\Microsoft.TestPlatform.CoreUtilities.resources.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Debug\net472\ru\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Debug\net472\tr\Microsoft.TestPlatform.CoreUtilities.resources.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Debug\net472\tr\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Debug\net472\zh-Hans\Microsoft.TestPlatform.CoreUtilities.resources.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Debug\net472\zh-Hans\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Debug\net472\zh-Hant\Microsoft.TestPlatform.CoreUtilities.resources.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Debug\net472\zh-Hant\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\obj\Debug\net472\leak_test_project.Tests.csproj.AssemblyReference.cache |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\obj\Debug\net472\leak_test_project.Tests.GeneratedMSBuildEditorConfig.editorconfig |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\obj\Debug\net472\leak_test_project.Tests.AssemblyInfoInputs.cache |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\obj\Debug\net472\leak_test_project.Tests.AssemblyInfo.cs |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\obj\Debug\net472\leak_test_project.Tests.csproj.CoreCompileInputs.cache |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\obj\Debug\net472\leak_tes.E02BB52F.Up2Date |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\obj\Debug\net472\leak_test_project.Tests.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\obj\Debug\net472\leak_test_project.Tests.pdb |
|||
Binary file not shown.
Binary file not shown.
@ -1,4 +0,0 @@ |
|||
// <autogenerated />
|
|||
using System; |
|||
using System.Reflection; |
|||
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] |
|||
@ -1,23 +0,0 @@ |
|||
//------------------------------------------------------------------------------
|
|||
// <auto-generated>
|
|||
// 이 코드는 도구를 사용하여 생성되었습니다.
|
|||
// 런타임 버전:4.0.30319.42000
|
|||
//
|
|||
// 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면
|
|||
// 이러한 변경 내용이 손실됩니다.
|
|||
// </auto-generated>
|
|||
//------------------------------------------------------------------------------
|
|||
|
|||
using System; |
|||
using System.Reflection; |
|||
|
|||
[assembly: System.Reflection.AssemblyCompanyAttribute("leak_test_project.Tests")] |
|||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] |
|||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] |
|||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+77d1c3aaba381d0c78380cabfaed51897a31edc1")] |
|||
[assembly: System.Reflection.AssemblyProductAttribute("leak_test_project.Tests")] |
|||
[assembly: System.Reflection.AssemblyTitleAttribute("leak_test_project.Tests")] |
|||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] |
|||
|
|||
// Generated by the MSBuild WriteCodeFragment class.
|
|||
|
|||
@ -1 +0,0 @@ |
|||
acbfea79027e4ab25c0f7b2b015d0f8ac8002d7760da81e077d21947bf758347 |
|||
@ -1,8 +0,0 @@ |
|||
is_global = true |
|||
build_property.RootNamespace = leak_test_project.Tests |
|||
build_property.ProjectDir = C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\ |
|||
build_property.EnableComHosting = |
|||
build_property.EnableGeneratedComInterfaceComImportInterop = |
|||
build_property.CsWinRTUseWindowsUIXamlProjections = false |
|||
build_property.EffectiveAnalysisLevelStyle = |
|||
build_property.EnableCodeStyleSeverity = |
|||
Binary file not shown.
Binary file not shown.
@ -1 +0,0 @@ |
|||
00716152d706ef3c486fd25e9c4535b79d009a6ebc9ecbc7d98bc05e0e6dd29a |
|||
@ -1,54 +0,0 @@ |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Release\net472\xunit.runner.visualstudio.testadapter.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Release\net472\xunit.abstractions.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Release\net472\xunit.runner.reporters.net452.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Release\net472\xunit.runner.utility.net452.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Release\net472\leak_test_project.Tests.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Release\net472\leak_test_project.Tests.pdb |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Release\net472\Castle.Core.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Release\net472\Microsoft.VisualStudio.CodeCoverage.Shim.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Release\net472\Microsoft.TestPlatform.CoreUtilities.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Release\net472\Microsoft.TestPlatform.PlatformAbstractions.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Release\net472\Microsoft.VisualStudio.TestPlatform.ObjectModel.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Release\net472\Moq.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Release\net472\NuGet.Frameworks.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Release\net472\System.Collections.Immutable.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Release\net472\System.Reflection.Metadata.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Release\net472\System.Runtime.CompilerServices.Unsafe.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Release\net472\System.Threading.Tasks.Extensions.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Release\net472\xunit.assert.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Release\net472\xunit.core.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Release\net472\xunit.execution.desktop.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Release\net472\cs\Microsoft.TestPlatform.CoreUtilities.resources.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Release\net472\cs\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Release\net472\de\Microsoft.TestPlatform.CoreUtilities.resources.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Release\net472\de\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Release\net472\es\Microsoft.TestPlatform.CoreUtilities.resources.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Release\net472\es\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Release\net472\fr\Microsoft.TestPlatform.CoreUtilities.resources.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Release\net472\fr\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Release\net472\it\Microsoft.TestPlatform.CoreUtilities.resources.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Release\net472\it\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Release\net472\ja\Microsoft.TestPlatform.CoreUtilities.resources.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Release\net472\ja\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Release\net472\ko\Microsoft.TestPlatform.CoreUtilities.resources.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Release\net472\ko\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Release\net472\pl\Microsoft.TestPlatform.CoreUtilities.resources.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Release\net472\pl\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Release\net472\pt-BR\Microsoft.TestPlatform.CoreUtilities.resources.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Release\net472\pt-BR\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Release\net472\ru\Microsoft.TestPlatform.CoreUtilities.resources.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Release\net472\ru\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Release\net472\tr\Microsoft.TestPlatform.CoreUtilities.resources.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Release\net472\tr\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Release\net472\zh-Hans\Microsoft.TestPlatform.CoreUtilities.resources.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Release\net472\zh-Hans\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Release\net472\zh-Hant\Microsoft.TestPlatform.CoreUtilities.resources.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\bin\Release\net472\zh-Hant\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\obj\Release\net472\leak_test_project.Tests.csproj.AssemblyReference.cache |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\obj\Release\net472\leak_test_project.Tests.GeneratedMSBuildEditorConfig.editorconfig |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\obj\Release\net472\leak_test_project.Tests.AssemblyInfoInputs.cache |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\obj\Release\net472\leak_test_project.Tests.AssemblyInfo.cs |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\obj\Release\net472\leak_test_project.Tests.csproj.CoreCompileInputs.cache |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\obj\Release\net472\leak_tes.E02BB52F.Up2Date |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\obj\Release\net472\leak_test_project.Tests.dll |
|||
C:\Users\COMPUTER1\Desktop\mobi\leak_test_project\leak_test_project.Tests\obj\Release\net472\leak_test_project.Tests.pdb |
|||
@ -1,86 +0,0 @@ |
|||
{ |
|||
"format": 1, |
|||
"restore": { |
|||
"C:\\Users\\COMPUTER1\\Desktop\\mobi\\leak_test_project\\leak_test_project.Tests\\leak_test_project.Tests.csproj": {} |
|||
}, |
|||
"projects": { |
|||
"C:\\Users\\COMPUTER1\\Desktop\\mobi\\leak_test_project\\leak_test_project.Tests\\leak_test_project.Tests.csproj": { |
|||
"version": "1.0.0", |
|||
"restore": { |
|||
"projectUniqueName": "C:\\Users\\COMPUTER1\\Desktop\\mobi\\leak_test_project\\leak_test_project.Tests\\leak_test_project.Tests.csproj", |
|||
"projectName": "leak_test_project.Tests", |
|||
"projectPath": "C:\\Users\\COMPUTER1\\Desktop\\mobi\\leak_test_project\\leak_test_project.Tests\\leak_test_project.Tests.csproj", |
|||
"packagesPath": "C:\\Users\\COMPUTER1\\.nuget\\packages\\", |
|||
"outputPath": "C:\\Users\\COMPUTER1\\Desktop\\mobi\\leak_test_project\\leak_test_project.Tests\\obj\\", |
|||
"projectStyle": "PackageReference", |
|||
"fallbackFolders": [ |
|||
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" |
|||
], |
|||
"configFilePaths": [ |
|||
"C:\\Users\\COMPUTER1\\AppData\\Roaming\\NuGet\\NuGet.Config", |
|||
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", |
|||
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" |
|||
], |
|||
"originalTargetFrameworks": [ |
|||
"net472" |
|||
], |
|||
"sources": { |
|||
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, |
|||
"C:\\Program Files\\dotnet\\library-packs": {}, |
|||
"https://api.nuget.org/v3/index.json": {} |
|||
}, |
|||
"frameworks": { |
|||
"net472": { |
|||
"framework": "net472", |
|||
"targetAlias": "net472", |
|||
"projectReferences": {} |
|||
} |
|||
}, |
|||
"warningProperties": { |
|||
"warnAsError": [ |
|||
"NU1605" |
|||
] |
|||
}, |
|||
"restoreAuditProperties": { |
|||
"enableAudit": "true", |
|||
"auditLevel": "low", |
|||
"auditMode": "direct" |
|||
}, |
|||
"SdkAnalysisLevel": "10.0.300" |
|||
}, |
|||
"frameworks": { |
|||
"net472": { |
|||
"framework": "net472", |
|||
"targetAlias": "net472", |
|||
"dependencies": { |
|||
"Microsoft.NET.Test.Sdk": { |
|||
"target": "Package", |
|||
"version": "[17.8.0, )" |
|||
}, |
|||
"Moq": { |
|||
"target": "Package", |
|||
"version": "[4.20.70, )" |
|||
}, |
|||
"coverlet.collector": { |
|||
"include": "Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive", |
|||
"suppressParent": "All", |
|||
"target": "Package", |
|||
"version": "[6.0.0, )" |
|||
}, |
|||
"xunit": { |
|||
"target": "Package", |
|||
"version": "[2.6.2, )" |
|||
}, |
|||
"xunit.runner.visualstudio": { |
|||
"include": "Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive", |
|||
"suppressParent": "All", |
|||
"target": "Package", |
|||
"version": "[2.5.4, )" |
|||
} |
|||
}, |
|||
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\10.0.300-preview.0.26177.108\\RuntimeIdentifierGraph.json" |
|||
} |
|||
} |
|||
} |
|||
} |
|||
} |
|||
@ -1,25 +0,0 @@ |
|||
<?xml version="1.0" encoding="utf-8" standalone="no"?> |
|||
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
|||
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' "> |
|||
<RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess> |
|||
<RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool> |
|||
<ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile> |
|||
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">$(UserProfile)\.nuget\packages\</NuGetPackageRoot> |
|||
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">C:\Users\COMPUTER1\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages</NuGetPackageFolders> |
|||
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle> |
|||
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">7.0.0</NuGetToolVersion> |
|||
</PropertyGroup> |
|||
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' "> |
|||
<SourceRoot Include="C:\Users\COMPUTER1\.nuget\packages\" /> |
|||
<SourceRoot Include="C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages\" /> |
|||
</ItemGroup> |
|||
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' "> |
|||
<Import Project="$(NuGetPackageRoot)xunit.runner.visualstudio\2.5.4\build\net462\xunit.runner.visualstudio.props" Condition="Exists('$(NuGetPackageRoot)xunit.runner.visualstudio\2.5.4\build\net462\xunit.runner.visualstudio.props')" /> |
|||
<Import Project="$(NuGetPackageRoot)xunit.core\2.6.2\build\xunit.core.props" Condition="Exists('$(NuGetPackageRoot)xunit.core\2.6.2\build\xunit.core.props')" /> |
|||
<Import Project="$(NuGetPackageRoot)microsoft.codecoverage\17.8.0\build\netstandard2.0\Microsoft.CodeCoverage.props" Condition="Exists('$(NuGetPackageRoot)microsoft.codecoverage\17.8.0\build\netstandard2.0\Microsoft.CodeCoverage.props')" /> |
|||
<Import Project="$(NuGetPackageRoot)microsoft.net.test.sdk\17.8.0\build\net462\Microsoft.NET.Test.Sdk.props" Condition="Exists('$(NuGetPackageRoot)microsoft.net.test.sdk\17.8.0\build\net462\Microsoft.NET.Test.Sdk.props')" /> |
|||
</ImportGroup> |
|||
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' "> |
|||
<Pkgxunit_analyzers Condition=" '$(Pkgxunit_analyzers)' == '' ">C:\Users\COMPUTER1\.nuget\packages\xunit.analyzers\1.6.0</Pkgxunit_analyzers> |
|||
</PropertyGroup> |
|||
</Project> |
|||
@ -1,9 +0,0 @@ |
|||
<?xml version="1.0" encoding="utf-8" standalone="no"?> |
|||
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
|||
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' "> |
|||
<Import Project="$(NuGetPackageRoot)xunit.core\2.6.2\build\xunit.core.targets" Condition="Exists('$(NuGetPackageRoot)xunit.core\2.6.2\build\xunit.core.targets')" /> |
|||
<Import Project="$(NuGetPackageRoot)microsoft.codecoverage\17.8.0\build\netstandard2.0\Microsoft.CodeCoverage.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.codecoverage\17.8.0\build\netstandard2.0\Microsoft.CodeCoverage.targets')" /> |
|||
<Import Project="$(NuGetPackageRoot)microsoft.net.test.sdk\17.8.0\build\net462\Microsoft.NET.Test.Sdk.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.net.test.sdk\17.8.0\build\net462\Microsoft.NET.Test.Sdk.targets')" /> |
|||
<Import Project="$(NuGetPackageRoot)coverlet.collector\6.0.0\build\netstandard1.0\coverlet.collector.targets" Condition="Exists('$(NuGetPackageRoot)coverlet.collector\6.0.0\build\netstandard1.0\coverlet.collector.targets')" /> |
|||
</ImportGroup> |
|||
</Project> |
|||
File diff suppressed because it is too large
@ -1,28 +0,0 @@ |
|||
{ |
|||
"version": 2, |
|||
"dgSpecHash": "mKqjtWarivM=", |
|||
"success": true, |
|||
"projectFilePath": "C:\\Users\\COMPUTER1\\Desktop\\mobi\\leak_test_project\\leak_test_project.Tests\\leak_test_project.Tests.csproj", |
|||
"expectedPackageFiles": [ |
|||
"C:\\Users\\COMPUTER1\\.nuget\\packages\\castle.core\\5.1.1\\castle.core.5.1.1.nupkg.sha512", |
|||
"C:\\Users\\COMPUTER1\\.nuget\\packages\\coverlet.collector\\6.0.0\\coverlet.collector.6.0.0.nupkg.sha512", |
|||
"C:\\Users\\COMPUTER1\\.nuget\\packages\\microsoft.codecoverage\\17.8.0\\microsoft.codecoverage.17.8.0.nupkg.sha512", |
|||
"C:\\Users\\COMPUTER1\\.nuget\\packages\\microsoft.net.test.sdk\\17.8.0\\microsoft.net.test.sdk.17.8.0.nupkg.sha512", |
|||
"C:\\Users\\COMPUTER1\\.nuget\\packages\\microsoft.testplatform.objectmodel\\17.8.0\\microsoft.testplatform.objectmodel.17.8.0.nupkg.sha512", |
|||
"C:\\Users\\COMPUTER1\\.nuget\\packages\\moq\\4.20.70\\moq.4.20.70.nupkg.sha512", |
|||
"C:\\Users\\COMPUTER1\\.nuget\\packages\\nuget.frameworks\\6.5.0\\nuget.frameworks.6.5.0.nupkg.sha512", |
|||
"C:\\Users\\COMPUTER1\\.nuget\\packages\\system.collections.immutable\\1.5.0\\system.collections.immutable.1.5.0.nupkg.sha512", |
|||
"C:\\Users\\COMPUTER1\\.nuget\\packages\\system.reflection.metadata\\1.6.0\\system.reflection.metadata.1.6.0.nupkg.sha512", |
|||
"C:\\Users\\COMPUTER1\\.nuget\\packages\\system.runtime.compilerservices.unsafe\\4.5.3\\system.runtime.compilerservices.unsafe.4.5.3.nupkg.sha512", |
|||
"C:\\Users\\COMPUTER1\\.nuget\\packages\\system.threading.tasks.extensions\\4.5.4\\system.threading.tasks.extensions.4.5.4.nupkg.sha512", |
|||
"C:\\Users\\COMPUTER1\\.nuget\\packages\\xunit\\2.6.2\\xunit.2.6.2.nupkg.sha512", |
|||
"C:\\Users\\COMPUTER1\\.nuget\\packages\\xunit.abstractions\\2.0.3\\xunit.abstractions.2.0.3.nupkg.sha512", |
|||
"C:\\Users\\COMPUTER1\\.nuget\\packages\\xunit.analyzers\\1.6.0\\xunit.analyzers.1.6.0.nupkg.sha512", |
|||
"C:\\Users\\COMPUTER1\\.nuget\\packages\\xunit.assert\\2.6.2\\xunit.assert.2.6.2.nupkg.sha512", |
|||
"C:\\Users\\COMPUTER1\\.nuget\\packages\\xunit.core\\2.6.2\\xunit.core.2.6.2.nupkg.sha512", |
|||
"C:\\Users\\COMPUTER1\\.nuget\\packages\\xunit.extensibility.core\\2.6.2\\xunit.extensibility.core.2.6.2.nupkg.sha512", |
|||
"C:\\Users\\COMPUTER1\\.nuget\\packages\\xunit.extensibility.execution\\2.6.2\\xunit.extensibility.execution.2.6.2.nupkg.sha512", |
|||
"C:\\Users\\COMPUTER1\\.nuget\\packages\\xunit.runner.visualstudio\\2.5.4\\xunit.runner.visualstudio.2.5.4.nupkg.sha512" |
|||
], |
|||
"logs": [] |
|||
} |
|||
@ -1,4 +1,3 @@ |
|||
<Solution> |
|||
<Project Path="leak_test_project.Tests/leak_test_project.Tests.csproj" /> |
|||
<Project Path="leak_test_project/leak_test_project.csproj" Id="e02e2608-51f9-4338-b1a6-e6ac94362aae" /> |
|||
</Solution> |
|||
|
|||
@ -0,0 +1 @@ |
|||
{} |
|||
@ -0,0 +1 @@ |
|||
{} |
|||
@ -0,0 +1,33 @@ |
|||
{ |
|||
"file-explorer": true, |
|||
"global-search": true, |
|||
"switcher": true, |
|||
"graph": true, |
|||
"backlink": true, |
|||
"canvas": true, |
|||
"outgoing-link": true, |
|||
"tag-pane": true, |
|||
"footnotes": false, |
|||
"properties": true, |
|||
"page-preview": true, |
|||
"daily-notes": true, |
|||
"templates": true, |
|||
"note-composer": true, |
|||
"command-palette": true, |
|||
"slash-command": false, |
|||
"editor-status": true, |
|||
"bookmarks": true, |
|||
"markdown-importer": false, |
|||
"zk-prefixer": false, |
|||
"random-note": false, |
|||
"outline": true, |
|||
"word-count": true, |
|||
"slides": false, |
|||
"audio-recorder": false, |
|||
"workspaces": false, |
|||
"file-recovery": true, |
|||
"publish": false, |
|||
"sync": true, |
|||
"bases": true, |
|||
"webviewer": false |
|||
} |
|||
@ -0,0 +1,195 @@ |
|||
{ |
|||
"main": { |
|||
"id": "bdcb735517a920dd", |
|||
"type": "split", |
|||
"children": [ |
|||
{ |
|||
"id": "1004ab57097e9235", |
|||
"type": "tabs", |
|||
"children": [ |
|||
{ |
|||
"id": "7fc461cd97381c41", |
|||
"type": "leaf", |
|||
"state": { |
|||
"type": "markdown", |
|||
"state": { |
|||
"file": "사용자_메뉴얼.md", |
|||
"mode": "preview", |
|||
"source": false |
|||
}, |
|||
"icon": "lucide-file", |
|||
"title": "사용자_메뉴얼" |
|||
} |
|||
} |
|||
] |
|||
} |
|||
], |
|||
"direction": "vertical" |
|||
}, |
|||
"left": { |
|||
"id": "2e4e71c5c1858ec4", |
|||
"type": "split", |
|||
"children": [ |
|||
{ |
|||
"id": "beb962e7e6c0ac7c", |
|||
"type": "tabs", |
|||
"children": [ |
|||
{ |
|||
"id": "a6ef93547d5bbdc1", |
|||
"type": "leaf", |
|||
"state": { |
|||
"type": "file-explorer", |
|||
"state": { |
|||
"sortOrder": "alphabetical", |
|||
"autoReveal": false |
|||
}, |
|||
"icon": "lucide-folder-closed", |
|||
"title": "파일 탐색기" |
|||
} |
|||
}, |
|||
{ |
|||
"id": "10dab2b10fa08801", |
|||
"type": "leaf", |
|||
"state": { |
|||
"type": "search", |
|||
"state": { |
|||
"query": "", |
|||
"matchingCase": false, |
|||
"explainSearch": false, |
|||
"collapseAll": false, |
|||
"extraContext": false, |
|||
"sortOrder": "alphabetical" |
|||
}, |
|||
"icon": "lucide-search", |
|||
"title": "검색" |
|||
} |
|||
}, |
|||
{ |
|||
"id": "452f34c59a28f45c", |
|||
"type": "leaf", |
|||
"state": { |
|||
"type": "bookmarks", |
|||
"state": {}, |
|||
"icon": "lucide-bookmark", |
|||
"title": "북마크" |
|||
} |
|||
} |
|||
] |
|||
} |
|||
], |
|||
"direction": "horizontal", |
|||
"width": 300 |
|||
}, |
|||
"right": { |
|||
"id": "eadd0f1c493e33d9", |
|||
"type": "split", |
|||
"children": [ |
|||
{ |
|||
"id": "5d0a60c9c4490c31", |
|||
"type": "tabs", |
|||
"children": [ |
|||
{ |
|||
"id": "43b8c28e380bc273", |
|||
"type": "leaf", |
|||
"state": { |
|||
"type": "backlink", |
|||
"state": { |
|||
"file": "03_메인_화면.md", |
|||
"collapseAll": false, |
|||
"extraContext": false, |
|||
"sortOrder": "alphabetical", |
|||
"showSearch": false, |
|||
"searchQuery": "", |
|||
"backlinkCollapsed": false, |
|||
"unlinkedCollapsed": true |
|||
}, |
|||
"icon": "links-coming-in", |
|||
"title": "03_메인_화면 의 백링크" |
|||
} |
|||
}, |
|||
{ |
|||
"id": "456528a5cb6653ad", |
|||
"type": "leaf", |
|||
"state": { |
|||
"type": "outgoing-link", |
|||
"state": { |
|||
"file": "03_메인_화면.md", |
|||
"linksCollapsed": false, |
|||
"unlinkedCollapsed": true |
|||
}, |
|||
"icon": "links-going-out", |
|||
"title": "03_메인_화면 의 나가는 링크" |
|||
} |
|||
}, |
|||
{ |
|||
"id": "347f5258266c83f8", |
|||
"type": "leaf", |
|||
"state": { |
|||
"type": "tag", |
|||
"state": { |
|||
"sortOrder": "frequency", |
|||
"useHierarchy": true, |
|||
"showSearch": false, |
|||
"searchQuery": "" |
|||
}, |
|||
"icon": "lucide-tags", |
|||
"title": "태그" |
|||
} |
|||
}, |
|||
{ |
|||
"id": "23de7f7f47e4e8ec", |
|||
"type": "leaf", |
|||
"state": { |
|||
"type": "all-properties", |
|||
"state": { |
|||
"sortOrder": "frequency", |
|||
"showSearch": false, |
|||
"searchQuery": "" |
|||
}, |
|||
"icon": "lucide-archive", |
|||
"title": "모든 속성" |
|||
} |
|||
}, |
|||
{ |
|||
"id": "3dd6cfeeda44db3e", |
|||
"type": "leaf", |
|||
"state": { |
|||
"type": "outline", |
|||
"state": { |
|||
"file": "03_메인_화면.md", |
|||
"followCursor": false, |
|||
"showSearch": false, |
|||
"searchQuery": "" |
|||
}, |
|||
"icon": "lucide-list", |
|||
"title": "03_메인_화면 의 개요" |
|||
} |
|||
} |
|||
] |
|||
} |
|||
], |
|||
"direction": "horizontal", |
|||
"width": 300, |
|||
"collapsed": true |
|||
}, |
|||
"left-ribbon": { |
|||
"hiddenItems": { |
|||
"switcher:빠른 전환기 열기": false, |
|||
"graph:그래프 뷰 열기": false, |
|||
"canvas:새 캔버스 만들기": false, |
|||
"daily-notes:오늘의 일일 노트 열기": false, |
|||
"templates:템플릿 삽입": false, |
|||
"command-palette:명령어 팔레트 열기": false, |
|||
"bases:새 베이스 생성하기": false |
|||
} |
|||
}, |
|||
"active": "7fc461cd97381c41", |
|||
"lastOpenFiles": [ |
|||
"10_오류_대응.md", |
|||
"09_로그_관리.md", |
|||
"03_메인_화면.md", |
|||
"02_초기_설정.md", |
|||
"01_시스템_개요.md", |
|||
"사용자_메뉴얼.md" |
|||
] |
|||
} |
|||
@ -0,0 +1,121 @@ |
|||
# 1. 시스템 개요 및 요구사항 |
|||
|
|||
[← 메뉴얼 목차로 돌아가기](사용자_메뉴얼.md) |
|||
|
|||
--- |
|||
|
|||
## 1.1 시스템 개요 |
|||
|
|||
**Pressure Leak Inspect System**은 제품의 압력 누설(Leak)을 자동으로 검사하는 WPF 기반 데스크탑 애플리케이션입니다. 생산 라인에서 DIO 시작 신호를 받아 제품 ID를 판독하고, 누설 시험을 수행한 뒤 합격/불합격을 자동 판정합니다. |
|||
|
|||
### 주요 기능 요약 |
|||
|
|||
| 기능 | 설명 | |
|||
|------|------| |
|||
| **좌/우 2채널 관리** | LEFT / RIGHT 두 개의 독립적인 시험 채널을 운영합니다 | |
|||
| **자동 시험 프로세스** | DIO 시작 신호 감지 → ID 판독 → 누설 시험 → 판정 → 결과 출력까지 전 과정 자동화 | |
|||
| **Sentinel C28 연동** | RS-232 시리얼 통신으로 누설 센서의 실시간 측정값을 수신합니다 | |
|||
| **4251 보드 연동** | 제품 ID(ZMDI 센서) 판독을 위한 시리얼 통신을 수행합니다 | |
|||
| **PCI-7432 DIO 보드** | 디지털 입출력 제어 (시작 신호 수신, OK/NG 출력) | |
|||
| **실시간 I/O 모니터링** | 디지털 입출력 상태를 500ms 주기로 실시간 감시합니다 | |
|||
| **검사 기록 관리** | 날짜/판정/ID별 필터링 검색 및 CSV 파일 내보내기를 지원합니다 | |
|||
| **SPEC 교차 검증** | 프로그램 판정과 센서 자체 판정을 비교하여 불일치 시 경고합니다 | |
|||
| **순차 실행 보장** | 세마포어 잠금으로 좌/우 채널 동시 시험을 방지합니다 | |
|||
|
|||
--- |
|||
|
|||
## 1.2 소프트웨어 요구사항 |
|||
|
|||
| 항목 | 요구사항 | 비고 | |
|||
|------|----------|------| |
|||
| **운영체제** | Windows 10 이상 (64bit 권장) | 32bit도 지원 가능 | |
|||
| **.NET Framework** | 4.7.2 이상 | Windows 10에 기본 포함 | |
|||
| **드라이버** | ADLINK PCIS-DASK 드라이버 | `PCI-Dask.dll` 필요 | |
|||
| **시리얼 포트** | 최소 2개의 COM 포트 | C28 센서용 + 4251 보드용 | |
|||
| **화면 해상도** | 1024×768 이상 | 최대화 실행 시 1920×1080 권장 | |
|||
|
|||
> **참고**: ADLINK 드라이버가 설치되지 않은 환경에서는 프로그램이 **시뮬레이션 모드**로 자동 전환됩니다. 이 경우 DIO 입출력은 동작하지 않지만, 프로그램의 나머지 기능은 정상적으로 사용할 수 있습니다. |
|||
|
|||
--- |
|||
|
|||
## 1.3 하드웨어 구성 |
|||
|
|||
| 장비 | 모델명 | 용도 | 통신 방식 | |
|||
|------|--------|------|-----------| |
|||
| **DIO 보드** | ADLINK PCI-7432 | 디지털 입출력 (시작 신호 수신, OK/NG 결과 출력) | PCI 슬롯 장착 | |
|||
| **ID 판독 보드** | 4251 | 제품 ID 센서(ZMDI) 데이터 판독 | RS-232 시리얼 (COM 포트) | |
|||
| **누설 센서** | Sentinel C28 | 압력 누설량(sccm) 측정 | RS-232 시리얼 (COM 포트) | |
|||
|
|||
### 케이블 연결도 |
|||
|
|||
``` |
|||
┌─────────┐ RS-232 ┌────────────┐ |
|||
│ PC │────────────────→│ Sentinel │ |
|||
│ │ COM 포트1 │ C28 센서 │ |
|||
│ │ └────────────┘ |
|||
│ │ RS-232 ┌────────────┐ |
|||
│ │────────────────→│ │ |
|||
│ │ COM 포트2 │ 4251 보드 │ |
|||
│ │ └────────────┘ |
|||
│ │ PCI 슬롯 ┌────────────┐ |
|||
│ │════════════════→│ ADLINK │ |
|||
│ │ │ PCI-7432 │ |
|||
└─────────┘ └────────────┘ |
|||
``` |
|||
|
|||
--- |
|||
|
|||
## 1.4 DIO 신호 매핑 |
|||
|
|||
### 입력 신호 (Inputs) - PCI-7432 |
|||
|
|||
| 주소 | 신호명 | 동작 | 설명 | |
|||
|------|--------|------|------| |
|||
| 0 | `LEFT_START` | OFF→ON 감지 | 좌측 채널 시험 시작 트리거 | |
|||
| 1 | `RIGHT_START` | OFF→ON 감지 | 우측 채널 시험 시작 트리거 | |
|||
|
|||
> **동작 원리**: 시작 신호가 OFF→ON으로 전환되는 순간(Rising Edge)을 감지하여 시험을 시작합니다. |
|||
|
|||
### 출력 신호 (Outputs) - PCI-7432 |
|||
|
|||
| 주소 | 신호명 | 초기값 | 설명 | |
|||
|------|--------|--------|------| |
|||
| 0 | `LEFT_OK` | OFF | 좌측 합격 시 ON 출력 | |
|||
| 1 | `RIGHT_OK` | OFF | 우측 합격 시 ON 출력 | |
|||
| 2 | `PC_ON` | **ON** | PC 가동 상태 신호 (프로그램 실행 시 자동 ON) | |
|||
| 3 | `LEFT_NG` | OFF | 좌측 불합격 시 ON 출력 | |
|||
| 4 | `RIGHT_NG` | OFF | 우측 불합격 시 ON 출력 | |
|||
|
|||
> **참고**: `PC_ON` 신호는 프로그램 시작 시 자동으로 ON이 되며, 프로그램 종료 시 자동으로 OFF됩니다. 이를 통해 외부 시스템이 PC의 가동 상태를 확인할 수 있습니다. |
|||
|
|||
> **참고**: 시험이 시작되면 해당 채널의 OK/NG 출력이 모두 OFF로 초기화된 후, 판정 완료 시 해당 결과에 맞는 출력만 ON됩니다. |
|||
|
|||
--- |
|||
|
|||
## 1.5 프로그램 창 구조 개요 |
|||
|
|||
프로그램은 3개의 영역으로 구성됩니다: |
|||
|
|||
``` |
|||
┌────────────────────────────────────────────────┐ |
|||
│ 상단 타이틀 바 (프로그램명, 시간, 창 제어 버튼) │ |
|||
├────────────────────────────────────────────────┤ |
|||
│ │ |
|||
│ 메인 콘텐츠 영역 │ |
|||
│ (Home / I/O Monitor / Data View 전환) │ |
|||
│ │ |
|||
├────────────────────────────────────────────────┤ |
|||
│ 하단 메뉴 바 (I/O Monitor, Data, Parameters, │ |
|||
│ Comm. Settings, ID Test L/R) │ |
|||
└────────────────────────────────────────────────┘ |
|||
``` |
|||
|
|||
| 영역 | 높이 | 설명 | |
|||
|------|------|------| |
|||
| 상단 타이틀 바 | 55px | 프로그램 제목, 현재 시간, 버전 정보, 창 제어 버튼 | |
|||
| 메인 콘텐츠 | 가변 | 선택된 화면(Home/I-O/Data)이 표시되는 영역 | |
|||
| 하단 메뉴 바 | 75px | 화면 전환 및 설정 팝업 버튼 | |
|||
|
|||
--- |
|||
|
|||
[다음: 초기 설정 가이드 →](02_초기_설정.md) |
|||
@ -0,0 +1,135 @@ |
|||
# 2. 초기 설정 가이드 |
|||
|
|||
[← 메뉴얼 목차로 돌아가기](사용자_메뉴얼.md) |
|||
|
|||
--- |
|||
|
|||
## 2.1 설치 전 준비사항 체크리스트 |
|||
|
|||
프로그램을 실행하기 전에 아래 항목을 모두 확인하세요: |
|||
|
|||
| # | 확인 항목 | 확인 방법 | 비고 | |
|||
|---|----------|----------|------| |
|||
| 1 | ADLINK PCIS-DASK 드라이버 설치 완료 | Windows 장치 관리자에서 PCI-7432 인식 확인 | 미설치 시 시뮬레이션 모드로 동작 | |
|||
| 2 | Sentinel C28 센서 시리얼 케이블 연결 | 장치 관리자 → 포트(COM & LPT)에서 COM 포트 번호 확인 | RS-232 케이블 사용 | |
|||
| 3 | 4251 보드 시리얼 케이블 연결 | 장치 관리자 → 포트(COM & LPT)에서 COM 포트 번호 확인 | RS-232 케이블 사용 | |
|||
| 4 | PCI-7432 DIO 보드 장착 | 장치 관리자에서 ADLINK PCI-7432 인식 확인 | PCI 슬롯에 장착 | |
|||
| 5 | COM 포트 번호 메모 | C28 센서와 4251 보드 각각의 COM 포트 번호를 기록 | 설정 시 필요 | |
|||
|
|||
> **⚠️ 중요**: C28 센서와 4251 보드는 **서로 다른 COM 포트**에 연결해야 합니다. 동일한 포트를 지정하면 통신 충돌이 발생합니다. |
|||
|
|||
--- |
|||
|
|||
## 2.2 프로그램 실행 |
|||
|
|||
### 실행 방법 |
|||
1. `leak_test_project.exe` 파일을 **더블 클릭**하여 실행합니다. |
|||
2. 프로그램이 전체화면(Maximized) 모드로 시작됩니다. |
|||
|
|||
### 최초 실행 시 자동 생성되는 파일 |
|||
|
|||
| 파일 | 위치 | 설명 | |
|||
|------|------|------| |
|||
| `config.xml` | 프로그램 실행 폴더 | 통신 포트, BaudRate, SPEC 값 등 모든 설정을 저장 | |
|||
| `Settings/DioConfig.ini` | Settings 하위 폴더 | DIO 보드 타입, 입출력 포인트 정의 | |
|||
|
|||
### 프로그램 시작 시 자동 수행 동작 |
|||
|
|||
프로그램이 실행되면 아래 동작이 자동으로 수행됩니다: |
|||
|
|||
``` |
|||
프로그램 실행 |
|||
│ |
|||
├─ 1. DIO 보드 초기화 (PCI-7432 인식, 실패 시 시뮬레이션 모드) |
|||
├─ 2. PC_ON 출력 신호 ON (외부 시스템에 가동 상태 알림) |
|||
├─ 3. config.xml에서 설정값 로드 |
|||
├─ 4. Sentinel C28 센서 시리얼 포트 연결 시도 |
|||
├─ 5. 4251 보드 시리얼 포트 연결 시도 |
|||
├─ 6. 자동 시험 프로세스 스레드 시작 (LEFT/RIGHT 각각) |
|||
└─ 7. 메인 화면(Home View) 표시 |
|||
``` |
|||
|
|||
> **참고**: 시리얼 포트 연결에 실패하면 메인 화면의 **오류 메시지** 영역에 해당 오류가 표시됩니다. 이 경우 `Comm. Settings`에서 올바른 포트를 선택한 후 저장하면 자동으로 재연결됩니다. |
|||
|
|||
--- |
|||
|
|||
## 2.3 최초 설정 순서 (Step-by-Step) |
|||
|
|||
프로그램을 처음 사용할 때는 반드시 아래 순서로 설정을 진행하세요. |
|||
|
|||
### Step 1: 통신 설정 (가장 먼저 수행) |
|||
|
|||
> 하드웨어와의 통신이 설정되어야 이후 모든 기능이 정상 동작합니다. |
|||
|
|||
1. 하단 메뉴 바에서 **`Comm. Settings (통신 설정)`** 버튼을 클릭합니다. |
|||
2. **통신 설정** 팝업 창이 메인 창 중앙에 표시됩니다. |
|||
|
|||
**4251 보드 설정 (좌측 영역):** |
|||
|
|||
| 설정 항목 | 설명 | 선택 방법 | 기본값 | |
|||
|-----------|------|----------|--------| |
|||
| `4251 BaudRate` | 통신 속도 | 드롭다운에서 선택 (9600/19200/38400/115200) | `115200` | |
|||
| `4251 Port` | COM 포트 | 드롭다운에서 연결된 포트 선택 | `COM3` | |
|||
|
|||
**Sentinel C28 설정 (우측 영역):** |
|||
|
|||
| 설정 항목 | 설명 | 선택 방법 | 기본값 | |
|||
|-----------|------|----------|--------| |
|||
| `Sensor BaudRate` | 통신 속도 | 드롭다운에서 선택 (9600/19200/38400/115200) | `9600` | |
|||
| `Sensor Port` | COM 포트 | 드롭다운에서 연결된 포트 선택 | `COM1` | |
|||
|
|||
3. 모든 항목을 설정한 후 **`설정 저장`** 버튼을 클릭합니다. |
|||
4. "통신 설정이 저장되었습니다." 메시지가 표시되면 설정 완료입니다. |
|||
|
|||
> **⚠️ 중요**: 저장 시 기존의 모든 시리얼 통신 연결이 해제되고, 새로운 설정으로 자동 재연결됩니다. 이 과정에서 진행 중인 시험이 있다면 중단될 수 있습니다. |
|||
|
|||
> **참고**: COM 포트 목록에는 현재 PC에 물리적으로 연결된 시리얼 장치만 표시됩니다. 원하는 포트가 보이지 않으면: |
|||
> - USB-시리얼 케이블이 PC에 연결되어 있는지 확인 |
|||
> - 장치 관리자에서 해당 포트의 드라이버가 정상 설치되었는지 확인 |
|||
> - 다른 프로그램이 해당 포트를 점유하고 있지 않은지 확인 |
|||
|
|||
--- |
|||
|
|||
### Step 2: 시험 설정 (SPEC 규격값 입력) |
|||
|
|||
1. 하단 메뉴 바에서 **`Parameters (시험 설정)`** 버튼을 클릭합니다. |
|||
2. **시험 설정** 팝업 창이 표시됩니다. |
|||
|
|||
| 설정 항목 | 설명 | 입력 형식 | 기본값 | |
|||
|-----------|------|----------|--------| |
|||
| `SPEC UL (sccm)` | 누설 상한 규격값 | 소수점 포함 숫자 (예: `1.00`) | `1.00` | |
|||
| `SPEC LL (sccm)` | 누설 하한 규격값 | 소수점 포함 숫자 (예: `-1.00`) | `-1.00` | |
|||
|
|||
3. 값을 입력한 후 **`설정 저장`** 버튼을 클릭합니다. |
|||
4. "파라미터 설정이 저장되었습니다." 메시지가 표시되면 완료입니다. |
|||
|
|||
> **참고**: SPEC UL/LL 값은 좌/우 양쪽 채널에 **공통으로 적용**됩니다. |
|||
|
|||
> **판정 기준**: `SPEC LL ≤ 측정값 ≤ SPEC UL` 이면 **OK**, 범위를 벗어나면 **NG**로 판정됩니다. |
|||
|
|||
--- |
|||
|
|||
### Step 3: 동작 테스트 (선택사항) |
|||
|
|||
모든 설정이 완료되면 하단 메뉴의 **`ID Test (L)`** 또는 **`ID Test (R)`** 버튼으로 간단한 동작 테스트를 수행할 수 있습니다. |
|||
|
|||
1. **`ID Test (L)`** 버튼을 클릭합니다. |
|||
2. 좌측 채널의 진행 메시지가 순서대로 표시됩니다: |
|||
- `시험 시작` → `센서 정보 읽는 중` → `ID 테스트 완료` (또는 `ID 테스트 실패`) |
|||
3. 좌측 채널의 **ID / LOW ID** 영역에 읽은 제품 ID가 표시되면 정상입니다. |
|||
|
|||
> **참고**: ID Test는 DIO 시작 신호 없이도 4251 보드의 센서 판독 기능만 단독으로 테스트합니다. 실제 LEAK 시험은 수행하지 않습니다. |
|||
|
|||
--- |
|||
|
|||
## 2.4 설정 변경 시 주의사항 |
|||
|
|||
| 상황 | 동작 | 주의 | |
|||
|------|------|------| |
|||
| 통신 설정 저장 | 모든 시리얼 연결 해제 → 새 설정으로 재연결 | 시험 중 변경 시 시험 중단 | |
|||
| 시험 설정 저장 | 즉시 메인 화면의 SPEC 표시 갱신 | 진행 중인 시험에는 영향 없음 | |
|||
| 프로그램 재시작 | `config.xml`에서 마지막 저장된 설정 자동 로드 | 별도 작업 불필요 | |
|||
|
|||
--- |
|||
|
|||
[← 이전: 시스템 개요](01_시스템_개요.md) | [다음: 메인 화면 →](03_메인_화면.md) |
|||
@ -0,0 +1,180 @@ |
|||
# 3. 메인 화면 (Home View) |
|||
|
|||
[← 메뉴얼 목차로 돌아가기](사용자_메뉴얼.md) |
|||
|
|||
--- |
|||
|
|||
프로그램 실행 시 기본으로 표시되는 화면입니다. 좌/우 채널의 누설 시험 결과를 실시간으로 모니터링합니다. |
|||
|
|||
## 3.1 전체 화면 레이아웃 |
|||
|
|||
``` |
|||
┌────────────────────────────────────────────────────────────────┐ |
|||
│ Pressure Leak Inspect System 2026-05-08 [목] 10:30:00 ─□X │ ← 상단 타이틀 바 |
|||
├─────────────────────────────┬──────────────────────────────────┤ |
|||
│ LEFT LEAK TESTER │ RIGHT LEAK TESTER │ |
|||
├─────────────────────────────┼──────────────────────────────────┤ |
|||
│ 시작 시간 │ 2026-05-08 ... │ 시작 시간 │ 2026-05-08 ... │ |
|||
│ ID/LOW ID │ ABC123 / 00FF │ ID/LOW ID │ DEF456 / 01AA │ |
|||
│ 측정값 │ 0.5234 sccm │ 측정값 │ 0.3124 sccm │ |
|||
│ │ SPEC UL: 1.00 │ │ SPEC UL: 1.00 │ |
|||
│ │ SPEC LL: -1.00 │ │ SPEC LL: -1.00 │ |
|||
│ 판정 │ OK │ 판정 │ OK │ |
|||
│ 진행메시지 │ 시험 완료 │ 진행메시지│ 시험 완료 │ |
|||
│ 오류메시지 │ │ 오류메시지│ │ |
|||
├────────────────────────────────────────────────────────────────┤ |
|||
│ [Data] [Parameters] [Comm.Settings] [IDL] [IDR] │ ← 하단 메뉴 바 |
|||
└────────────────────────────────────────────────────────────────┘ |
|||
``` |
|||
|
|||
--- |
|||
|
|||
## 3.2 상단 타이틀 바 |
|||
|
|||
프로그램 최상단에 위치한 짙은 남색(#2C3E50) 배경의 바입니다. |
|||
|
|||
| 위치 | 요소 | 설명 | |
|||
|------|------|------| |
|||
| 좌측 | **프로그램 제목** | "Pressure Leak Inspect System" (백색, 24pt 볼드) | |
|||
| 중앙~우측 | **현재 날짜/시간** | `2026-05-08 [목] 10:30:00` 형식, 1초 주기로 실시간 갱신 | |
|||
| 우측 | **버전 정보** | `Ver. 1.0.0 | Updated 2026-04-03` (회색 텍스트) | |
|||
| 최우측 | **창 제어 버튼** | 최소화(─) / 최대화·복원(□) / 종료(X, 빨간색) | |
|||
|
|||
### 타이틀 바 조작 |
|||
|
|||
| 조작 | 동작 | |
|||
|------|------| |
|||
| 타이틀 바 **드래그** | 창 이동 | |
|||
| 타이틀 바 **더블 클릭** | 최대화 ↔ 일반 크기 전환 | |
|||
| **─** 버튼 클릭 | 작업표시줄로 최소화 | |
|||
| **□** 버튼 클릭 | 최대화 ↔ 일반 크기 전환 (아이콘도 변경됨) | |
|||
| **X** 버튼 클릭 | 종료 확인 대화상자 표시 → "예" 선택 시 종료 | |
|||
|
|||
--- |
|||
|
|||
## 3.3 메인 영역 - 채널 모니터링 |
|||
|
|||
화면은 좌측(`LEFT LEAK TESTER`)과 우측(`RIGHT LEAK TESTER`)으로 균등 분할되며, 각 채널은 동일한 구조입니다. |
|||
|
|||
### 각 채널의 구성 요소 (위에서 아래 순서) |
|||
|
|||
#### ① 채널 타이틀 (Row 0) |
|||
- **LEFT LEAK TESTER** 또는 **RIGHT LEAK TESTER** |
|||
- 짙은 남색(#34495E) 배경에 백색 볼드 텍스트 (20pt) |
|||
- 높이: 50px |
|||
|
|||
#### ② 시작 시간 (Row 1) |
|||
| 항목 | 설명 | |
|||
|------|------| |
|||
| 라벨 | `시작 시간` (회색 헤더 배경) | |
|||
| 값 | `yyyy-MM-dd HH:mm:ss` 형식 (예: `2026-05-08 10:30:15`) | |
|||
| 갱신 시점 | 시험이 시작될 때마다 현재 시각으로 자동 갱신 | |
|||
| 높이 | 42px | |
|||
|
|||
#### ③ ID / LOW ID (Row 2) |
|||
| 항목 | 설명 | |
|||
|------|------| |
|||
| 라벨 | `ID / LOW ID` (회색 헤더 배경) | |
|||
| 값 | `{제품ID} / {Low ID}` 형식으로 조합 표시 | |
|||
| 데이터 소스 | 4251 보드를 통해 ZMDI 센서에서 읽은 값 | |
|||
| 갱신 시점 | 시험 시작 시 초기화, 센서 판독 완료 시 표시 | |
|||
| 높이 | 42px | |
|||
|
|||
#### ④ 측정값 + SPEC (Row 3) - **가장 큰 영역** |
|||
좌측에 측정값, 우측에 SPEC 규격이 함께 표시됩니다. |
|||
|
|||
**측정값 영역:** |
|||
|
|||
| 항목 | 설명 | |
|||
|------|------| |
|||
| 라벨 | `측정값` (18pt 볼드) | |
|||
| 값 | Sentinel C28에서 수신한 누설량 (소수점 4자리, 예: `0.5234`) | |
|||
| 단위 | `sccm` (우측 하단에 표시) | |
|||
| 폰트 크기 | **84pt** (매우 크게 표시하여 원거리에서도 확인 가능) | |
|||
| 색상 | 파란색(#2980B9) 볼드 | |
|||
| 갱신 시점 | C28 센서 스트리밍 데이터 수신 시 실시간 갱신 | |
|||
|
|||
**SPEC 영역 (우측 210px):** |
|||
|
|||
| 항목 | 설명 | |
|||
|------|------| |
|||
| `UL` | 상한 규격값 (예: `1.00`), 26pt 볼드 | |
|||
| `LL` | 하한 규격값 (예: `-1.00`), 26pt 볼드 | |
|||
| 갱신 시점 | Parameters에서 저장 시 즉시 반영 | |
|||
|
|||
#### ⑤ 판정 (Row 4) - **두 번째로 큰 영역** |
|||
|
|||
| 항목 | 설명 | |
|||
|------|------| |
|||
| 라벨 | `판정` (18pt 볼드) | |
|||
| 값 | **OK** 또는 **NG** (96pt, ExtraBold) | |
|||
| OK 표시 | 녹색 텍스트(#27AE60) + 연녹색 배경(#D4EFDF) | |
|||
| NG 표시 | 빨간색 텍스트(#C0392B) + 연빨간색 배경(#FADBD8) | |
|||
|
|||
> **판정 기준**: `SPEC LL ≤ 측정값 ≤ SPEC UL` → **OK**, 그 외 → **NG** |
|||
|
|||
#### ⑥ 진행 메시지 (Row 5) |
|||
|
|||
| 항목 | 설명 | |
|||
|------|------| |
|||
| 라벨 | `진행 메시지` (연파랑 배경) | |
|||
| 값 | 현재 시험 단계를 나타내는 텍스트 (22pt 볼드, 파란색) | |
|||
| 높이 | 60px | |
|||
|
|||
표시되는 메시지 목록: |
|||
|
|||
| 메시지 | 의미 | |
|||
|--------|------| |
|||
| `시험 시작` | DIO 시작 신호 감지, 시험 프로세스 시작 | |
|||
| `대기중` | 다른 채널이 시험 중이어서 순서 대기 | |
|||
| `센서 정보 읽는 중` | 4251 보드를 통해 ZMDI 센서 ID 판독 중 | |
|||
| `LEAK 시험중` | Sentinel C28 센서의 측정 결과 대기 중 | |
|||
| `시험 완료` | 판정 완료 및 결과 출력 완료 | |
|||
| `오류 발생` | 시험 중 오류 발생 (상세 내용은 오류 메시지 참조) | |
|||
| `ID 테스트 완료` | 수동 ID 테스트 정상 완료 | |
|||
| `ID 테스트 실패` | 수동 ID 테스트 실패 | |
|||
| `통신 대기 중` | 통신 설정 변경 후 재연결 대기 | |
|||
|
|||
#### ⑦ 오류 메시지 (Row 6) |
|||
|
|||
| 항목 | 설명 | |
|||
|------|------| |
|||
| 라벨 | `오류 메시지` (연주황 배경, 갈색 텍스트) | |
|||
| 값 | 오류 내용 (빨간색, 18pt 볼드). 스크롤 가능 | |
|||
| 특징 | 읽기 전용 텍스트 박스, 텍스트 줄바꿈 자동, 세로 스크롤바 | |
|||
| 초기화 시점 | 새 시험 시작 시 자동 초기화 | |
|||
|
|||
--- |
|||
|
|||
## 3.4 SPEC 교차 검증 경고 |
|||
|
|||
프로그램의 판정 결과(SPEC UL/LL 기준)와 Sentinel C28 센서의 **자체 판정 결과**가 서로 다를 경우: |
|||
|
|||
1. 해당 채널의 **오류 메시지** 영역에 `SPEC 불일치 - 프로그램: OK, 센서: R` 등의 메시지가 표시됩니다. |
|||
2. **팝업 경고 대화상자**가 표시됩니다: "프로그램 스팩과 센서의 스팩이 서로 맞지 않습니다." |
|||
|
|||
> **조치**: 센서 측의 SPEC 설정과 프로그램의 SPEC UL/LL 설정이 동일한지 확인하세요. |
|||
|
|||
--- |
|||
|
|||
## 3.5 하단 메뉴 바 |
|||
|
|||
프로그램 최하단의 연회색(#D5DBDB) 배경 영역입니다. 5개의 버튼이 좌측부터 수평으로 배치됩니다. |
|||
|
|||
| 순서 | 버튼 텍스트 | 부제 | 동작 | 동작 방식 | |
|||
|------|------------|------|------|----------| |
|||
| 1 | **Data** | (측정 데이터) | 검사 기록 조회 화면 전환 | 토글 (다시 클릭 시 Home으로 복귀) | |
|||
| 2 | **Parameters** | (시험 설정) | 시험 설정 팝업 창 열기 | 모달 팝업 (설정 후 자동 닫힘) | |
|||
| 3 | **Comm. Settings** | (통신 설정) | 통신 설정 팝업 창 열기 | 모달 팝업 (설정 후 자동 닫힘) | |
|||
| 4 | **ID Test (L)** | (좌측 ID 테스트) | 좌측 채널 센서 ID 수동 판독 | 즉시 실행 (파란색 텍스트) | |
|||
| 5 | **ID Test (R)** | (우측 ID 테스트) | 우측 채널 센서 ID 수동 판독 | 즉시 실행 (파란색 텍스트) | |
|||
|
|||
### 버튼 스타일 |
|||
- 크기: 140px × 55px |
|||
- 배경: 연회색(#F2F4F4), 마우스 오버 시 약간 어두워짐(#E5E8E8) |
|||
- 테두리: 회색(#85929E), 1.5px |
|||
- 텍스트: 14pt 볼드 (부제는 10pt 일반) |
|||
|
|||
--- |
|||
|
|||
[← 이전: 초기 설정](02_초기_설정.md) | [다음: 통신 설정 →](04_통신_설정.md) |
|||
@ -0,0 +1,67 @@ |
|||
# 4. 통신 설정 (Comm. Settings) |
|||
|
|||
[← 메뉴얼 목차로 돌아가기](사용자_메뉴얼.md) |
|||
|
|||
--- |
|||
|
|||
하단 메뉴에서 **Comm. Settings (통신 설정)** 버튼 클릭 시 열리는 **모달 팝업 창**입니다. |
|||
|
|||
## 4.1 창 구성 |
|||
|
|||
``` |
|||
┌────────────────────────────────────────────────┐ |
|||
│ COMMUNICATION SETTINGS │ ← 타이틀 바 (남색) |
|||
├──────────────────────┬─────────────────────────┤ |
|||
│ [ 4251 보드 설정 ] │ [ Sentinel C28 설정 ] │ |
|||
│ │ │ |
|||
│ 4251 BaudRate ▼115200│ Sensor BaudRate ▼9600 │ |
|||
│ 4251 Port ▼COM3 │ Sensor Port ▼COM1 │ |
|||
│ │ │ |
|||
├──────────────────────┴─────────────────────────┤ |
|||
│ [ 설정 저장 ] [ 닫기 ] │ ← 하단 버튼 영역 |
|||
└────────────────────────────────────────────────┘ |
|||
``` |
|||
|
|||
| 속성 | 값 | |
|||
|------|-----| |
|||
| 창 크기 | 750px × 자동 높이 (최대 700px) | |
|||
| 크기 변경 | 불가 | |
|||
| 위치 | 메인 창 중앙 | |
|||
| 타입 | 모달 (이 창이 열려있으면 메인 창 조작 불가) | |
|||
|
|||
## 4.2 4251 보드 설정 (좌측 영역) |
|||
|
|||
| 항목 | UI 타입 | 선택 가능 값 | 기본값 | 설명 | |
|||
|------|---------|-------------|--------|------| |
|||
| **4251 BaudRate** | 드롭다운 | 9600 / 19200 / 38400 / 115200 | `115200` | 4251 보드 통신 속도. 보드 설정과 일치해야 함 | |
|||
| **4251 Port** | 드롭다운 | 시스템 감지 COM 포트 목록 | `COM3` | 4251 보드가 연결된 시리얼 포트 | |
|||
|
|||
## 4.3 Sentinel C28 설정 (우측 영역) |
|||
|
|||
| 항목 | UI 타입 | 선택 가능 값 | 기본값 | 설명 | |
|||
|------|---------|-------------|--------|------| |
|||
| **Sensor BaudRate** | 드롭다운 | 9600 / 19200 / 38400 / 115200 | `9600` | C28 센서 통신 속도. 센서 설정과 일치해야 함 | |
|||
| **Sensor Port** | 드롭다운 | 시스템 감지 COM 포트 목록 | `COM1` | C28 센서가 연결된 시리얼 포트 | |
|||
|
|||
## 4.4 버튼 설명 |
|||
|
|||
| 버튼 | 색상 | 동작 | |
|||
|------|------|------| |
|||
| **설정 저장** | 연녹색 배경, 녹색 테두리 | config.xml에 저장 → 기존 연결 해제 → 새 설정으로 재연결 → "통신 설정이 저장되었습니다." 메시지 → 창 닫힘 | |
|||
| **닫기** | 기본 회색 | 변경 사항 저장하지 않고 창 닫기 | |
|||
|
|||
## 4.5 저장 시 내부 동작 순서 |
|||
|
|||
1. 현재 선택된 값을 `config.xml`에 저장 |
|||
2. 기존 Sentinel C28 시리얼 연결 해제 |
|||
3. 기존 4251 보드 시리얼 연결 해제 |
|||
4. 시험 프로세스 스레드 종료 |
|||
5. 새 설정값으로 Sentinel C28 재연결 |
|||
6. 새 설정값으로 4251 보드 재연결 |
|||
7. 시험 프로세스 스레드 재시작 |
|||
|
|||
> **⚠️ 주의**: COM 포트를 동일하게 설정하면 충돌이 발생합니다. 4251 보드와 C28 센서는 반드시 다른 포트를 사용하세요. |
|||
|
|||
--- |
|||
|
|||
[← 이전: 메인 화면](03_메인_화면.md) | [다음: 시험 설정 →](05_시험_설정.md) |
|||
Some files were not shown because too many files changed in this diff
Loading…
Reference in new issue