108 lines
3.7 KiB
C#
108 lines
3.7 KiB
C#
using Aitex.Core.RT.Event;
|
||
using Aitex.Core.RT.Log;
|
||
using System.Text.RegularExpressions;
|
||
|
||
namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Robot.MAG7
|
||
{
|
||
public class Mag7Robot : Robot
|
||
{
|
||
public override bool Error
|
||
{
|
||
get
|
||
{
|
||
return _commErr || _exceuteErr;
|
||
}
|
||
}
|
||
|
||
public Mag7Robot(string module, string address)
|
||
: base(module, module, module, module, address, RobotType.MAG7)
|
||
{
|
||
}
|
||
|
||
public override void OnDataChanged(string package)
|
||
{
|
||
try
|
||
{
|
||
package = package.ToUpper();
|
||
string[] msgs = Regex.Split(package, delimiter);
|
||
|
||
foreach (string msg in msgs)
|
||
{
|
||
if (msg.Length > 0)
|
||
{
|
||
bool completed = false;
|
||
string resp = msg;
|
||
|
||
lock (_locker)
|
||
{
|
||
if (_foregroundHandler != null && _foregroundHandler.OnMessage(ref _socket, resp, out completed))
|
||
{
|
||
if (completed)
|
||
{
|
||
_foregroundHandler = null;
|
||
}
|
||
}
|
||
else if (_backgroundHandler != null && _backgroundHandler.OnMessage(ref _socket, resp, out completed))
|
||
{
|
||
if (completed)
|
||
{
|
||
string reason = string.Empty;
|
||
QueryState(out reason);
|
||
_backgroundHandler = null;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if (_eventHandler != null)
|
||
{
|
||
if (_eventHandler.OnMessage(ref _socket, resp, out completed))
|
||
{
|
||
if (completed)
|
||
{
|
||
EV.PostMessage("Robot", EventEnum.DefaultWarning, string.Format(" has error. {0:X}", ErrorCode));
|
||
_exceuteErr = true;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
catch (ExcuteFailedException e)
|
||
{
|
||
EV.PostMessage("Robot", EventEnum.DefaultWarning, string.Format("Robot execute failed, {0}", e.Message));
|
||
_exceuteErr = true;
|
||
|
||
if (_foregroundHandler != null)
|
||
{
|
||
_foregroundHandler = null;
|
||
}
|
||
else if (_backgroundHandler != null)
|
||
{
|
||
_backgroundHandler = null;
|
||
}
|
||
}
|
||
catch (InvalidPackageException e)
|
||
{
|
||
EV.PostMessage("Robot", EventEnum.DefaultWarning, string.Format("receive invalid package. {0}", e.Message));
|
||
}
|
||
catch (System.Exception ex)
|
||
{
|
||
_commErr = true;
|
||
LOG.Write("Robot failed:" + ex.ToString());
|
||
}
|
||
}
|
||
|
||
public override void Reset()
|
||
{
|
||
_exceuteErr = false;
|
||
if (_commErr)
|
||
{
|
||
Connect();
|
||
}
|
||
Swap = false;
|
||
}
|
||
}
|
||
}
|