97 lines
2.9 KiB
C#
97 lines
2.9 KiB
C#
|
using MECF.Framework.Common.Communications;
|
|||
|
using System;
|
|||
|
using System.Collections.Generic;
|
|||
|
using System.Linq;
|
|||
|
using System.Text;
|
|||
|
using System.Threading;
|
|||
|
using System.Threading.Tasks;
|
|||
|
|
|||
|
namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Temps.AE
|
|||
|
{
|
|||
|
public class AETempHandler : HandlerBase
|
|||
|
{
|
|||
|
public AETemp Device { get; }
|
|||
|
|
|||
|
public string _command;
|
|||
|
protected string _parameter;
|
|||
|
|
|||
|
|
|||
|
protected AETempHandler(AETemp device, string command, string parameter)
|
|||
|
: base(BuildMessage(command, parameter))
|
|||
|
{
|
|||
|
Device = device;
|
|||
|
_command = command;
|
|||
|
_parameter = parameter;
|
|||
|
Name = command;
|
|||
|
}
|
|||
|
private static string _CH = "\t";
|
|||
|
private static string _endLine = "\r";
|
|||
|
private static string BuildMessage(string command, string parameter)
|
|||
|
{
|
|||
|
if (string.IsNullOrEmpty(parameter))
|
|||
|
return command + _endLine;
|
|||
|
else
|
|||
|
return command +_CH + parameter + _endLine;
|
|||
|
}
|
|||
|
|
|||
|
public override bool HandleMessage(MessageBase msg, out bool handled)
|
|||
|
{
|
|||
|
AETempAsciiMessage response = msg as AETempAsciiMessage;
|
|||
|
ResponseMessage = msg;
|
|||
|
|
|||
|
if (response.IsAck)
|
|||
|
{
|
|||
|
SetState(EnumHandlerState.Acked);
|
|||
|
|
|||
|
if (msg.IsError)
|
|||
|
{
|
|||
|
//Device.NoteError($"Command '{_command}' Error: {response.Data}:{ErrorString(response.ErrorText)}");
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
SetState(EnumHandlerState.Completed);
|
|||
|
handled = true;
|
|||
|
//Device.NoteError(null);
|
|||
|
return true;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
handled = false;
|
|||
|
return false;
|
|||
|
}
|
|||
|
|
|||
|
private static Dictionary<string, string> ErrorDict = new Dictionary<string, string>()
|
|||
|
{
|
|||
|
{"1","Invalid message" },
|
|||
|
{"2","Number not found" },
|
|||
|
{"3","Number Invalid" },
|
|||
|
{"4","Parameter’s value not received" },
|
|||
|
{"5","Command not possible" }
|
|||
|
};
|
|||
|
private static string ErrorString(string errorCode)
|
|||
|
{
|
|||
|
if (ErrorDict.ContainsKey(errorCode))
|
|||
|
return ErrorDict[errorCode];
|
|||
|
else
|
|||
|
return "NotDefined error";
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
public class AETempReadCommandHandler : AETempHandler
|
|||
|
{
|
|||
|
public AETempReadCommandHandler(AETemp device, string command, string parameter)
|
|||
|
: base(device, command, parameter)
|
|||
|
{
|
|||
|
}
|
|||
|
public override bool HandleMessage(MessageBase msg, out bool handled)
|
|||
|
{
|
|||
|
if (base.HandleMessage(msg, out handled))
|
|||
|
{
|
|||
|
var result = msg as AETempAsciiMessage;
|
|||
|
Device.ParseCommandInfo(_command, result.Data);
|
|||
|
}
|
|||
|
return true;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|