在这里先更正一个错误,在上一期发布的《ABB机器人二次开发:基于PC SDK的机器人控制器扫描程序编写》文章的窗口设计部分内容中,添加的公共控件应该是ListView,而不是ListBox,其他内容保持不变。
RobotStudio软件版本:RobotStudio 6.08
SDK版本:PC SDK 6.08

开发软件版本:Microsoft Visual Studio Professional 2019
程序窗口设计在上一期机器人控制器扫描程序创建的窗口中再添加1个Button公共控件,并将其拖动到合适位置,然后设置其Text属性参数为“连接控制器”,如下图所示。
当然,上述窗口使用了TabControl容器控件对窗口中设计的功能进行了分类,本期中除了控制器扫描与控制器连接功能以外不会涉及到更多的功能,所以暂时可以不进行分类,因此对于TabControl容器控件的使用这里不再过多叙述,后期介绍到新功能设计时会详细介绍。
程序代码编写双击新添加的“控制器连接”Botton公共控件,打开代码编辑窗口。在“扫描控制器”按钮Click事件代码中foreach语句的最后一行编写“设置item的Tag属性到变量controllerInfo”的程序代码,程序代码语句如下所示。
item.Tag = controllerInfo;//设置item的Tag属性到变量controllerInfo
代码位置及完整语句如下图所示。
在“连接控制器”按钮的Click事件中编写远程登录机器人控制器与远程注销登录机器人控制器的程序代码,程序代码如下所示。
//控制器连接private void button2_Click(object sender, EventArgs e){ try { ListViewItem item = this.listView1.SelectedItems[0];//获取鼠标点选的机器人控制器 if (item.Tag != null) { ControllerInfo controllerInfo = (ControllerInfo)item.Tag; if (controllerInfo.Availability == Availability.Available) { //程序远程注销登录机器人控制器以及注销成功提示信息 if (this.controller != null) { this.controller.Logoff(); this.controller.Dispose(); this.controller = null; this.button2.Text = "登录"; MessageBox.Show(item.Text + " :注销成功!
", "注销");//提示信息 } //程序远程登录机器人以及登录成功提示信息 else { this.controller = ControllerFactory.CreateFrom(controllerInfo); this.controller.Logon(UserInfo.DefaultUser); this.button2.Text = "注销"; MessageBox.Show(this.controller.SystemName + " :登录成功!
", "登录");//提示信息 } } else { MessageBox.Show("选择的控制器不可用。", "信息提示"); } } } catch (System.ArgumentOutOfRangeException) { MessageBox.Show("请选择控制器后再进行操作。", "警告"); }}
完整程序代码如下图所示。
机器人控制器扫描与控制器连接的全部程序代码如下所示。
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;//添加命名空间using ABB.Robotics.Controllers;using ABB.Robotics.Controllers.Discovery;namespace WindowsFormsApp4{ public partial class Form1 : Form { public Form1() { InitializeComponent(); } //机器人控制器扫描 private NetworkScanner scanner = null;//声明网络扫描器成员变量 private Controller controller = null; private void button1_Click(object sender, EventArgs e) { this.scanner = new NetworkScanner();//创建一个网络扫描器实例对象 this.scanner.Scan();//启动扫描 ControllerInfoCollection controllers = scanner.Controllers;//将扫描到的控制器存放到控制器信息集合中 ListViewItem item = null; listView1.Items.Clear();//清空列表,避免再次扫描时添加重复内容 //遍历控制器信息集合中的控制器信息,并把所需的信息依次添加到列表显示控件中 foreach (ControllerInfo controllerInfo in controllers) { item = new ListViewItem(controllerInfo.SystemName);//系统名称 item.SubItems.Add(controllerInfo.IPAddress.ToString());//IP地址 item.SubItems.Add(controllerInfo.Version.ToString());//系统版本 item.SubItems.Add(controllerInfo.ControllerName);//控制器名称 this.listView1.Items.Add(item);//依次添加每一项到listView中 item.Tag = controllerInfo;//设置item的Tag属性到变量controllerInfo } } //控制器连接 private void button2_Click(object sender, EventArgs e) { try { ListViewItem item = this.listView1.SelectedItems[0];//获取鼠标点选的机器人控制器 if (item.Tag != null) { ControllerInfo controllerInfo = (ControllerInfo)item.Tag; if (controllerInfo.Availability == Availability.Available) { //程序远程注销登录机器人控制器以及注销成功提示信息 if (this.controller != null) { this.controller.Logoff(); this.controller.Dispose(); this.controller = null; this.button2.Text = "登录"; MessageBox.Show(item.Text + " :注销成功!
运行测试
", "注销");//提示信息 } //程序远程登录机器人以及登录成功提示信息 else { this.controller = ControllerFactory.CreateFrom(controllerInfo); this.controller.Logon(UserInfo.DefaultUser); this.button2.Text = "注销"; MessageBox.Show(this.controller.SystemName + " :登录成功!
", "登录");//提示信息 } } else { MessageBox.Show("选择的控制器不可用。", "信息提示"); } } } catch (System.ArgumentOutOfRangeException) { MessageBox.Show("请选择控制器后再进行操作。", "警告"); } } }}
对编写的程序代码进行编译,编译成功后就可以对其进行运行测试了。
在运行测试之前,先在RobotStudio软件中创建一个虚拟仿真项目,并在项目中添加机器人以及虚拟控制器,RobotStudio软件一定要与SDK版本是同一个版本。
在VS2019中启动编写的程序,然后在打开的Form1窗口中先点击“扫描控制器”按钮,待机器人控制器信息加载到ListView公共控件中之后,鼠标点选其中一条控制器信息,再点击“连接控制器”按钮,此时会弹出是否登录成功的信息提示框。
机器人控制器注销登录的测试步骤与之类似,是否注销登录成功同样会以信息提示框的形式进行提示。
The End
上一篇:RobotStudio软件:机器人自定义行走轴配置与仿真