using SA_LTT.Base;
|
using System;
|
using System.Collections.Generic;
|
using System.IO;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
|
namespace SA_LTT.Info.WaferInfo
|
{
|
public class WaferInfoManager : XmlManager<WaferInfo>
|
{
|
public enum WaferNumbers
|
{
|
A1,
|
A2,
|
A3,
|
A4,
|
A5,
|
A6,
|
A7,
|
A8,
|
A9,
|
A10,
|
A11,
|
A12,
|
A13,
|
A14,
|
A15,
|
A16,
|
A17,
|
A18,
|
A19,
|
A20,
|
A21,
|
A22,
|
A23,
|
A24,
|
A25,
|
|
B1,
|
B2,
|
B3,
|
B4,
|
B5,
|
B6,
|
B7,
|
B8,
|
B9,
|
B10,
|
B11,
|
B12,
|
B13,
|
B14,
|
B15,
|
B16,
|
B17,
|
B18,
|
B19,
|
B20,
|
B21,
|
B22,
|
B23,
|
B24,
|
B25,
|
|
Robot,
|
PreAligner,
|
Chamber,
|
}
|
|
Equipment _equipment;
|
readonly string _filePath = @"Wafer\";
|
|
private Dictionary<WaferNumbers, WaferInfo> _waferInfos;
|
|
public WaferInfoManager(Equipment equipement)
|
{
|
equipement = _equipment;
|
|
_waferInfos = new Dictionary<WaferNumbers, WaferInfo>();
|
|
foreach(WaferNumbers info in Enum.GetValues(typeof(WaferNumbers)))
|
{
|
_waferInfos.Add(info, new WaferInfo());
|
}
|
|
RefreshWaferInfo();
|
}
|
|
public void RefreshWaferInfo()
|
{
|
DirectoryInfo directoryInfo = new DirectoryInfo(Equipment.infoFilePath + _filePath);
|
|
if (directoryInfo.Exists == false)
|
{
|
directoryInfo.Create();
|
}
|
|
WaferInfo waferinfo = new WaferInfo();
|
|
//LoadPort1, 2
|
for (int i = 0; i < 25; i++)
|
{
|
if (TryReadFile(directoryInfo.FullName + $"{WaferNumbers.A1 + i}.xml", out waferinfo))
|
{
|
_waferInfos[WaferNumbers.A1 + i] = waferinfo;
|
}
|
else
|
{
|
waferinfo = new WaferInfo();
|
SaveFile(directoryInfo.FullName + $"{WaferNumbers.A1 + i}.xml", waferinfo);
|
}
|
|
if (TryReadFile(directoryInfo.FullName + $"{WaferNumbers.B1 + i}.xml", out waferinfo))
|
{
|
_waferInfos[WaferNumbers.B1 + i] = waferinfo;
|
}
|
else
|
{
|
waferinfo = new WaferInfo();
|
SaveFile(directoryInfo.FullName + $"{WaferNumbers.B1 + i}.xml", waferinfo);
|
}
|
}
|
|
//Robot
|
if (TryReadFile(directoryInfo.FullName + $"Robot.xml", out waferinfo))
|
{
|
_waferInfos[WaferNumbers.Robot] = waferinfo;
|
}
|
else
|
{
|
waferinfo = new WaferInfo();
|
SaveFile(directoryInfo.FullName + $"Robot.xml", waferinfo);
|
}
|
|
//Pre align
|
if (TryReadFile(directoryInfo.FullName + $"PreAligner.xml", out waferinfo))
|
{
|
_waferInfos[WaferNumbers.PreAligner] = waferinfo;
|
}
|
else
|
{
|
waferinfo = new WaferInfo();
|
SaveFile(directoryInfo.FullName + $"PreAligner.xml", waferinfo);
|
}
|
|
//Chamber
|
if (TryReadFile(directoryInfo.FullName + $"Chamber.xml", out waferinfo))
|
{
|
_waferInfos[WaferNumbers.Chamber] = waferinfo;
|
}
|
else
|
{
|
waferinfo = new WaferInfo();
|
SaveFile(directoryInfo.FullName + $"Chamber.xml", waferinfo);
|
}
|
}
|
|
public void MoveWaferInfo(WaferNumbers source, WaferNumbers destination)
|
{
|
_waferInfos[destination] = _waferInfos[source].Clone();
|
|
_waferInfos[source] = new WaferInfo();
|
|
SetWaferInfo(source, _waferInfos[source]);
|
SetWaferInfo(destination, _waferInfos[destination]);
|
}
|
|
public WaferInfo GetWaferInfo(WaferNumbers waferNumber)
|
{
|
return _waferInfos[waferNumber].Clone();
|
}
|
|
public void SetWaferInfo(WaferNumbers waferNumber, WaferInfo waferInfo)
|
{
|
lock(this)
|
{
|
_waferInfos[waferNumber] = waferInfo;
|
|
SaveFile(Equipment.infoFilePath + _filePath + $"{waferNumber.ToString()}.xml", waferInfo);
|
}
|
}
|
|
public static bool TryParse(int stageNum, int slotNum, out WaferNumbers waferNumber)
|
{
|
waferNumber = WaferNumbers.A1;
|
WaferNumbers waferNum = WaferNumbers.A1;
|
if (stageNum == 1)
|
{
|
//port 1
|
if(1 <= slotNum && slotNum <= 25)
|
{
|
waferNumber = waferNum + (slotNum - 1);
|
}
|
else
|
{
|
return false;
|
}
|
}
|
else if (stageNum == 2)
|
{
|
//port 2
|
waferNum = WaferNumbers.B1;
|
|
if (1 <= slotNum && slotNum <= 25)
|
{
|
waferNumber = waferNum + (slotNum - 1);
|
}
|
else
|
{
|
return false;
|
}
|
}
|
else if (stageNum == 3 || stageNum == 4)
|
{
|
//Aligner
|
if (slotNum == 1)
|
{
|
waferNumber = WaferNumbers.PreAligner;
|
}
|
else
|
{
|
return false;
|
}
|
}
|
else if (stageNum == 5)
|
{
|
//Chamber
|
if (slotNum == 1)
|
{
|
waferNumber = WaferNumbers.Chamber;
|
}
|
else
|
{
|
return false;
|
}
|
}
|
|
return true;
|
}
|
}
|
}
|