|
|
@@ -1,4 +1,5 @@
|
|
|
-using MaterialDesignThemes.Wpf;
|
|
|
+using Cognex.VisionPro;
|
|
|
+using MaterialDesignThemes.Wpf;
|
|
|
using MathNet.Numerics.LinearAlgebra;
|
|
|
using NPOI.SS.Formula.Functions;
|
|
|
using Prism.Commands;
|
|
|
@@ -43,6 +44,7 @@ namespace TeamAAS_VP.ViewModels.Product
|
|
|
ISystemDatabaseService _systemDatabaseService;
|
|
|
IRemoteCommandService _remoteCommandService;
|
|
|
ICalibrationService _calibrationService;
|
|
|
+ ICameraService _cameraService;
|
|
|
CoordinateTransformer local=null;
|
|
|
|
|
|
#region 属性
|
|
|
@@ -272,6 +274,78 @@ namespace TeamAAS_VP.ViewModels.Product
|
|
|
set { SetProperty(ref _LockScrewProgramNumber, value); }
|
|
|
}
|
|
|
|
|
|
+ private bool _IsGrap = true;
|
|
|
+ public bool IsGrap
|
|
|
+ {
|
|
|
+ get { return _IsGrap; }
|
|
|
+ set { SetProperty(ref _IsGrap, value); }
|
|
|
+ }
|
|
|
+
|
|
|
+ private ObservableCollection<CameraInfo> _CameraList;
|
|
|
+ public ObservableCollection<CameraInfo> CameraList
|
|
|
+ {
|
|
|
+ get { return _CameraList; }
|
|
|
+ set { SetProperty(ref _CameraList, value); }
|
|
|
+ }
|
|
|
+
|
|
|
+ private CameraInfo _SelectedCamera;
|
|
|
+ public CameraInfo SelectedCamera
|
|
|
+ {
|
|
|
+ get { return _SelectedCamera; }
|
|
|
+ set { SetProperty(ref _SelectedCamera, value);
|
|
|
+ if (value!=null)
|
|
|
+ {
|
|
|
+ if(Camera!=null)
|
|
|
+ {
|
|
|
+ if (Camera.IsGrabbing)
|
|
|
+ {
|
|
|
+ Camera.StopGrabbing();
|
|
|
+ }
|
|
|
+ Camera.ImageCallbackEvent -= Camera_ImageCallbackEvent;
|
|
|
+ }
|
|
|
+ Camera = _cameraService.GetCamera(value.Id);
|
|
|
+ Camera.ImageCallbackEvent += Camera_ImageCallbackEvent;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private ICamera _Camera;
|
|
|
+ public ICamera Camera
|
|
|
+ {
|
|
|
+ get { return _Camera; }
|
|
|
+ set { SetProperty(ref _Camera, value); }
|
|
|
+ }
|
|
|
+
|
|
|
+ private ICogImage _Image;
|
|
|
+
|
|
|
+ public ICogImage Image
|
|
|
+ {
|
|
|
+ get { return _Image; }
|
|
|
+ set { SetProperty(ref _Image, value); }
|
|
|
+ }
|
|
|
+
|
|
|
+ private string _Message;
|
|
|
+ public string Message
|
|
|
+ {
|
|
|
+ get { return _Message; }
|
|
|
+ set { SetProperty(ref _Message, value); }
|
|
|
+ }
|
|
|
+
|
|
|
+ private bool _IsLeftDrawerOpen;
|
|
|
+ public bool IsLeftDrawerOpen
|
|
|
+ {
|
|
|
+ get { return _IsLeftDrawerOpen; }
|
|
|
+ set { SetProperty(ref _IsLeftDrawerOpen, value);
|
|
|
+ if (!value)
|
|
|
+ {
|
|
|
+ if (IsGrap)
|
|
|
+ {
|
|
|
+ ExecuteStopGrabbingCommand();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
#endregion
|
|
|
|
|
|
#region 命令
|
|
|
@@ -362,6 +436,14 @@ namespace TeamAAS_VP.ViewModels.Product
|
|
|
public DelegateCommand AutoCorrectLockPointCommand =>
|
|
|
_AutoCorrectLockPointCommand ?? (_AutoCorrectLockPointCommand = new DelegateCommand(ExecuteAutoCorrectLockPoint));
|
|
|
|
|
|
+ private DelegateCommand _StartGrabbingCommand;
|
|
|
+ public DelegateCommand StartGrabbingCommand =>
|
|
|
+ _StartGrabbingCommand ?? (_StartGrabbingCommand = new DelegateCommand(ExecuteStartGrabbingCommand, CanExecuteStartGrabbingCommand).ObservesProperty(() => IsGrap));
|
|
|
+
|
|
|
+ private DelegateCommand _StopGrabbingCommand;
|
|
|
+ public DelegateCommand StopGrabbingCommand =>
|
|
|
+ _StopGrabbingCommand ?? (_StopGrabbingCommand = new DelegateCommand(ExecuteStopGrabbingCommand, CanExecuteStopGrabbingCommand).ObservesProperty(() => IsGrap));
|
|
|
+
|
|
|
#endregion
|
|
|
|
|
|
#region 事件
|
|
|
@@ -370,7 +452,7 @@ namespace TeamAAS_VP.ViewModels.Product
|
|
|
|
|
|
public PlcPointParamsViewModel(IRegionManager regionManager, IEventAggregator ea, IContainerProvider container, IDialogService dialogService,
|
|
|
IConfigService configService, IRobotService robotService, ISystemDatabaseService systemDatabaseService, IRemoteCommandService remoteCommandService,
|
|
|
- ICalibrationService calibrationService)
|
|
|
+ ICalibrationService calibrationService, ICameraService cameraService)
|
|
|
{
|
|
|
_regionManager = regionManager;
|
|
|
_eventAggregator = ea;
|
|
|
@@ -384,6 +466,7 @@ namespace TeamAAS_VP.ViewModels.Product
|
|
|
_robotService = robotService;
|
|
|
_remoteCommandService = remoteCommandService;
|
|
|
_calibrationService = calibrationService;
|
|
|
+ _cameraService = cameraService;
|
|
|
}
|
|
|
|
|
|
#region 方法
|
|
|
@@ -1405,6 +1488,52 @@ namespace TeamAAS_VP.ViewModels.Product
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 停止采集
|
|
|
+ /// </summary>
|
|
|
+ void ExecuteStopGrabbingCommand()
|
|
|
+ {
|
|
|
+
|
|
|
+ if (Camera != null)
|
|
|
+ Camera.StopGrabbing();
|
|
|
+ IsGrap = false;
|
|
|
+ }
|
|
|
+
|
|
|
+ bool CanExecuteStopGrabbingCommand()
|
|
|
+ {
|
|
|
+ return IsGrap;
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 开始采集
|
|
|
+ /// </summary>
|
|
|
+ void ExecuteStartGrabbingCommand()
|
|
|
+ {
|
|
|
+ if (Camera != null)
|
|
|
+ Camera.StartGrabbing();
|
|
|
+ IsGrap = true;
|
|
|
+ }
|
|
|
+ bool CanExecuteStartGrabbingCommand()
|
|
|
+ {
|
|
|
+ return SelectedCamera != null && !IsGrap;
|
|
|
+ }
|
|
|
+
|
|
|
+ private void Camera_ImageCallbackEvent(ICogImage image, TimeSpan totaltime, string errormessage)
|
|
|
+ {
|
|
|
+ Image = image;
|
|
|
+ App.Current.Dispatcher.Invoke(new
|
|
|
+ Action(() =>
|
|
|
+ {
|
|
|
+ if (errormessage != null && !string.IsNullOrEmpty(errormessage))
|
|
|
+ {
|
|
|
+ Message = $"{Lang.耗时}:{totaltime.TotalMilliseconds.ToString("F1")} ms Error:{errormessage}";
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ Message = $"{Lang.耗时}:{totaltime.TotalMilliseconds.ToString("F1")} ms";
|
|
|
+ }
|
|
|
+ }));
|
|
|
+ }
|
|
|
#endregion
|
|
|
|
|
|
#region 继承
|
|
|
@@ -1466,6 +1595,9 @@ namespace TeamAAS_VP.ViewModels.Product
|
|
|
LockZDescendSpeed = SelectProduct.ScrewPoints.FirstOrDefault()?.Z_Velocity_Stop ?? 100;
|
|
|
LockFeederNumber = SelectProduct.ScrewPoints.FirstOrDefault()?.Feeder ?? 1;
|
|
|
LockScrewProgramNumber = SelectProduct.ScrewPoints.FirstOrDefault()?.ScrewProNum ?? 1;
|
|
|
+
|
|
|
+ CameraList = new ObservableCollection<CameraInfo>(_configService.GetAllCameras());
|
|
|
+
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
@@ -1493,6 +1625,26 @@ namespace TeamAAS_VP.ViewModels.Product
|
|
|
//{
|
|
|
// Robot.EnterDebugMode = false;
|
|
|
//}
|
|
|
+ try
|
|
|
+ {
|
|
|
+ IsGrap = false;
|
|
|
+ if (Camera != null)
|
|
|
+ {
|
|
|
+ if (Camera.IsGrabbing)
|
|
|
+ {
|
|
|
+ Camera.StopGrabbing();
|
|
|
+ }
|
|
|
+ Camera.ImageCallbackEvent -= Camera_ImageCallbackEvent;
|
|
|
+
|
|
|
+ Camera = null;
|
|
|
+ }
|
|
|
+ SelectedCamera = null;
|
|
|
+ IsLeftDrawerOpen = false;
|
|
|
+ }
|
|
|
+ catch (Exception)
|
|
|
+ {
|
|
|
+
|
|
|
+ }
|
|
|
}
|
|
|
#endregion
|
|
|
|