修改Aligner响应方式,处理响应内容
This commit is contained in:
parent
c2fa939ebf
commit
f8e84c7e8c
|
@ -3,6 +3,7 @@ using System.Collections.Generic;
|
||||||
using System.Data.Common;
|
using System.Data.Common;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
using Aitex.Core.RT.DataCenter;
|
using Aitex.Core.RT.DataCenter;
|
||||||
using Aitex.Core.RT.Device;
|
using Aitex.Core.RT.Device;
|
||||||
using Aitex.Core.RT.Event;
|
using Aitex.Core.RT.Event;
|
||||||
|
@ -87,6 +88,12 @@ namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Aligners.HiWinAligner
|
||||||
|
|
||||||
public string Address { get; set; }
|
public string Address { get; set; }
|
||||||
|
|
||||||
|
public string Vacuum { get; set; } ="-Kpa" ;
|
||||||
|
|
||||||
|
public string PError { get; set; } = "-";
|
||||||
|
|
||||||
|
public string Response { get; set; } = "-";
|
||||||
|
|
||||||
public bool IsConnected => _connection is { IsConnected: true };
|
public bool IsConnected => _connection is { IsConnected: true };
|
||||||
|
|
||||||
public bool AlarmStatus { get; set; }
|
public bool AlarmStatus { get; set; }
|
||||||
|
@ -114,7 +121,9 @@ namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Aligners.HiWinAligner
|
||||||
private void InitData()
|
private void InitData()
|
||||||
{
|
{
|
||||||
DATA.Subscribe($"{Module}.{Name}.HaveWafer", () => HaveWafer);
|
DATA.Subscribe($"{Module}.{Name}.HaveWafer", () => HaveWafer);
|
||||||
DATA.Subscribe($"{Module}.{Name}.Result", () => _connection.Result,SubscriptionAttribute.FLAG.IgnoreSaveDB);
|
DATA.Subscribe($"{Module}.{Name}.Response", () => Response, SubscriptionAttribute.FLAG.IgnoreSaveDB);
|
||||||
|
DATA.Subscribe($"{Module}.{Name}.Vacuum", () => Vacuum, SubscriptionAttribute.FLAG.IgnoreSaveDB);
|
||||||
|
DATA.Subscribe($"{Module}.{Name}.PError", () => PError, SubscriptionAttribute.FLAG.IgnoreSaveDB);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void InitOp()
|
private void InitOp()
|
||||||
|
@ -577,28 +586,48 @@ namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Aligners.HiWinAligner
|
||||||
internal bool ParseData(string name, byte[] buffer, out bool bResult)
|
internal bool ParseData(string name, byte[] buffer, out bool bResult)
|
||||||
{
|
{
|
||||||
bResult = true;
|
bResult = true;
|
||||||
var sAnswer = Encoding.ASCII.GetString(buffer);
|
var sAnswer = Encoding.ASCII.GetString(buffer).TrimEnd('\r', '\n');
|
||||||
if (sAnswer.Contains("END"))
|
Response = sAnswer;
|
||||||
|
string[] units = Regex.Split(sAnswer,"\r\n");
|
||||||
|
|
||||||
|
foreach (string unit in units)
|
||||||
{
|
{
|
||||||
_iCurrentOper = CommandEnum.NULL;
|
if (unit.Contains("END"))
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (sAnswer.Contains("ERR"))
|
|
||||||
{
|
|
||||||
lock (_locker)
|
|
||||||
{
|
{
|
||||||
_lstHandler.Clear();
|
_iCurrentOper = CommandEnum.NULL;
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
else if (unit.Contains("ERR") && _lastHandlerName != "PER")
|
||||||
|
{
|
||||||
|
lock (_locker)
|
||||||
|
{
|
||||||
|
_lstHandler.Clear();
|
||||||
|
}
|
||||||
|
|
||||||
_iCurrentOper = CommandEnum.NULL;
|
_iCurrentOper = CommandEnum.NULL;
|
||||||
bResult = false;
|
bResult = false;
|
||||||
|
|
||||||
EV.PostAlarmLog(Module, $"Aligner, Execute {_lastHandlerName} error, {sAnswer.TrimEnd('\r', '\n')}");
|
EV.PostAlarmLog(Module, $"Aligner, Execute {_lastHandlerName} error, {unit.TrimEnd('\r', '\n')}");
|
||||||
|
|
||||||
return true; //Handled
|
return true; //Handled
|
||||||
|
}
|
||||||
|
else if (_lastHandlerName == "CVD")
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
double x = Convert.ToInt32(unit);
|
||||||
|
Vacuum = unit + "Kpa";
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
Vacuum = "Convert(" + unit + ") Failed.";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (_lastHandlerName == "PER")
|
||||||
|
{
|
||||||
|
PError = unit;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -606,6 +635,7 @@ namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Aligners.HiWinAligner
|
||||||
{
|
{
|
||||||
bResult = true;
|
bResult = true;
|
||||||
var sAnswer = Encoding.ASCII.GetString(buffer.ToArray());
|
var sAnswer = Encoding.ASCII.GetString(buffer.ToArray());
|
||||||
|
Response = sAnswer;
|
||||||
if (sAnswer.Contains("END"))
|
if (sAnswer.Contains("END"))
|
||||||
{
|
{
|
||||||
HaveWafer = sAnswer.Contains("1\r\nEND");
|
HaveWafer = sAnswer.Contains("1\r\nEND");
|
||||||
|
|
|
@ -8,11 +8,7 @@ namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Aligners.HiWinAligner
|
||||||
{
|
{
|
||||||
private readonly List<byte> _lstCacheBuffer = new();
|
private readonly List<byte> _lstCacheBuffer = new();
|
||||||
private object _lockerActiveHandler = new object();
|
private object _lockerActiveHandler = new object();
|
||||||
private string _result = "";
|
|
||||||
public string Result
|
|
||||||
{
|
|
||||||
get { return _result; }
|
|
||||||
}
|
|
||||||
public HwAlignerGuideConnection(string portName)
|
public HwAlignerGuideConnection(string portName)
|
||||||
: base(portName, 115200, 8, System.IO.Ports.Parity.None, System.IO.Ports.StopBits.One, "\r", false)
|
: base(portName, 115200, 8, System.IO.Ports.Parity.None, System.IO.Ports.StopBits.One, "\r", false)
|
||||||
{
|
{
|
||||||
|
@ -20,7 +16,6 @@ namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Aligners.HiWinAligner
|
||||||
public override bool SendMessage(byte[] message)
|
public override bool SendMessage(byte[] message)
|
||||||
{
|
{
|
||||||
_lstCacheBuffer.Clear();
|
_lstCacheBuffer.Clear();
|
||||||
_result = "";
|
|
||||||
return base.SendMessage(message);
|
return base.SendMessage(message);
|
||||||
}
|
}
|
||||||
protected override MessageBase ParseResponse(byte[] rawMessage)
|
protected override MessageBase ParseResponse(byte[] rawMessage)
|
||||||
|
@ -29,8 +24,6 @@ namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Aligners.HiWinAligner
|
||||||
_lstCacheBuffer.AddRange(rawMessage);
|
_lstCacheBuffer.AddRange(rawMessage);
|
||||||
var temps = _lstCacheBuffer.ToArray();
|
var temps = _lstCacheBuffer.ToArray();
|
||||||
|
|
||||||
_result += System.Text.Encoding.ASCII.GetString(temps);
|
|
||||||
|
|
||||||
HwAlignerGuideMessage msg = new HwAlignerGuideMessage();
|
HwAlignerGuideMessage msg = new HwAlignerGuideMessage();
|
||||||
msg.IsResponse = false;
|
msg.IsResponse = false;
|
||||||
msg.IsAck = false;
|
msg.IsAck = false;
|
||||||
|
|
|
@ -50,12 +50,16 @@ namespace MECF.Framework.Simulator.Core.Aligners.HPA48
|
||||||
CVN(message);
|
CVN(message);
|
||||||
else if (message.StartsWith("CVF"))
|
else if (message.StartsWith("CVF"))
|
||||||
CVF(message);
|
CVF(message);
|
||||||
|
else if (message.StartsWith("CVD"))
|
||||||
|
CVD(message);
|
||||||
else if (message.StartsWith("MTM"))
|
else if (message.StartsWith("MTM"))
|
||||||
MTM(message);
|
MTM(message);
|
||||||
else if (message.StartsWith("DOC"))
|
else if (message.StartsWith("DOC"))
|
||||||
DOC(message);
|
DOC(message);
|
||||||
else if (message.StartsWith("STP"))
|
else if (message.StartsWith("STP"))
|
||||||
STP(message);
|
STP(message);
|
||||||
|
else if (message.StartsWith("PER"))
|
||||||
|
PER(message);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -136,6 +140,19 @@ namespace MECF.Framework.Simulator.Core.Aligners.HPA48
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 读取真空值
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="cmd"></param>
|
||||||
|
private void CVD(string cmd)
|
||||||
|
{
|
||||||
|
SendResponse(cmd, s =>
|
||||||
|
{
|
||||||
|
Thread.Sleep(500);
|
||||||
|
OnWriteMessage("-65");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 打开真空。
|
/// 打开真空。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -175,6 +192,19 @@ namespace MECF.Framework.Simulator.Core.Aligners.HPA48
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 读取上一次报警
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="cmd"></param>
|
||||||
|
private void PER(string cmd)
|
||||||
|
{
|
||||||
|
SendResponse(cmd, s =>
|
||||||
|
{
|
||||||
|
Thread.Sleep(500);
|
||||||
|
OnWriteMessage("ERR 444");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 移动至测量中心点。
|
/// 移动至测量中心点。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
Loading…
Reference in New Issue