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 { /// /// Interaction logic for PatternTestResultView.xaml /// 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."); } } } } }