|
@@ -31,6 +31,7 @@ namespace JetMainframe.Devices
|
|
|
RPI,
|
|
|
RPO,
|
|
|
CheckCassette,
|
|
|
+ CheckRPosition,
|
|
|
Load,
|
|
|
UnLoad,
|
|
|
Map,
|
|
@@ -67,6 +68,7 @@ namespace JetMainframe.Devices
|
|
|
{VceCommand.ReadMap, "MI" },
|
|
|
{VceCommand.CheckStatus, "OS" },
|
|
|
{VceCommand.CheckCassette, "W2" },
|
|
|
+ {VceCommand.CheckRPosition, "POSM,ABS,R"},
|
|
|
//Set
|
|
|
{VceCommand.ClearError, "ER" },
|
|
|
{VceCommand.EndCassetteInterlock,"INTLCK,CASS,PRESENT,DIS" },
|
|
@@ -104,6 +106,8 @@ namespace JetMainframe.Devices
|
|
|
public bool LeftCassetteArrive => _LeftCassetteArrive;
|
|
|
public bool RightCassetteArrive => _RightCassetteArrive;
|
|
|
|
|
|
+ public int RPosition => _RPosition;
|
|
|
+
|
|
|
#region 私有变量
|
|
|
private AsyncSerialPort _serialport;
|
|
|
private string _portname;
|
|
@@ -115,6 +119,7 @@ namespace JetMainframe.Devices
|
|
|
private Regex _match_ReadMsg = new Regex(@"\d\d,X,MI,.*");
|
|
|
private Regex _match_StatusMsg = new Regex(@"\d\d,X,OS,.*");
|
|
|
private Regex _match_CassetteMsg = new Regex(@"\d\d,X,W2.*");
|
|
|
+ private Regex _match_ReadRMsg = new Regex(@"\d\d,X,POSM.*");
|
|
|
private Regex _matchErrorCode = new Regex(@"(?<=_BKGERR )(.*)");
|
|
|
private ModuleName _moduleName;
|
|
|
private RState _status;
|
|
@@ -123,6 +128,8 @@ namespace JetMainframe.Devices
|
|
|
private bool _HasReceiveMsg;
|
|
|
private bool _isPlus;
|
|
|
|
|
|
+ private int _RPosition = 0;
|
|
|
+
|
|
|
private bool _LeftDoorIsClose = true;
|
|
|
private bool _RightDoorIsClose = true;
|
|
|
private int _LeftCount = 0;
|
|
@@ -457,7 +464,7 @@ namespace JetMainframe.Devices
|
|
|
//处理wafer 信息为map数据
|
|
|
case VceCommand.ReadMap:
|
|
|
//EV.PostAlarmLog(_moduleName.ToString(), $"Left Cassette Slot {slotnum + 1}:Crossed wafer.");
|
|
|
- EV.PostInfoLog(_moduleName.ToString(),$"MappingData: {msg}");
|
|
|
+ EV.PostInfoLog(_moduleName.ToString(), $"MappingData: {msg}");
|
|
|
ReadMapData(msg);
|
|
|
break;
|
|
|
}
|
|
@@ -484,6 +491,14 @@ namespace JetMainframe.Devices
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
+ else if (_match_ReadRMsg.IsMatch(msg))
|
|
|
+ {
|
|
|
+ _HasReceiveMsg = true;
|
|
|
+ if (_currentVceMessage.Command == VceCommand.CheckRPosition)
|
|
|
+ {
|
|
|
+ _RPosition = Convert.ToInt32(msg.Split(',')[5]);
|
|
|
+ }
|
|
|
+ }
|
|
|
//_RDY查询结束
|
|
|
else
|
|
|
{
|
|
@@ -919,6 +934,16 @@ namespace JetMainframe.Devices
|
|
|
return _serialport.Write(_currentMsg);
|
|
|
}
|
|
|
|
|
|
+ public bool ReadR()
|
|
|
+ {
|
|
|
+ if (!CheckVceStatus())
|
|
|
+ return false;
|
|
|
+ _currentVceMessage = new VceMessage { Head = VceMessageHead.Read, Command = VceCommand.CheckRPosition };
|
|
|
+ _currentMsg = _currentVceMessage.toString() + _newline;
|
|
|
+ _status = RState.Running;
|
|
|
+ return _serialport.Write(_currentMsg);
|
|
|
+ }
|
|
|
+
|
|
|
protected bool CheckVceStatus()
|
|
|
{
|
|
|
|