领胜LDS 键盘AOI检测项目
src/Bro.M071.Process/M071Process.cs
@@ -61,7 +61,6 @@
            Reset(null, null, null);
            FullReset(null);
        }
        private void InitialMotionCardBaseAxisAlarm()
@@ -82,7 +81,7 @@
        private void InitialSetting()
        {
            //数据库迁移检查
            DatabaseInitialize.Initialize();
            //DatabaseInitialize.Initialize();
            MotionCardSettingCheck();
@@ -196,7 +195,7 @@
            }
            MachineState = MachineState.Running;
            OnMeasureStart?.BeginInvoke(null, null);
            OnMeasureStart?.Invoke();
            var measurements = Config.MeasurementUnitCollection.Where(u => u.IsEnabled).ToList().DeepSerializeClone();
            measurements.ForEach(m =>
@@ -226,9 +225,12 @@
            Config.SnapshotPointCollection.Where(u => u.IsEnabled).ToList().ForEach(s =>
                  {
                      _pauseHandle.WaitHandle.WaitOne();
                      _pausedHandle.Wait();
                      if (MachineState != MachineState.Running)
                      if (MachineState == MachineState.Ready)
                          return;
                      if (MachineState != MachineState.Running && MachineState != MachineState.Pause)
                      {
                          throw new ProcessException("机台状态不在运行中,退出检测");
                      }
@@ -336,10 +338,14 @@
        {
            if (sender is ProductionMeasurement pMeasure)
            {
                lock (pMeasure)
                var production = productionList.FirstOrDefault(u => u.Barcode == pMeasure.Barcode);
                if (production == null)
                    return;
                lock (production)
                {
                    //检查是否全部完成
                    pMeasure.Measurements.ForEach(m =>
                    pMeasure.Measurements?.ForEach(m =>
                    {
                        if (m.KeyUnitCollection.All(k => k.IsDone != null))
                        {
@@ -381,7 +387,7 @@
                                indicator.ResultState = m.Spec.MeasureResult;
                                pMeasure.ElementList.Add(indicator);
                                //输出图形基元到界面 
                                OnElementUpdated?.BeginInvoke(indicator, null, null);
                                OnElementUpdated?.Invoke(indicator);
                                SaveKeyImages(pMeasure.Barcode, m);
@@ -494,7 +500,7 @@
                    MeasurementUnitResult measurementUnitResult = new MeasurementUnitResult();
                    measurementUnitResult.ProductionMeasurementRecordsId = productionMeasurementRecords.ID;
                    measurementUnitResult.ProductionBarcode = productionMeasurementRecords.ProductionBarcode;
                    measurementUnitResult.MeasurementName = measurementUnit.Name;
                    measurementUnitResult.MeasurementName = measurementUnit.GetDisplayText();
                    measurementUnitResult.MeasurementType = measurementUnit.MeasureType;
                    measurementUnitResult.MeasurementValue = measurementUnit.Spec.ActualValue.ToString();
                    measurementUnitResult.MeasurementResult = measurementUnit.Spec.MeasureResult.Value ? "OK" : "NG";
@@ -723,14 +729,14 @@
                          });
                 }
                 string dir = Path.Combine(Config.ImageSaveFolder, "Clips", $"{snapshotName}_{DateTime.Now.ToString("HHmmss")}");
                 string dir = Path.Combine(Config.ImageSaveFolder, "Clips", $"{DateTime.Now.ToString("yyyyMMdd")}", $"{snapshotName}_{DateTime.Now.ToString("HHmmss")}");
                 if (!Directory.Exists(dir))
                 {
                     Directory.CreateDirectory(dir);
                 }
                 Parallel.For(1, count.I + 1, (i) =>
                 //for (int i = 1; i <= count.I; i++)
                 //Parallel.For(1, count.I + 1, (i) =>
                 for (int i = 1; i <= count.I; i++)
                 {
                     HOperatorSet.SelectObj(images, out HObject image, i);
@@ -762,10 +768,11 @@
                                     var results = _halconToolDict[keyToolKey].GetResultTuple("OUTPUT_Results").HTupleToDouble();
                                     if (results.Count == 0 || results.Any(u => u < 0))
                                     {
                                         LogAsync(DateTime.Now, $"{k.AliasName}检测结果异常", "");
                                         LogAsync(DateTime.Now, $"{k.AliasName}原始数据异常", "");
                                     }
                                     else
                                     {
                                         LogAsync(DateTime.Now, $"{k.AliasName}原始数据", $"{string.Join(" ", results)}");
                                         resultDict = k.KeyResultList.ToDictionary(u => u, u =>
                                              {
                                                  int index = k.KeyResultList.IndexOf(u);
@@ -784,7 +791,7 @@
                     //image.Dispose();
                 }
                 );
                 //);
                 //if (count.I != 1)
                 //{