Example #1
0
        //
        public void Stime()
        {
            timer = new Timer();
            //一秒间隔
            timer.Interval = 1000;
            timer.Tick    += (s, e) =>
            {
                Ltime++;
                label1.Text = Ltime.ToString();//显示查询几秒

                if (Ltime >= 5)
                {
                    label1.Text   = "搜索时间大于5秒已超时";
                    label2.Text   = "对不起,系统不包含您输入的单词";
                    textBox2.Text = "";
                    //显示网站链接
                    linkLabel1.Visible = true;
                    linkLabel1.Text    = "对不起请尝试使用(有道youdao)在线翻译:" + "\r\n\n\t" + textBox1.Text.Trim();
                    timer.Stop();
                    Ltime = 0;
                    //使linkWebSearch控件显示的网址在textbox控件上面
                    linkLabel1.BringToFront();
                }
                else//那就是5秒内显示出结果了
                {
                    linkLabel1.Visible = false;
                    label1.Text        = Ltime.ToString();
                }
            };
        }
Example #2
0
        protected override void LogicImpl()
        {
            var Para = Product.Inst;

            switch (LG.Step)
            {
            case 1:
                if (TaskMain.sticklogic.feeder.GetBusy)
                {
                    return;
                }
                TakeCount   = 0;  //取料个数
                whichNuzzle = 0;  //哪个吸嘴
                LG.StepNext(2);
                break;

            case 2:     //Z轴抬起到安全高度
                for (int i = 0; i < CTRCard.Axis_Z.Count; i++)
                {
                    CTRCard.Axis_Z[i].MC_MoveAbs(Para.Stickdata.ZSafePos);    //Z到安全位置
                    CTRCard.Axis_R[i].MC_MoveAbs(0);
                }
                LG.StepNext(3);
                break;

            case 3:
                if (CTRCard.ZArrive && CTRCard.RArrive)
                {
                    bool isCanTake = false;
                    if (
                        Para.Stickdata.NuzzleForbit[whichNuzzle] == false &&
                        Para.ProcessData.NuzzlePara[whichNuzzle].isHave == false)    //吸嘴没被禁用且没有料
                    {
                        isCanTake = true;
                    }
                    else
                    {
                        if (Para.Stickdata.NuzzleForbit[whichNuzzle] == true)    //吸嘴禁用取料加1
                        {
                            TakeCount++;
                        }
                    }
                    if (isCanTake)
                    {
                        if (TakeCount == 1 && whichNuzzle == 1)
                        {
                            LG.StepNext(7);    //如果左吸嘴取过一次且目前可以取料的是右吸嘴
                        }
                        else
                        {
                            LG.StepNext(4);    //可以取料  去取料位置
                        }
                    }
                    else
                    {
                        LG.StepNext(14);    //去 判断
                    }
                }
                break;

            case 4:
                if (whichNuzzle == 0)
                {
                    Ltime.Stop();
                    Lsticktime = (int)Ltime.ElapsedMilliseconds;
                    Ltime.Restart();
                }
                else
                {
                    Rtime.Stop();
                    Rsticktime = (int)Rtime.ElapsedMilliseconds;
                    Rtime.Restart();
                }
                CTRCard.Axis_X.MC_MoveAbs(Para.Stickdata.FeederPara.TakePos.X);
                CTRCard.Axis_Y.MC_MoveAbs(Para.Stickdata.FeederPara.TakePos.Y); //到拍照位置
                DeviceRsDef.Q_UpLighSource.ON();                                //上光源打开
                LG.StepNext(5);
                break;

            case 5:
                if (CTRCard.XYArrive)
                {
                    //VisionProject.Instance.visionApi.TrigRun(0, 2);//触发拍照
                    LG.StepNext(6);
                }
                break;

            case 6:
                if (Product.Inst.IsAging)
                {
                    if (LG.Delay(200))
                    {
                        CCDresult.X = 0;
                        CCDresult.Y = 0;
                        CCDresult.R = 0;
                        LG.StepNext(7);
                    }
                }
                else
                {
                    //if (VisionProject.Instance.visionApi.Trig == false)//相机触发的值
                    //{
                    //    if (VisionProject.Instance.visionApi.Error == 0)//相机接口错误码
                    //    {
                    //        LG.StepNext(7);//xy到取标位置
                    //        DeviceRsDef.Q_UpLighSource.OFF();//上相机光源关闭
                    //    }
                    //    else
                    //    {
                    //        LG.StepNext(101);//重新送料
                    //        CTCount++;//拍照识别次数
                    //        if (CTCount > 2)//大于2就视觉NG
                    //        {
                    //            CTCount = 0;//重新置零
                    //            Alarm.SetAlarm(AlarmLevelEnum.Level2, "Feeder视觉NG");//报警
                    //        }
                    //    }
                    //}
                }
                break;

            case 7:
                CTRCard.Q_Blow[whichNuzzle].OFF();    //吹气关闭
                if (Product.Inst.IsAging)
                {
                    if (LG.Delay(500))
                    {
                        CCDresult.X = 0;
                        CCDresult.Y = 0;
                        CCDresult.R = 0;
                    }
                }
                //else if (VisionProject.Instance.visionApi.Result.Length == 2)
                //{
                //    CCDresult.X = (float)VisionProject.Instance.visionApi.Result[TakeCount].X;//ccd的x值[改为链表形式]
                //    CCDresult.Y = (float)VisionProject.Instance.visionApi.Result[TakeCount].Y;//ccd的y值
                //    CCDresult.R = -(float)VisionProject.Instance.visionApi.Result[TakeCount].R;//ccd的r值
                //}
                //else
                //{
                //    CCDresult.X = (float)VisionProject.Instance.visionApi.Result[0].X;//ccd的x值[改为链表形式]
                //    CCDresult.Y = (float)VisionProject.Instance.visionApi.Result[0].Y;//ccd的y值
                //    CCDresult.R = -(float)VisionProject.Instance.visionApi.Result[0].R;//ccd的r值
                //}
                CTRCard.Axis_X.MC_MoveAbs(TakePos(whichNuzzle).X + (float)CCDresult.X);
                CTRCard.Axis_Y.MC_MoveAbs(TakePos(whichNuzzle).Y + (float)CCDresult.Y);
                CTRCard.Axis_R[whichNuzzle].MC_MoveAbs((float)CCDresult.R);
                LG.StepNext(8);
                break;

            case 8:    //XY到位后判断缓取,开始下压时打开吸嘴
                if (CTRCard.RArrive && CTRCard.XYArrive)
                {
                    if (whichNuzzle == 0)
                    {
                        CTRCard.Axis_Z[whichNuzzle].MC_MoveAbs(Para.Stickdata.TakeLabelPara.LiftTakePos_Z);
                    }
                    else
                    {
                        CTRCard.Axis_Z[whichNuzzle].MC_MoveAbs(Para.Stickdata.TakeLabelPara.RightTakePos_Z);
                    }
                    LG.StepNext(9);
                }
                break;

            case 9:
                if (CTRCard.ZArrive)
                {
                    CTRCard.Q_Nuzzle[whichNuzzle].ON();   //真空打开
                    CTRCard.Q_Blow[whichNuzzle].OFF();    //吹气关闭
                    LG.StepNext(10);
                }
                break;

            case 10:
                if (whichNuzzle == 0)
                {
                    Para.Stickdata.TakeLabelPara.TakeLableWholeLNum++;
                }
                else
                {
                    Para.Stickdata.TakeLabelPara.TakeLableWholeRNum++;
                }
                LG.StepNext(11);
                break;

            case 11:    //取标延时后Z轴抬起(缓抬)
                if (whichNuzzle == 0 && LG.Delay(Para.Stickdata.TakeLabelPara.LiftTakeDelay))
                {
                    LG.StepNext(201);
                }
                else if (whichNuzzle == 1 && LG.Delay(Para.Stickdata.TakeLabelPara.RightTakeDelay))
                {
                    LG.StepNext(201);
                }
                break;

            case 201:
                if (Para.Stickdata.FeederPara.FeederMode[1])
                {
                    //剥标板回退
                    LG.StepNext(202);
                }
                else
                {
                    LG.StepNext(12);
                }
                break;

            case 202:
                if (Para.Stickdata.FeederPara.FeederMode[1])                         //拨标板回退停止
                {
                    CTRCard.Axis_Z[whichNuzzle].MC_MoveAbs(Para.Stickdata.ZSafePos); //Z轴抬起
                    LG.StepNext(13);
                }
                break;

            case 12:    //取标延时后Z轴抬起
                if (CTRCard.ZArrive)
                {
                    CTRCard.Axis_Z[whichNuzzle].MC_MoveAbs(Para.Stickdata.ZSafePos);
                    LG.StepNext(13);
                }
                break;

            case 13:                 //检测真空//add
                if (CTRCard.ZArrive) //所有轴都到达
                {
                    if (!Product.Inst.IsAging && CTRCard.I_Vacuum[whichNuzzle].Value == false)
                    {
                        TakeNum++;
                        if (TakeNum >= 2)
                        {
                            TakeNum = 0;
                            LG.StepNext(101);                                        //运行状态下进入14 重新剥标
                            CTRCard.Q_Nuzzle[whichNuzzle].Value = false;             //吸真空电磁阀
                            Alarm.SetAlarm(AlarmLevelEnum.Level2, "取料失败,请检查真空和真空感应");
                            Para.ProcessData.NuzzlePara[whichNuzzle].isHave = false; //是否有料
                        }
                        else
                        {
                            LG.StepNext(4);    //到拍照位
                        }
                    }
                    else
                    {
                        if (whichNuzzle == 0)
                        {
                            Para.Stickdata.TakeLabelPara.TakeLableLNum++;
                        }
                        else
                        {
                            Para.Stickdata.TakeLabelPara.TakeLableRNum++;
                        }
                        LG.StepNext(14);                                        //结束
                        Para.ProcessData.NuzzlePara[whichNuzzle].isHave = true; //有料
                    }
                }
                break;

            case 101:
                if (CTRCard.ZArrive)
                {
                    LG.StepNext(4);
                }
                break;

            case 14:    //结束
                if (CTRCard.ZArrive)
                {
                    whichNuzzle++;    //吸嘴换成另一个吸嘴
                    TakeCount++;
                    if (whichNuzzle >= 2)
                    {
                        LG.StepNext(15);
                    }
                    else
                    {
                        LG.StepNext(2);
                    }
                }
                break;

            case 15:
                if (TakeCount >= 2)
                {
                    LG.StepNext(0xef);
                }
                //else if (VisionProject.Instance.visionApi.Result.Length == 1)
                //{
                //    TakeCount = 0;
                //    LG.StepNext(0xef);
                //}
                else if (Para.ProcessData.NuzzlePara[0].isHave == true &&
                         Para.ProcessData.NuzzlePara[1].isHave == true)
                {
                    TakeCount = 0;
                    LG.StepNext(0xef);
                }
                else
                {
                    LG.StepNext(2);
                }
                break;

            case 0xef:
                LG.End();
                break;
            }
        }