2026-01-26 18:56:53 +09:00

76 lines
2.9 KiB
C#

using Aurora.Api;
using Aurora.Util.HislogPlus;
using System.Threading;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using VisionCommon;
using VisionSequence.Pattern;
namespace MilUI {
/// <summary>
/// Interaction logic for PatternTestResultView.xaml
/// </summary>
public partial class VisionImageTestLogView : UserControl {
private readonly Logger _Logger = new Logger(typeof(VisionImageTestLogView).Name);
private FovInfo _FovInfo;
private eVisionTestType _VisionTestType;
private PatternInfo _PatternInfo;
public VisionImageTestLogView(FovInfo fovInfo, eVisionTestType visionTestType, PatternInfo patternInfo = null) {
_FovInfo = fovInfo;
_VisionTestType = visionTestType;
if (patternInfo != null) {
_PatternInfo = patternInfo;
}
InitializeComponent();
}
private async void dataGridFilePaths_SelectionChanged(object sender, SelectionChangedEventArgs e) {
if(e.AddedItems.Count > 0) {
var dataGrid = sender as DataGrid;
}
}
private void DataGrid_MouseDoubleClick(object sender, MouseButtonEventArgs e) {
var dataGrid = sender as DataGrid;
if (dataGrid.SelectedIndex != null) {
switch (_VisionTestType) {
case eVisionTestType.Pattern:
StartSingleTestGrabFindSeq(dataGrid.SelectedIndex);
break;
case eVisionTestType.Align:
case eVisionTestType.Calibration:
break;
}
}
}
private void StartSingleTestGrabFindSeq(int index) {
var visionImageTester = VisionImageTesterManagerBase.GetVisionImageTester(_FovInfo);
visionImageTester.SetCount(index);
var manualFixtureProcSeq = ManualGrabFindSeqManager.GetSeq(_FovInfo);
if (manualFixtureProcSeq == null) {
_Logger.FuncE("manualFixtureProcSeq is null.");
}
else {
while (manualFixtureProcSeq.RunState == SequenceRunState.Running || manualFixtureProcSeq.RunState == SequenceRunState.Finish) {
Thread.Sleep(10);
}
if (manualFixtureProcSeq.RunState == SequenceRunState.Idle) {
GrabFindSeqUtil.Clear(_FovInfo.ToSubSysInfo());
var fixtureSeqParam = new GrabFindProcSeqParams(
_FovInfo, _PatternInfo, eDisplayType.ImageTest, seqMode: eSeqMode.VisionImageTest);
manualFixtureProcSeq.Start(fixtureSeqParam);
}
else {
_Logger.FuncE("manualFixtureProcSeq is not idle.");
}
}
}
}
}