using System;
namespace leak_test_project.Models
{
public class AppConfig
{
public string SensorPort { get; set; } = "COM1";
public int SensorBaudRate { get; set; } = 9600;
public string Board4251Port { get; set; } = "COM3";
public int Board4251BaudRate { get; set; } = 115200;
public int Board4251Timeout { get; set; } = 5000; // 보드가 응답을 주는데 2초 이상 걸리므로 무조건 길게 대기
public double SpecUL { get; set; } = 1.00;
public double SpecLL { get; set; } = -1.00;
}
///
/// DIO 보드의 개별 포인트(입력 또는 출력)를 나타내는 모델.
///
public class DioPoint
{
/// 포인트 이름 (예: LEFT_START, LEFT_OK, RIGHT_NG)
public string Name { get; set; }
/// 설명 (예: 좌측 시작 신호)
public string Description { get; set; }
/// true: 입력, false: 출력
public bool IsInput { get; set; }
/// 현재 값 (ON=true, OFF=false)
public bool Value { get; set; }
/// 하드웨어 IO 포트의 실제 비트 인덱스 (0~31)
public int BitIndex { get; set; }
}
///
/// DIO 입력 변경 시 사용되는 이벤트 인자.
///
public class DioEventArgs : System.EventArgs
{
public string PointName { get; set; }
public bool NewValue { get; set; }
public DioEventArgs(string pointName, bool newValue)
{
PointName = pointName;
NewValue = newValue;
}
}
public class InOutItem : System.ComponentModel.INotifyPropertyChanged
{
public string Address { get; set; }
public string Name { get; set; }
public string Description { get; set; }
private bool _value;
/// 현재 값 (ON=true, OFF=false). DIO 실시간 상태 표시용.
public bool Value
{
get => _value;
set
{
if (_value != value)
{
_value = value;
PropertyChanged?.Invoke(this, new System.ComponentModel.PropertyChangedEventArgs(nameof(Value)));
}
}
}
public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
}
public class InspectData
{
public string InspectDate { get; set; }
public string InspectTime { get; set; }
public string Retest { get; set; }
public string Mode { get; set; } // 예: 개발/양산
public string LineNo { get; set; }
public string ProductType { get; set; }
public string ProductId { get; set; }
public string Channel { get; set; } // 좌/우
public string SpecUL { get; set; }
public string SpecLL { get; set; }
public string MeasuredValue { get; set; }
public string Judgment { get; set; }
}
public class ParsedData
{
public string RawData { get; set; }
public double MeasuredValue { get; set; }
public string Unit { get; set; }
public string TestType { get; set; }
public string Judgment { get; set; }
public DateTime Timestamp { get; set; }
// 스크린샷 추가 요구사항 필드
public string ChannelNo { get; set; }
public string ProgramNo { get; set; }
public string UniqueId { get; set; }
public string TestDate { get; set; }
public string TestTime { get; set; }
public string SerialNo { get; set; }
public string LowID { get; set; }
/// 센서 자체 판정 결과 (A=Accept, R=Reject). SPEC 교차 검증에 사용.
public string SensorJudgment { get; set; }
public ParsedData()
{
Timestamp = DateTime.Now;
}
}
///
/// ZMDI 센서에서 읽은 제품 ID 정보.
/// 레거시 ClsSensorReader의 필드를 기반으로 구성.
///
public class SensorIdData
{
/// 센서 메모리에서 읽은 원본 Low ID 문자열
public string LowID { get; set; } = "";
/// 제조 년도
public int Year { get; set; }
/// 제조 월
public int Month { get; set; }
/// 제조 일
public int Day { get; set; }
/// 시리얼 번호 (5자리 패딩)
public string Serial { get; set; } = "";
/// MC Line (개발/양산 구분)
public string McLine { get; set; } = "";
/// 라인 번호
public string LineNo { get; set; } = "";
/// 제품 구분 (Item)
public string Item { get; set; } = "";
/// 최종 조합 ID (년+월+일+시리얼+라인+항목)
public string ID { get; set; } = "";
/// 이전 검사 결과. F=미시험/불합격, P=합격. 불량 제품 필터링에 사용.
public string PrevResult { get; set; } = "";
}
}