106 lines
4.1 KiB
C#
106 lines
4.1 KiB
C#
using Aurora;
|
|
using Aurora.Api;
|
|
using Aurora.View;
|
|
using VisionCommon;
|
|
using MilPattern;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Collections.ObjectModel;
|
|
using System.Linq;
|
|
using System.Reactive.Linq;
|
|
using System.Windows;
|
|
using System.Windows.Input;
|
|
using VisionSequence.Pattern;
|
|
using VisionCommonUI;
|
|
using System.Windows.Controls;
|
|
using VisionCommonUI.Resources;
|
|
|
|
namespace MilUI {
|
|
public class CamPatternListViewModel : PatternListViewModelBase {
|
|
private SubSysInfo _SubSysInfo;
|
|
private FovInfo _FovInfo;
|
|
private FovRecipe _FovRecipe;
|
|
private CameraView _CameraView;
|
|
private eCamId _CamId;
|
|
|
|
private readonly Logger _logger = new Logger("PatternListVM");
|
|
|
|
public CamPatternListViewModel(
|
|
FovInfo fovInfo, CameraView cameraView) : base(fovInfo, PatternConstants.CAM_PATTERN_COUNT) {
|
|
_SubSysInfo = fovInfo.ToSubSysInfo();
|
|
_FovInfo = fovInfo;
|
|
_FovRecipe = VisionRecipeManager.GetFovRecipe(fovInfo);
|
|
_CameraView = cameraView;
|
|
var camRecipe = VisionRecipeManager.GetCamRecipe(fovInfo);
|
|
_CamId = camRecipe.CamId;
|
|
_patternAgent = CamPatternAgentManager.GetAgent(_CamId) as CamPatternAgent;
|
|
InitPatternList(0);
|
|
}
|
|
|
|
public override PatternInfo CreateDefaultPatternInfo(int patternId) {
|
|
return new CamPatternInfo() {
|
|
PatternIndex = new CamPatternIndex(_CamId, patternId),
|
|
PatternType = ePatternType.None,
|
|
MilSystemId = FovPatternAgent.GetMilSystemId(_FovRecipe.CamRecipe.CamId),
|
|
LightInfo = GetDefaultLightInfo()
|
|
};
|
|
}
|
|
|
|
public override void StartGrabFindSeq(PatternInfo patternInfo) {
|
|
var manualFixtureProcSeq = ManualGrabFindSeqManager.GetSeq(_FovInfo);
|
|
|
|
if (manualFixtureProcSeq == null) {
|
|
_logger.FuncE("manualFixtureProcSeq is null.");
|
|
}
|
|
else if (manualFixtureProcSeq.RunState == SequenceRunState.Running) {
|
|
_logger.FuncE("manualFixtureProcSeq is running.");
|
|
}
|
|
else if (manualFixtureProcSeq.RunState == SequenceRunState.Idle) {
|
|
GrabFindSeqUtil.Clear(_SubSysInfo);
|
|
|
|
var fixtureSeqParam = new GrabFindProcSeqParams(
|
|
_FovInfo, patternInfo, eDisplayType.Pattern, seqMode: eSeqMode.Manual);
|
|
manualFixtureProcSeq.Start(fixtureSeqParam);
|
|
}
|
|
else {
|
|
_logger.FuncE("manualFixtureProcSeq is not idle.");
|
|
}
|
|
}
|
|
|
|
public override void StartFindSeq(PatternInfo patternInfo) {
|
|
var manualFindSeq = VisionEnv.AuroraEnv.SequenceEntry[VisionKeys.ManualFindSeqKey];
|
|
if (manualFindSeq != null && manualFindSeq.RunState == SequenceRunState.Idle) {
|
|
|
|
var CameraDisplay = _CameraView.GetDisplay();
|
|
CameraDisplay.ClearMeasureGraphics();
|
|
|
|
var image = CameraDisplay.GetImage();
|
|
if (image == null) {
|
|
MessageBoxUtil.ShowMessageBoxError(StrTokens.MSG_E_ImageNotReady);
|
|
return;
|
|
}
|
|
|
|
var findSeqParam = new FindSeqParams(
|
|
image, _FovInfo, patternInfo, eDisplayType.Pattern, seqMode: eSeqMode.Manual);
|
|
manualFindSeq.Start(findSeqParam);
|
|
}
|
|
}
|
|
|
|
public override void RegisterPatternWindow() {
|
|
_window = new RegisterPatternWindow(_patternAgent, Patterns[SelectedPatternIndex].Clone() as PatternInfo);
|
|
}
|
|
|
|
public override void CreatePatternSettingWindow() {
|
|
_window = CreatePatternSettingWindow(
|
|
_patternAgent, Patterns[SelectedPatternIndex].Clone() as PatternInfo, _CameraView.GetDisplay());
|
|
}
|
|
|
|
private Window CreatePatternSettingWindow(
|
|
PatternAgentBase patternAgent, PatternInfo patternInfo, CameraDisplay milCameraDisplay) {
|
|
|
|
return PatternViewUtil.CreatePatternSettingWindow(
|
|
patternAgent, Patterns[SelectedPatternIndex].Clone() as PatternInfo, milCameraDisplay, _FovInfo);
|
|
}
|
|
}
|
|
}
|