修改Aligner响应方式,处理响应内容

This commit is contained in:
SIC1016\caipeilun 2024-01-23 13:28:48 +08:00
parent c2fa939ebf
commit f8e84c7e8c
3 changed files with 77 additions and 24 deletions

View File

@ -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");

View File

@ -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;

View File

@ -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>