修改Aligner响应方式,处理响应内容
This commit is contained in:
parent
c2fa939ebf
commit
f8e84c7e8c
|
@ -3,6 +3,7 @@ using System.Collections.Generic;
|
|||
using System.Data.Common;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using Aitex.Core.RT.DataCenter;
|
||||
using Aitex.Core.RT.Device;
|
||||
using Aitex.Core.RT.Event;
|
||||
|
@ -87,6 +88,12 @@ namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Aligners.HiWinAligner
|
|||
|
||||
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 AlarmStatus { get; set; }
|
||||
|
@ -114,7 +121,9 @@ namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Aligners.HiWinAligner
|
|||
private void InitData()
|
||||
{
|
||||
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()
|
||||
|
@ -577,28 +586,48 @@ namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Aligners.HiWinAligner
|
|||
internal bool ParseData(string name, byte[] buffer, out bool bResult)
|
||||
{
|
||||
bResult = true;
|
||||
var sAnswer = Encoding.ASCII.GetString(buffer);
|
||||
if (sAnswer.Contains("END"))
|
||||
var sAnswer = Encoding.ASCII.GetString(buffer).TrimEnd('\r', '\n');
|
||||
Response = sAnswer;
|
||||
string[] units = Regex.Split(sAnswer,"\r\n");
|
||||
|
||||
foreach (string unit in units)
|
||||
{
|
||||
_iCurrentOper = CommandEnum.NULL;
|
||||
return true;
|
||||
}
|
||||
|
||||
if (sAnswer.Contains("ERR"))
|
||||
{
|
||||
lock (_locker)
|
||||
if (unit.Contains("END"))
|
||||
{
|
||||
_lstHandler.Clear();
|
||||
_iCurrentOper = CommandEnum.NULL;
|
||||
return true;
|
||||
}
|
||||
else if (unit.Contains("ERR") && _lastHandlerName != "PER")
|
||||
{
|
||||
lock (_locker)
|
||||
{
|
||||
_lstHandler.Clear();
|
||||
}
|
||||
|
||||
_iCurrentOper = CommandEnum.NULL;
|
||||
bResult = false;
|
||||
_iCurrentOper = CommandEnum.NULL;
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -606,6 +635,7 @@ namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Aligners.HiWinAligner
|
|||
{
|
||||
bResult = true;
|
||||
var sAnswer = Encoding.ASCII.GetString(buffer.ToArray());
|
||||
Response = sAnswer;
|
||||
if (sAnswer.Contains("END"))
|
||||
{
|
||||
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 object _lockerActiveHandler = new object();
|
||||
private string _result = "";
|
||||
public string Result
|
||||
{
|
||||
get { return _result; }
|
||||
}
|
||||
|
||||
public HwAlignerGuideConnection(string portName)
|
||||
: 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)
|
||||
{
|
||||
_lstCacheBuffer.Clear();
|
||||
_result = "";
|
||||
return base.SendMessage(message);
|
||||
}
|
||||
protected override MessageBase ParseResponse(byte[] rawMessage)
|
||||
|
@ -29,8 +24,6 @@ namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Aligners.HiWinAligner
|
|||
_lstCacheBuffer.AddRange(rawMessage);
|
||||
var temps = _lstCacheBuffer.ToArray();
|
||||
|
||||
_result += System.Text.Encoding.ASCII.GetString(temps);
|
||||
|
||||
HwAlignerGuideMessage msg = new HwAlignerGuideMessage();
|
||||
msg.IsResponse = false;
|
||||
msg.IsAck = false;
|
||||
|
|
|
@ -50,12 +50,16 @@ namespace MECF.Framework.Simulator.Core.Aligners.HPA48
|
|||
CVN(message);
|
||||
else if (message.StartsWith("CVF"))
|
||||
CVF(message);
|
||||
else if (message.StartsWith("CVD"))
|
||||
CVD(message);
|
||||
else if (message.StartsWith("MTM"))
|
||||
MTM(message);
|
||||
else if (message.StartsWith("DOC"))
|
||||
DOC(message);
|
||||
else if (message.StartsWith("STP"))
|
||||
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>
|
||||
|
@ -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>
|
||||
|
|
Loading…
Reference in New Issue