102 lines
3.7 KiB
C#
102 lines
3.7 KiB
C#
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<ePalletState> 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} ## ";
|
|
}
|
|
}
|
|
}
|