using Aurora; using Aurora.View; using WeldingCommon.Device; // 수정 using System; using System.Collections.Generic; using System.Windows; namespace WeldingCommon.Process { // UI에서도 쓸 곳이 많을 것 같긴한데.. 일단 추가 public enum eStage { A, B, } public enum ePalletState { NotEntered, // 실물 CELL 있음 LoadingComp, Welding, // 저장이 필요한 상태는 아니고, 그냥 UI용으로 사용하면 될듯함 WeldingComp, // 실물 CELL 없음 UnloadingComp, } public class PalletInfo : NotifyPropertyChangedBase ,ICloneable { public WeldingDataForPrismaticGun weldingData { get => _weldingData; set => SetProperty(ref _weldingData, value); } private WeldingDataForPrismaticGun _weldingData = new WeldingDataForPrismaticGun(); public eStage WeldingStage { get => _WeldingStage; set => SetProperty(ref _WeldingStage, value); } private eStage _WeldingStage; public ePalletState palletState { get => _palletState; set => SetProperty(ref _palletState, value); } private ePalletState _palletState; public event EventHandler PalletStateChanged; #region PLC Cell Data #endregion //private PLCControllerPrismaticGun _plc; public PalletInfo() { //_plc = Application.Current.AuroraEnv().DeviceManager[DeviceIds.PLCDevice] as PLCControllerPrismaticGun; WeldingStage = eStage.A; Clear(); } public void SetState(ePalletState palletState) { if (this.palletState == palletState) return; this.palletState = palletState; PalletStateChanged?.Invoke(this, palletState); } public bool PalletInfoLoadToPLC() { //weldingData.CellId = _plc.CellId(WeldingStage); //weldingData.LotId = _plc.LotId(); //weldingData.IsCellExist = _plc.ExistCell(WeldingStage); //weldingData.IsRework = _plc.ReworkCell(WeldingStage); //weldingData.IsAlreadyWelding = _plc.AlreadyWeldingCell(WeldingStage); //weldingData.CellNo = _plc.CellNo(WeldingStage); //weldingData.NgJudge = _plc.CellJudgeNG(WeldingStage); weldingData.LaserWorkComplete = weldingData.IsCellExist; //_plc.WriteLaserWorkComplete(WeldingStage, weldingData.LaserWorkComplete); return true; } public bool PalletInfoSendToPLC() { //_plc.WriteCellJudgeNG(WeldingStage, weldingData.NgJudge); //_plc.WriteCellNo(WeldingStage, weldingData.CellNo); weldingData.LaserWorkComplete = false; //_plc.WriteLaserWorkComplete(WeldingStage, weldingData.LaserWorkComplete); //_plc.UploadReportDatas(weldingData.UploadProcessDatas); return true; } public void Clear() { palletState = ePalletState.NotEntered; weldingData.Clear(); } public object Clone() { var palletInfo = new PalletInfo(); palletInfo.palletState = palletState; palletInfo.weldingData = weldingData.Clone() as WeldingDataForPrismaticGun; palletInfo.WeldingStage = WeldingStage; return palletInfo; } public override string ToString() { return $"Pallet State({Enum.GetName(typeof(ePalletState), palletState)}) >> Lot Id({weldingData.LotId}) Cell Id({weldingData.CellId}) >> Cell Exist({weldingData.IsCellExist}) >> NG({weldingData.NgJudge > 0}) : {weldingData.NgReason} ## "; } } }