期待已久的V2.0基础功能版本发布了,根据实际需要后面会完善基本功能,并开发出更实用的功能模块,欢迎小伙伴们留言。详细更新内容介绍如下:
更新1:UI界面整体更新,整体风格选用蓝色主题界面边框显示
更新2:新增运行模式设定,支持和示教器一样的运行操作模式,单周运行、连续运行,需要停止后再启动生效。
更新3:新增步进模式,单步运行,持续运行,跳过执行,跳至下一个运作指令执行功能。和示教器操作一致,不熟悉可以看下截图。
更新4:新增手自动模式选择,可在虚拟示教器中控制手自动模式。
更新5:新增电机上电断电功能,模拟实际控制器中的Moto_On按钮功能。
更新6:新增控制机器人运行速度条功能,并实时显示。
功能7:新增右键删除Log和复制Log上的信息属性。
附上部分源码:
//设置机器人速度
private void trackBar1_Scroll(object sender, EventArgs e)
{
int num = trackBar1.Value;
textBox1.Text = num.ToString();
try
{
this.controller.MotionSystem.SpeedRatio = num;
}
catch (Exception)
{
return;
}
}
//设置自动模式
private void AutoradioButton_CheckedChanged(object sender, EventArgs e)
{
try
{
if (this.listView1.SelectedIndices.Count < 1)
{
MessageBox.Show("请连接控制器");
return;
}
if (AutoradioButton.Checked)
{
List<string> result = new List<string>();
Change_Mode = ControllerOperatingMode.Auto;
Robot_Control.Operating_Mode(controller, out result, Change_Mode);
List<string> log_info = new List<string>();
errLog = Robot_Control.errLogger(errLog, "[msg]\t请去示教器去确认自动模式");
richTextBox1.Lines = errLog.ToArray();
}
}
catch
{
MessageBox.Show("请连接控制器", "警告");
}
}
//电机上电
private void Motor_Onbutton7_Click(object sender, EventArgs e)
{
List<string> result = new List<string>();
if (this.listView1.SelectedIndices.Count < 1)
{
MessageBox.Show("请连接控制器");
return;
}
if (controller.State != ControllerState.MotorsOff)
{
result.Add("[warning] 当前状态是".Insert(18,controller.State.ToString()) );
errLog = Robot_Control.errLogger(errLog,result[0]);
richTextBox1.Lines = errLog.ToArray();
return ;
}
if (controller.OperatingMode != ControllerOperatingMode.Auto)
{
result.Add("[warning] 需要等待确认自动模式");
errLog = Robot_Control.errLogger(errLog, result[0]);
richTextBox1.Lines = errLog.ToArray();
return;
}
else
{
try
{
controller.State = ControllerState.MotorsOn;
result.Add("[msg] 电机上电".Insert(9, " "+curr_control_name));
errLog = Robot_Control.errLogger(errLog, result[0]);
richTextBox1.Lines = errLog.ToArray();
}
catch (Exception ex)
{
result.Add("[error]" + ex.ToString());
}
}
}
//单周运行
private void RegainMode_ItemCheck(object sender, ItemCheckEventArgs e)
{
if (this.RegainMode.CheckedItems.Count > 0)
{
for (int i = 0; i < this.RegainMode.Items.Count; i++)
{
if (i != e.Index)
{
this.RegainMode.SetItemCheckState(i, System.Windows.Forms.CheckState.Unchecked);
}
}
if (RegainMode.SelectedItem.ToString() == "单周运行")
{
cycle = ExecutionCycle.Once;
}
else
{
cycle = ExecutionCycle.Forever;
}
Execution_Status = RegainMode.SelectedItem.ToString();
}
}
上位机整体界面:
喜欢的朋友,关注下公众号,谢谢!