示例#1
0
        /// <summary>
        /// 将当前单目运行的结果记录到点位数组对应的位置
        /// </summary>
        /// <param name="index">数组存放该数据的索引</param>
        /// <param name="cellName">算子序号</param>
        /// <param name="pos">拍照位置</param>
        /// <param name="htResult"></param>
        /// <returns></returns>
        public bool DealLocation(int index, string cellName, Pos_enum pos, out Hashtable htResult)
        {
            htResult = null;
            try
            {
                #region 空跑
                if (ParStateSoft.StateMachine_e == StateMachine_enum.NullRun)
                {
                    ShowState(string.Format("相机{0}第{1}次拍照空跑默认ok", g_NoCamera, index + 1));
                    FinishPhotoPLC(1);
                    return(true);
                }
                #endregion
                //保存当前匹配结果到指定的点中
                if (!SaveMatchResult(index, cellName, pos, out htResult))
                {
                    ShowState(string.Format("相机{0}第{1}次拍照失败", g_NoCamera, index + 1));
                    FinishPhotoPLC(CameraResult.NG);
                    return(false);
                }

                ShowState(string.Format("相机{0}第{1}次拍照成功", g_NoCamera, index + 1));
                FinishPhotoPLC(CameraResult.OK);
                return(true);
            }
            catch (Exception ex)
            {
                FinishPhotoPLC(CameraResult.NG);
                Log.L_I.WriteError(NameClass, ex);
                return(false);
            }
        }
        public ResultMainShow g_ResultMainShow = new DealResult.ResultMainShow();//存储Main_EX里面设定的图像和对象
        #endregion 定义

        /// <summary>
        /// 显示
        /// </summary>
        /// <param name="pos_e"></param>
        /// <param name="htResult"></param>
        /// <param name="blResult"></param>
        /// <param name="sw"></param>
        protected void Display(Pos_enum pos_e, Hashtable htResult, bool blResult, Stopwatch sw)
        {
            try
            {
                g_BaseDealComprehensive.DisplayComprehensivePos(g_UCDisplayCamera, g_HtUCDisplay, pos_e, htResult, blResult);
                //记录当前整体节拍
                RecordTact(sw, g_NoCamera, (int)pos_e, htResult);
            }
            catch (Exception ex)
            {
            }
        }
示例#3
0
        /// <summary>
        /// 保存对应单元格的匹配结果
        /// </summary>
        /// <param name="index">当前坐标对应的数组索引</param>
        /// <param name="cellName">M直线算子序号</param>
        /// <param name="pos">拍照位置</param>
        /// <param name="htResult"></param>
        /// <returns></returns>
        public bool SaveMatchResult(int index, string cellName, Pos_enum pos, out Hashtable htResult)
        {
            htResult = null;
            try
            {
                StateComprehensive_enum stateComprehensive_e = g_BaseDealComprehensive.DealComprehensivePosNoDisplay(g_UCDisplayCamera, g_HtUCDisplay, pos, out htResult);
                ResultCrossLines        result = htResult[cellName] as ResultCrossLines;

                if (!DealTypeResult(result))
                {
                    return(false);
                }
                //保存当前匹配结果
                pt2MarkArray[index].DblValue1 = result.X;
                pt2MarkArray[index].DblValue2 = result.Y;
            }
            catch (Exception ex)
            {
                Log.L_I.WriteError(NameClass, ex);
                return(false);
            }
            return(true);
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="pos"></param>
        /// <param name="htResult"></param>
        /// <param name="blResult"></param>
        /// <param name="sw"></param>
        /// <param name="funDisplay">显示的委托</param>
        protected void Display_Task(Pos_enum pos_e, Hashtable htResult, bool blResult, Stopwatch sw, Action funDisplay)
        {
            try
            {
                FunDisplay = new Action(() =>
                {
                    g_BaseDealComprehensive.DisplayComprehensivePos(g_UCDisplayCamera, g_HtUCDisplay, pos_e, htResult, blResult);
                    // funDisplay();
                    //记录当前整体节拍
                    RecordTact(sw, g_NoCamera, (int)pos_e, htResult);
                    if (funDisplay != null)
                    {
                        funDisplay();
                    }
                });

                BlDisplayChange = true;
            }
            catch (Exception ex)
            {
                Log.L_I.WriteError(NameClass, ex);
            }
        }
示例#5
0
 /// <summary>
 /// 处理残材检测
 /// </summary>
 /// <param name="cellName">算子序号</param>
 /// <param name="pos">表明用的第几次拍照的结果</param>
 /// <param name="htResult"></param>
 /// <returns></returns>
 public StateComprehensive_enum DealSharpness(string cellName, Pos_enum pos, out Hashtable htResult)
 {
     htResult = null;
     double[] dblResult;
     try
     {
         #region 空跑
         if (ParStateSoft.StateMachine_e == StateMachine_enum.NullRun)
         {
             ShowState(string.Format("相机{0}空跑默认无残边", g_NoCamera));
             FinishPhotoPLC(1);
             return(StateComprehensive_enum.True);
         }
         #endregion
         //获取算子计算结果
         StateComprehensive_enum StateComprehensive_e = g_BaseDealComprehensive.DealComprehensivePosNoDisplay(
             g_UCDisplayCamera, g_HtUCDisplay, pos, out htResult);
         ResultSharpness result    = (ResultSharpness)htResult[cellName];
         double          dblThread = ModelParams.WastageThread1;
         if (g_NoCamera == 4)
         {
             dblThread = ModelParams.WastageThread2;
         }
         //对计算结果进行判别
         if (WastageDetection.CalcSharpnessRatio(result.Deviation_L, dblThread,
                                                 g_NoCamera, ModelParams.DefaultOKCamera, ModelParams.IfSingleElectrode,
                                                 RegeditMain.R_I.ID, ModelParams.IfRecordData, out dblResult))
         {
             FinishPhotoPLC(1);
             g_UCDisplayCamera.ShowResult("拍照位置:" + pos +
                                          "\nCF清晰度:" + dblResult[0].ToString(ReservDigits) +
                                          "\nTFT清晰度:" + dblResult[1].ToString(ReservDigits) +
                                          "\n比例:" + dblResult[2].ToString(ReservDigits) +
                                          "\n阈值:" + dblThread.ToString(ReservDigits) +
                                          "\nOK");
             return(StateComprehensive_enum.True);
         }
         else
         {
             //连续低清晰度报警
             if (++WastageDetection.WastageInvalidCount[g_NoCamera] > 5)
             {
                 ShowAlarm(string.Format("相机{0}连续低清晰度报警", g_NoCamera));
                 LogicPLC.L_I.WriteRegData1((int)DataRegister1.WastageAlarm, 1);
             }
             else
             {
                 WastageDetection.WastageInvalidCount[g_NoCamera] = 0;
             }
             FinishPhotoPLC(2);
             g_UCDisplayCamera.ShowResult("拍照位置:" + pos +
                                          "\nTFT清晰度:" + dblResult[0].ToString(ReservDigits) +
                                          "\nCF清晰度:" + dblResult[1].ToString(ReservDigits) +
                                          "\n比例:" + dblResult[2].ToString(ReservDigits) +
                                          "\n阈值:" + dblThread.ToString(ReservDigits) +
                                          "\nNG", "red");
             return(StateComprehensive_enum.False);
         }
     }
     catch
     {
         FinishPhotoPLC(2);
         ShowAlarm("残才相机处理过程中发生异常");
         return(StateComprehensive_enum.False);
     }
 }