#0012:新增etalon 文件格式的解析与可视化,和控制
This commit is contained in:
@@ -0,0 +1,149 @@
|
||||
using System;
|
||||
using System.Drawing;
|
||||
using System.Windows.Forms;
|
||||
using ACS.SPiiPlusNET;
|
||||
using Telerik.WinControls.UI;
|
||||
|
||||
namespace HexcalMC
|
||||
{
|
||||
public partial class DemoShow : RadForm
|
||||
{
|
||||
public enum DemoStatus
|
||||
{
|
||||
NotStarted, // 未演示
|
||||
InProgress, // 演示中
|
||||
Completed, // 演示完成
|
||||
Error // 演示出错
|
||||
}
|
||||
|
||||
private readonly Api _motionApi;
|
||||
|
||||
public DemoShow(Api mothionApi)
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
if (mothionApi == null)
|
||||
{
|
||||
throw new ArgumentNullException("运动平台未连接");
|
||||
}
|
||||
|
||||
_motionApi = mothionApi;
|
||||
Status = DemoStatus.NotStarted;
|
||||
}
|
||||
|
||||
public DemoStatus Status { get; set; }
|
||||
public TimeSpan TotalDuration { get; set; }
|
||||
|
||||
private void btn_StartShow_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (_motionApi == null)
|
||||
{
|
||||
MessageBox.Show("Motion API is not initialized.", "提示", MessageBoxButtons.OK,
|
||||
MessageBoxIcon.Information);
|
||||
return;
|
||||
}
|
||||
|
||||
//判断通讯状态
|
||||
if (!_motionApi.IsConnected)
|
||||
{
|
||||
//连接失败
|
||||
MessageBox.Show("请先点击连接运动平台", "提示", MessageBoxButtons.OK,
|
||||
MessageBoxIcon.Information);
|
||||
return;
|
||||
}
|
||||
|
||||
//判断是否在演示中
|
||||
if (Status == DemoStatus.InProgress)
|
||||
{
|
||||
MessageBox.Show("演示正在进行中,请先停止演示","提示", MessageBoxButtons.OK,
|
||||
MessageBoxIcon.Information);
|
||||
}
|
||||
|
||||
|
||||
//运行演示
|
||||
try
|
||||
{
|
||||
_motionApi.RunBuffer(ProgramBuffer.ACSC_BUFFER_12, null);
|
||||
Status = DemoStatus.InProgress;
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
MessageBox.Show("运行演示失败:" + exception.Message, "提示", MessageBoxButtons.OK,
|
||||
MessageBoxIcon.Information);
|
||||
Status = DemoStatus.Error;
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
private void btn_StopShow_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (_motionApi == null)
|
||||
{
|
||||
MessageBox.Show("Motion API is not initialized.", "提示", MessageBoxButtons.OK,
|
||||
MessageBoxIcon.Information);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!_motionApi.IsConnected)
|
||||
{
|
||||
MessageBox.Show("请先点击连接运动平台", "提示", MessageBoxButtons.OK,
|
||||
MessageBoxIcon.Information);
|
||||
return;
|
||||
}
|
||||
|
||||
if (Status != DemoStatus.InProgress)
|
||||
{
|
||||
MessageBox.Show("演示未开始或已结束", "提示", MessageBoxButtons.OK,
|
||||
MessageBoxIcon.Information);
|
||||
return;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
_motionApi.StopBuffer(ProgramBuffer.ACSC_BUFFER_12); //停止演示
|
||||
Status = DemoStatus.Completed;
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
MessageBox.Show("运行演示失败:" + exception.Message, "提示", MessageBoxButtons.OK,
|
||||
MessageBoxIcon.Information);
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
private void timer_UI_Tick(object sender, EventArgs e)
|
||||
{
|
||||
lable_showstatus.Text = Status.ToString();
|
||||
|
||||
switch (Status)
|
||||
{
|
||||
case DemoStatus.NotStarted:
|
||||
lable_showstatus.ForeColor = Color.Black;
|
||||
lable_showstatus.Text = "未演示";
|
||||
break;
|
||||
case DemoStatus.InProgress:
|
||||
lable_showstatus.ForeColor = Color.Blue;
|
||||
lable_showstatus.Text = "演示中";
|
||||
break;
|
||||
case DemoStatus.Completed:
|
||||
lable_showstatus.ForeColor = Color.Green;
|
||||
lable_showstatus.Text = "演示完成";
|
||||
break;
|
||||
case DemoStatus.Error:
|
||||
lable_showstatus.ForeColor = Color.Red;
|
||||
lable_showstatus.Text = "演示出错";
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void DemoShow_Load(object sender, EventArgs e)
|
||||
{
|
||||
timer_UI.Start();
|
||||
}
|
||||
|
||||
private void DemoShow_FormClosing(object sender, FormClosingEventArgs e)
|
||||
{
|
||||
timer_UI.Stop();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user