using AuroraLaserScanner; using System; using WeldingCommon.Data; namespace ILSOS_CCW_H52A.Data { public class JigInfo { // --- 지그 식별 --- public int JigNo; // 물리 지그 번호 (1-based, -1: 미설정) // --- 스캐너 리스트 파라미터 (ReadyScannerList에서 채워짐) --- public eListNo ListNo; public DateTime WriteTime; public double StartAngle; public int WeldingCount; // --- 캔 유무 / 용접 상태 --- public bool IsCanExist; public bool IsWelding; public bool WeldComplete; public DateTime WeldStartTime; public DateTime WeldEndTime; public TimeSpan WeldingSpanTime; // 스캐너 리스트 실행 시간 (GetTime() 결과) // CellTracker 수신 정보 public string LotId; public string CellId; // --- 플래그 --- public bool CheckSendCellinfo; public bool ReportComplete; // --- 리포팅/뷰 용 상세 정보 --- public WeldingData InnerCellInfo; public JigInfo() { InnerCellInfo = new WeldingData(); Clear(); } public void SetReportComplete(bool comp) => ReportComplete = comp; /// /// 다른 JigInfo의 모든 필드를 이 슬롯에 복사 (재시작 보존용 pendingSlot에 사용) /// public void CopyFrom(JigInfo src) { JigNo = src.JigNo; ListNo = src.ListNo; WriteTime = src.WriteTime; StartAngle = src.StartAngle; WeldingCount = src.WeldingCount; IsCanExist = src.IsCanExist; IsWelding = src.IsWelding; WeldComplete = src.WeldComplete; WeldStartTime = src.WeldStartTime; WeldEndTime = src.WeldEndTime; WeldingSpanTime = src.WeldingSpanTime; LotId = src.LotId; CellId = src.CellId; CheckSendCellinfo = src.CheckSendCellinfo; ReportComplete = src.ReportComplete; UpdateCellInfo(src.InnerCellInfo); } /// /// 슬롯 전체 초기화 (Shift 시 새 Prefetch2 슬롯에 자동 호출됨) /// public void Clear() { JigNo = -1; ListNo = 0; WriteTime = DateTime.MinValue; StartAngle = 0.0; WeldingCount = -1; IsCanExist = false; IsWelding = false; WeldComplete = false; WeldStartTime = DateTime.MinValue; WeldEndTime = DateTime.MinValue; WeldingSpanTime = TimeSpan.Zero; LotId = string.Empty; CellId = string.Empty; CheckSendCellinfo = false; ReportComplete = false; InnerCellInfo.Clear(); } /// /// InnerCellInfo를 WeldingData 로부터 필드 단위로 복사 (GC 할당 없음) /// public void UpdateCellInfo(WeldingData data) { InnerCellInfo.CellId = data.CellId; InnerCellInfo.LotId = data.LotId; InnerCellInfo.AutoRunStartTime = data.AutoRunStartTime; InnerCellInfo.WeldingStartTime = data.WeldingStartTime; InnerCellInfo.WeldingEndTime = data.WeldingEndTime; InnerCellInfo.WeldingSpanTimeMilliseconds = data.WeldingSpanTimeMilliseconds; InnerCellInfo.TodayProduct = data.TodayProduct; InnerCellInfo.TotalProduct = data.TotalProduct; InnerCellInfo.RecipeNo = data.RecipeNo; InnerCellInfo.WeldStartTime = data.WeldStartTime; InnerCellInfo.WeldTime = data.WeldTime; InnerCellInfo.WorkCellId = data.WorkCellId; InnerCellInfo.WorkLotId = data.WorkLotId; InnerCellInfo.LBAD_Judge = data.LBAD_Judge; InnerCellInfo.LDD_Judge = data.LDD_Judge; InnerCellInfo.LaserPowerCore = data.LaserPowerCore; InnerCellInfo.LaserPowerRing = data.LaserPowerRing; InnerCellInfo.MarkSpeed = data.MarkSpeed; InnerCellInfo.FocalLength = data.FocalLength; InnerCellInfo.WeldingJigNo = data.WeldingJigNo; InnerCellInfo.LaserPowerByLBAD = data.LaserPowerByLBAD; InnerCellInfo.CheckCanExist = data.CheckCanExist; InnerCellInfo.CheckScannerListEnd = data.CheckScannerListEnd; } } }