Files
test_demo/MX-PD-盘古 - new/PanGu.DieBonderApp/MainShell/PageCalib/AlgorithmCalib/ViewModel/CameraFusionPadCalibViewModel.cs
Shi.Ji e31d3560bb 添加 MX-PD-盘古 项目文件
将 MX-PD-盘古 - new 目录下的所有文件添加到主仓库
2026-05-18 11:43:09 +08:00

350 lines
11 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using MainShell.AlgorithmCalib.Model;
using MainShell.AlgorithmCalib.Service;
using MainShell.Common;
using MainShell.Common.Display.ViewModel;
using MainShell.Filewritable;
using MainShell.Hardware;
using Maxwell.SemiFramework.WaferCalibration.ViewModel;
using MaxwellFramework.Core.Interfaces;
using MwFramework.Controls.SystemCalib;
using MwFramework.Controls.UIControl;
using MwFramework.ManagerService;
using Stylet;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using CameraAxisViewModel = MainShell.Common.Display.ViewModel.CameraAxisViewModel;
namespace MainShell.AlgorithmCalib.ViewModel
{
public class CameraFusionPadCalibViewModel:Screen,IPage
{
private bool _stopMotion = false;
public string Name { get; set; } = "CameraFusionPadCalib";
public string CameraName { get; set; }
private readonly FusionCalibMotionService _fusionCalibMotionService;
private HardwareManager _hardware;
private string _fileSaveDir = Paths.CalibSettingPath;
public string FileSaveDir
{
get { return _fileSaveDir; }
set { SetAndNotify(ref _fileSaveDir, value); }
}
private CameraAxisViewModel _cameraAxisViewModelSevice;
public CameraAxisViewModel CameraAxisViewModelSevice
{
get { return _cameraAxisViewModelSevice; }
set
{
_cameraAxisViewModelSevice = value;
OnPropertyChanged(nameof(CameraAxisViewModelSevice));
}
}
private FusionCalibParItem _fusionCalibParItem = new FusionCalibParItem();
public FusionCalibParItem FusionCalibParItem
{
get { return _fusionCalibParItem; }
set
{
_fusionCalibParItem = value;
OnPropertyChanged(nameof(FusionCalibParItem));
}
}
private FusionCalibParItem _inputParam;
public FusionCalibParItem InputParam
{
get { return _inputParam; }
set { SetAndNotify(ref _inputParam, value); }
}
private FusionCalibParItem _resultParam;
public FusionCalibParItem ResultParam
{
get { return _resultParam; }
set { SetAndNotify(ref _resultParam, value); }
}
//private CameraFusionPadCalibViewModel _service;
//public CameraFusionPadCalibViewModel Service
//{
// get { return _service; }
// set
// {
// _service = value;
// NotifyOfPropertyChange();
// }
//}
private bool _isInitialized=false;
public CameraFusionPadCalibViewModel()
{
}
public CameraFusionPadCalibViewModel(HardwareManager hardware, FusionCalibMotionService fusionCalibMotionService)
{
_hardware = hardware;
_fusionCalibMotionService = fusionCalibMotionService ?? throw new ArgumentNullException(nameof(fusionCalibMotionService));
}
/// <summary>
/// 弹窗专用工厂方法(新增):传入标定参数
/// </summary>
public static CameraFusionPadCalibViewModel Create(
string cameraName, string fileSaveName, List<HardwareDevice> device, FusionCalibParItem param, HardwareManager hardware, FusionCalibMotionService fusionCalibMotionService)
{
var vm = new CameraFusionPadCalibViewModel(hardware,fusionCalibMotionService);
vm.InputParam = param;
vm.ResultParam = param;
vm.Initialize(cameraName, fileSaveName, device, true);
return vm;
}
public void viewLoad()
{
base.OnViewLoaded();
if (_isInitialized)
{
return;
}
if (_hardware != null)
{
_cameraAxisViewModelSevice = new CameraAxisViewModel();
_cameraAxisViewModelSevice.CameraAxisDevices.HardwareDeviceList = _hardware.CameraAxisManager.TopPositionCameraAxisDevices;
NotifyOfPropertyChange(nameof(CameraAxisViewModelSevice));
}
//RebuildModuleViewModels();
_isInitialized = true;
}
public void viewUnLoad()
{
ResultParam = FusionCalibParItem;
}
private void Initialize(string cameraName, string fileSaveName, List<HardwareDevice> device, bool isSignUp)
{
//if (isSignUp)
//{
// IoC.Get<IEventAggregator>().Unsubscribe(this);
// IoC.Get<IEventAggregator>().Subscribe(this);
//}
//CameraName = cameraName;
Name = cameraName;
//FileSaveName = fileSaveName;
var paramList = IoC.Get<IParameterManager>() as IParamList;
//Service = new CameraFusionPadCalibViewModel();
FusionCalibParItem = InputParam;
//string pathSavePath = Path.Combine(FileSaveDir, FileSaveName + ".xml");
//Service.SetParaSavePath(pathSavePath);
//Service.IsShowSolidLine = true;
//Service.ShapeThickness = 1;
//Service.DrawInConcurrency = false;
//Service.IsAxisControlLDBVisible = Visibility.Visible;
}
public void btnMovePhsCalibPosPosition()
{
System.Threading.Tasks.Task.Factory.StartNew(() =>
{
try
{
_fusionCalibMotionService.SafeMove(_hardware.Axis_Y1, FusionCalibParItem.MoveAxisPos);
_fusionCalibMotionService.MovePhsAvoidance(FusionCalibParItem.ApproachXPos, FusionCalibParItem.ApproachYPos);
}
catch (Exception ex)
{
}
});
}
public void btnApproachPhsCalibPosition()
{
System.Threading.Tasks.Task.Factory.StartNew(() =>
{
try
{
//if (FindPointWSCircle())
//{
FusionCalibParItem.ApproachXPos = _hardware.Axis_X1.State.ActualPos;
FusionCalibParItem.ApproachYPos = _hardware.Axis_Y2.State.ActualPos;
//CameraWaferFusionCalibrationItem.CenterX = _gs.Axis_X21.State.ActualPos;
//CameraWaferFusionCalibrationItem.CenterY = _gs.Axis_Y21.State.ActualPos;
MessageBox.Show($"对齐值X1:{FusionCalibParItem.ApproachXPos},Y2:{FusionCalibParItem.ApproachYPos}");
//}
//else
//{
// MessageBox.Show("对齐失败!");
//}
}
catch (Exception ex)
{
}
});
}
public void btnCalculateCameraPosition()
{
try
{
//起点覆盖标定范围起点往负方向6mm
int offset = -10;
double Y2MinPos = 0;
_hardware.Axis_Y2.GetSoftMel(ref Y2MinPos);
var delx = FusionCalibParItem.ApproachYPos - Y2MinPos + offset;
FusionCalibParItem.CameraAxisPos = FusionCalibParItem.MoveAxisPos - delx;
}
catch (Exception ex)
{
}
}
public void btnSetCameraPosition()
{
var result = MwMessageBox.Show("是否使用当前位置?", "确认", MessageBoxButton.YesNo, MessageBoxImage.Information);
if (result == MessageBoxResult.Yes)
{
try
{
FusionCalibParItem.CameraAxisPos = _hardware.Axis_Y1.State.ActualPos;
}
catch (Exception ex)
{
}
}
}
public void btnMoveCameraPosition()
{
var result = MwMessageBox.Show("是否移动到该点?", "确认", MessageBoxButton.YesNo, MessageBoxImage.Information);
if (result == MessageBoxResult.Yes)
{
System.Threading.Tasks.Task.Factory.StartNew(() =>
{
try
{
_fusionCalibMotionService.SafeMove(_hardware.Axis_Y1, FusionCalibParItem.CameraAxisPos);
}
catch (Exception ex)
{
}
});
}
}
public void btnCalculatePhsPosition()
{
try
{
//起点覆盖标定范围起点往负方向6mm
int offset = -10;
double Y2MinPos = 0;
_hardware.Axis_Y2.GetSoftMel(ref Y2MinPos);
var delx = FusionCalibParItem.ApproachXPos - Y2MinPos + offset;
FusionCalibParItem.CameraAxisPos = FusionCalibParItem.MoveAxisPos - delx;
double y11Offset = FusionCalibParItem.CameraAxisPos - FusionCalibParItem.MoveAxisPos;
FusionCalibParItem.StartX = FusionCalibParItem.ApproachXPos;
FusionCalibParItem.StartY = FusionCalibParItem.ApproachYPos + y11Offset;
}
catch (Exception ex)
{
}
}
public void btnSetStageStartPosition()
{
var result = MwMessageBox.Show("是否使用当前位置?", "确认", MessageBoxButton.YesNo, MessageBoxImage.Information);
if (result == MessageBoxResult.Yes)
{
System.Threading.Tasks.Task.Factory.StartNew(() =>
{
try
{
FusionCalibParItem.StartX = _hardware.Axis_X1.State.ActualPos;
FusionCalibParItem.StartY = _hardware.Axis_Y2.State.ActualPos;
}
catch (Exception ex)
{
}
});
}
}
public void btnMoveStageStartPosition()
{
var result = MwMessageBox.Show("是否移动到该点?", "确认", MessageBoxButton.YesNo, MessageBoxImage.Information);
if (result == MessageBoxResult.Yes)
{
try
{
_fusionCalibMotionService.MovePhsAvoidance(FusionCalibParItem.StartX, FusionCalibParItem.StartY);
}
catch (Exception ex)
{
}
}
}
public void btnMoveToCenter()
{
System.Threading.Tasks.Task.Factory.StartNew(() =>
{
try
{
//if (ApproachPointWS(1))
//{
// CameraWaferFusionCalibrationItem.WaferStartVerifyX = _gs.Axis_X21.State.ActualPos;
// CameraWaferFusionCalibrationItem.WaferStartVerifyY = _gs.Axis_Y21.State.ActualPos;
// MwMessageBox.Show("中心对齐完成");
//}
//else
//{
// MwMessageBox.Show("逼近失败!");
//}
}
catch (Exception ex)
{
}
});
}
public void btnStart()
{
}
public void btnStop()
{
}
}
}