Commit ad32f0da LN

1

1 个父辈 0fbc88eb
......@@ -14,6 +14,11 @@ namespace ABBRobotTest
internal class ABBRobotManager
{
internal static string DI_Start = "di_start";
internal static string DI_Stop = "di_stop";
internal static string DO_ES = "do_ES";
internal static string DO_IsRun= "do_IsRun";
private static NetworkScanner scanner = null;
// private Controller controller = null;
private static Task[] tasks = null;
......@@ -24,6 +29,8 @@ namespace ABBRobotTest
internal delegate void ControllerAddDelegate(ControllerInfo controller);
internal static event ControllerAddDelegate ControllerAddEvent;
internal static void LoadController()
{
controllerMap = new Dictionary<string, Controller>();
......@@ -45,12 +52,31 @@ namespace ABBRobotTest
}
private static void AddControllerInfo(ControllerInfo controllerInfo)
{
Controller con = ControllerFactory.CreateFrom(controllerInfo);
con.Logon(UserInfo.DefaultUser);
ControllerState state = con.State;
controllerMap.Add(con.IPAddress.ToString(), con);
// controller = con;
controllerInfoMap.Add(controllerInfo.IPAddress.ToString(), controllerInfo);
try
{
Controller con = ControllerFactory.CreateFrom(controllerInfo);
con.Logon(UserInfo.DefaultUser);
ControllerState state = con.State;
string ip = con.IPAddress.ToString();
RemoveController(ip);
controllerMap.Add(ip, con);
// controller = con;
controllerInfoMap.Add(ip, controllerInfo);
}catch(Exception ex)
{
LogUtil.error("添加机器人【" + controllerInfo.IPAddress.ToString() + "】失败:" + ex.ToString());
}
}
private static void RemoveController(string ip)
{
if (controllerInfoMap.ContainsKey(ip))
{
controllerInfoMap.Remove(ip);
}
if (controllerMap.ContainsKey(ip))
{
controllerMap.Remove(ip);
}
}
private static void HandleLostEvent(object sender, NetworkWatcherEventArgs e)
{
......@@ -58,14 +84,14 @@ namespace ABBRobotTest
private static void HandleFoundEvent(object sender, NetworkWatcherEventArgs e)
{
Invoke(new
EventHandler<NetworkWatcherEventArgs>(AddControllerToListView),
new Object[] { null, e });
//Invoke(new
//EventHandler<NetworkWatcherEventArgs>(AddControllerToListView),
//new Object[] { null, e });
AddControllerToListView(null, e);
}
private static void Invoke(EventHandler<NetworkWatcherEventArgs> eventHandler, object[] v)
{
throw new NotImplementedException();
{
}
private static void AddControllerToListView(object sender, NetworkWatcherEventArgs e)
......@@ -217,7 +243,33 @@ namespace ABBRobotTest
LogUtil.error("ABBRobot[" + ip + "] ResetRobotSignal [" + name + "] Error:" + ex.ToString());
}
}
internal static int GetSingalState(string ip, string name = "do_ES")
{
try
{
Controller controller = GetControllerByIP(ip);
if (controller != null)
{
//string name = comboBox1.Text;
Signal singalValue = controller.IOSystem.GetSignal(name);
if (singalValue == null)
{
LogUtil.error("ABBRobot[" + ip + "] GetSingal [" + name + "]= null");
}
else
{
DigitalSignal digitalSig = (DigitalSignal)singalValue;
return (int)digitalSig.Value;
}
}
}
catch (Exception ex)
{
LogUtil.error("ABBRobot[" + ip + "] GetSingalState [" + name + "] Error:" + ex.ToString());
}
return 0;
}
internal static string GetRobotState(string ip)
{
try
......
......@@ -84,7 +84,7 @@ namespace ABBRobotTest
AddHealder("SystemName", 100);
AddHealder("Version", 100);
AddHealder("ControllerName", 180);
AddHealder("Statue", 100);
AddHealder("Statue", 180);
}
......@@ -115,6 +115,23 @@ namespace ABBRobotTest
{
groupMove.Enabled = false;
}
int esValue = ABBRobotManager.GetSingalState(SelConIp);
if (esValue.Equals(1))
{
lblState.Text = "机器人["+SelConIp+"]急停中";
lblState.ForeColor = Color.Red;
}
else
{
lblState.Text = "";
int isRun = ABBRobotManager.GetSingalState(SelConIp, ABBRobotManager.DO_IsRun);
if (isRun.Equals(1))
{
lblState.Text = "机器人程序正常运行中";
lblState.ForeColor = Color.Green;
}
}
}
private void btnStart_Click(object sender, EventArgs e)
......@@ -140,7 +157,7 @@ namespace ABBRobotTest
if (listView1.SelectedItems != null && listView1.SelectedItems.Count > 0)
{
int index = listView1.SelectedItems[0].Index;
string ip = listView1.Items[index].SubItems[0].ToString();
string ip = listView1.Items[index].SubItems[0].Text.ToString();
if (!String.IsNullOrEmpty(ip))
{
SelConIp = ip;
......@@ -188,5 +205,11 @@ namespace ABBRobotTest
{
LogUtil.info("机器人运动完成:" + msg);
}
private void btnClearLog_Click(object sender, EventArgs e)
{
this.richTextBox1.Clear();
LogUtil.ClearLog();
}
}
}
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!