using DataEntity.Share;
using DriverLib.Engine;
using NPOI.SS.Formula.Functions;
using NPOI.Util;
using System;
using System.Text.RegularExpressions;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Media;
using XCommon.Log;
using XHandler.View.MethodProperty;
namespace XHandler.View
{
///
/// 控制夹爪类
///
public partial class ControlGrip : Window
{
#region 构造函数
///
/// 构造函数
///
public ControlGrip()
{
InitializeComponent();
}
#endregion
#region 初始化
///
/// 初始化
///
///
///
private void ControlGrip_Loaded(object sender, RoutedEventArgs e)
{
try
{
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
}
#endregion
#region 关闭窗口
///
/// 关闭窗口
///
///
///
private void btnClose_Click(object sender, RoutedEventArgs e)
{
try
{
this.Close();
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
}
#endregion
#region X-轴偏移 TODO
///
/// 往左偏移
///
///
///
private void btnLeft_Click(object sender, RoutedEventArgs e)
{
HxResult result = new HxResult();
result.Result = ResultType.Success;
try
{
// 判断输入值是否为空
if (!ValueIsEmpty(tBoxXOffset, "请输入X-轴偏移量"))
{
return;
}
this.Cursor = Cursors.Wait;
result = MethodAction.Instance.XMoveLeft(Shared.ChanelArmId, float.Parse(tBoxXOffset.Text));
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
finally
{
this.Cursor = Cursors.Arrow;
// 判断结果是否失败
ResultIsFail(result, "夹爪X轴向右偏移");
}
}
///
/// 往右偏移
///
///
///
private void btnRight_Click(object sender, RoutedEventArgs e)
{
HxResult result = new HxResult();
result.Result = ResultType.Success;
try
{
// 判断输入值是否为空
if (!ValueIsEmpty(tBoxXOffset, "请输入X-轴偏移量"))
{
return;
}
this.Cursor = Cursors.Wait;
result = MethodAction.Instance.XMoveRight(Shared.ChanelArmId, float.Parse(tBoxXOffset.Text));
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
finally
{
this.Cursor = Cursors.Arrow;
// 判断结果是否失败
ResultIsFail(result, "夹爪X轴向左偏移");
}
}
#endregion
#region Y-轴偏移 TODO
///
/// 往前偏移
///
///
///
private void btnFwd_Click(object sender, RoutedEventArgs e)
{
HxResult result = new HxResult();
result.Result = ResultType.Success;
try
{
// 判断输入值是否为空
if (!ValueIsEmpty(tBoxYOffset, "请输入Y-轴偏移量"))
{
return;
}
this.Cursor = Cursors.Wait;
result = MethodAction.Instance.GripperYMoveForward(float.Parse(tBoxYOffset.Text));
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
finally
{
this.Cursor = Cursors.Arrow;
// 判断结果是否失败
ResultIsFail(result, "夹爪Y轴向前偏移");
}
}
///
/// 往后偏移
///
///
///
private void btnBack_Click(object sender, RoutedEventArgs e)
{
HxResult result = new HxResult();
result.Result = ResultType.Success;
try
{
// 判断输入值是否为空
if (!ValueIsEmpty(tBoxYOffset, "请输入Y-轴偏移量"))
{
return;
}
this.Cursor = Cursors.Wait;
result = MethodAction.Instance.GripperYMoveBackward(float.Parse(tBoxYOffset.Text));
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
finally
{
this.Cursor = Cursors.Arrow;
// 判断结果是否失败
ResultIsFail(result, "夹爪Y轴向后偏移");
}
}
#endregion
#region Z-轴偏移
///
/// 向上偏移
///
///
///
private void btnUp_Click(object sender, RoutedEventArgs e)
{
HxResult result = new HxResult();
result.Result = ResultType.Success;
try
{
// 判断输入值是否为空
if (!ValueIsEmpty(tBoxZOffset, "请输入Z-轴偏移量"))
{
return;
}
Mouse.OverrideCursor = Cursors.Wait;
result = MethodAction.Instance.GripperZUp(float.Parse(tBoxZOffset.Text));
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
finally
{
Mouse.OverrideCursor = null;
// 判断结果是否失败
ResultIsFail(result, "夹爪Z轴向上偏移");
}
}
///
/// 向下偏移
///
///
///
private void btnDown_Click(object sender, RoutedEventArgs e)
{
HxResult result = new HxResult();
result.Result = ResultType.Success;
try
{
// 判断输入值是否为空
if (!ValueIsEmpty(tBoxZOffset, "请输入Z-轴偏移量"))
{
return;
}
Mouse.OverrideCursor = Cursors.Wait;
result = MethodAction.Instance.GripperZDown(float.Parse(tBoxZOffset.Text));
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
finally
{
Mouse.OverrideCursor = null;
// 判断结果是否失败
ResultIsFail(result, "夹爪Z轴向下偏移");
}
}
#endregion
#region 夹爪伸缩量
///
/// 夹紧
///
///
///
private void btnSqueeze_Click(object sender, RoutedEventArgs e)
{
HxResult result = new HxResult();
result.Result = ResultType.Success;
try
{
// 判断输入值是否为空
if (!ValueIsEmpty(tBoxSqueezeOffset, "请输入夹爪伸缩量"))
{
return;
}
Mouse.OverrideCursor = Cursors.Wait;
result = MethodAction.Instance.GripperClose(float.Parse(tBoxSqueezeOffset.Text));
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
finally
{
Mouse.OverrideCursor = null;
// 判断结果是否失败
ResultIsFail(result, "夹爪加紧");
}
}
///
/// 张开
///
///
///
private void btnUnSqueeze_Click(object sender, RoutedEventArgs e)
{
HxResult result = new HxResult();
result.Result = ResultType.Success;
try
{
// 判断输入值是否为空
if (!ValueIsEmpty(tBoxSqueezeOffset, "请输入夹爪伸缩量"))
{
return;
}
Mouse.OverrideCursor = Cursors.Wait;
result = MethodAction.Instance.GripperOpen(float.Parse(tBoxSqueezeOffset.Text));
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
finally
{
Mouse.OverrideCursor = null;
// 判断结果是否失败
ResultIsFail(result, "夹爪张开");
}
}
#endregion
#region 旋转角度 TODO
///
/// 顺时针旋转
///
///
///
private void btnClockWise_Click(object sender, RoutedEventArgs e)
{
HxResult result = new HxResult();
result.Result = ResultType.Success;
PlsToolTipWin plsToolTipWin = null;
try
{
this.Cursor = Cursors.Arrow;
System.Windows.Application.Current.Dispatcher.Invoke(new Action(() =>
{
plsToolTipWin = new PlsToolTipWin("暂不支持!");
plsToolTipWin.WindowStartupLocation = WindowStartupLocation.CenterScreen;
plsToolTipWin.ShowDialog();
}));
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
finally
{
}
}
///
/// 逆时针旋转
///
///
///
private void btnAntiClockWise_Click(object sender, RoutedEventArgs e)
{
HxResult result = new HxResult();
result.Result = ResultType.Success;
try
{
result = MethodAction.Instance.GripperRotateReverse(float.Parse(tBoxRotationOffset.Text));
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
finally
{
}
}
#endregion
#region Footer TODO
///
/// 抓板
///
///
///
private void btnPick_Click(object sender, RoutedEventArgs e)
{
HxResult result = new HxResult();
result.Result = ResultType.Success;
PlsToolTipWin plsToolTipWin = null;
try
{
this.Cursor = Cursors.Arrow;
System.Windows.Application.Current.Dispatcher.Invoke(new Action(() =>
{
plsToolTipWin = new PlsToolTipWin("暂不支持!");
plsToolTipWin.WindowStartupLocation = WindowStartupLocation.CenterScreen;
plsToolTipWin.ShowDialog();
}));
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
finally
{
}
}
///
/// 放板
///
///
///
private void btnPlace_Click(object sender, RoutedEventArgs e)
{
HxResult result = new HxResult();
result.Result = ResultType.Success;
try
{
PlsToolTipWin plsToolTipWin = new PlsToolTipWin("");
plsToolTipWin.WindowStartupLocation = WindowStartupLocation.CenterScreen;
plsToolTipWin.Height = 200;
plsToolTipWin.Width = 520;
SolidColorBrush mybtn2_Brush = new SolidColorBrush(System.Windows.Media.Color.FromArgb(0, 0, 0, 0));
plsToolTipWin.Background = (System.Windows.Media.Brush)mybtn2_Brush;
bool bResult = (bool)plsToolTipWin.ShowDialog();
if (bResult)
{
result = MethodAction.Instance.GripperOpen(float.Parse(tBoxSqueezeOffset.Text));
}
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
finally
{
}
}
///
/// 取消
///
///
///
private void btnCancel_Click(object sender, RoutedEventArgs e)
{
try
{
this.Close();
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
}
#endregion
#region 数据检查
///
/// 只能输入正浮点数
///
///
///
private void tBoxPreviewTextInput(object sender, System.Windows.Input.TextCompositionEventArgs e)
{
TextBox textElem = (sender as TextBox);
// 解决连续输入很多.
if ((textElem.Text.StartsWith(".") ||
string.IsNullOrWhiteSpace(textElem.Text) ||
textElem.Text.Contains(".")) && e.Text == ".")
{
e.Handled = true;
return;
}
// 禁止在0前面继续输入0
int index = ((System.Windows.Controls.TextBox)e.Source).CaretIndex;
if (textElem.Text.StartsWith("0.") && index == 0 && e.Text == "0")
{
e.Handled = true;
return;
}
Regex re = new Regex("[^0-9.]+");
e.Handled = re.IsMatch(e.Text);
}
///
/// 输入框失去焦点:限制一位小数
///
///
///
private void tBoxLostFocus(object sender, RoutedEventArgs e)
{
TextBox textElem = (sender as TextBox);
if (textElem.Text.Length > 0)
{
textElem.Text = Math.Round(double.Parse(textElem.Text), 1).ToString();
}
}
///
/// 禁用快捷指令
///
///
///
private void tBoxPreviewPreviewCanExecute(object sender, CanExecuteRoutedEventArgs e)
{
if (e.Command == ApplicationCommands.Copy ||
e.Command == ApplicationCommands.Cut ||
e.Command == ApplicationCommands.Paste)
{
e.CanExecute = false;
e.Handled = true;
}
}
///
/// 判断输入值是否为空
///
///
///
///
private bool ValueIsEmpty(TextBox tbox, string strMsg)
{
if (string.IsNullOrEmpty(tbox.Text))
{
PlsToolTipWin plsToolTipWin = new PlsToolTipWin(strMsg);
plsToolTipWin.btnCancel.Visibility = Visibility.Hidden;
plsToolTipWin.ShowDialog();
tbox.Focus();
return false;
}
return true;
}
///
/// 判断结果是否失败
///
///
///
private void ResultIsFail(HxResult result, string strMsg)
{
if (result.Result != ResultType.Success)
{
System.Windows.Application.Current.Dispatcher.Invoke(new Action(() =>
{
PlsToolTipWin plsToolTipWin = new PlsToolTipWin(string.Format("{0}失败:{1}", strMsg, result.AlarmInfo));
plsToolTipWin.btnCancel.Visibility = Visibility.Hidden;
plsToolTipWin.ShowDialog();
}));
}
}
#endregion
}
}