示例#1
0
        private void debug1ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //Image<Gray,byte> debugImage = new Image<Gray, byte>("1.jpg");
            //ImageViewerManager.Instance().ShowPicture(debugImage);
            SampleThreadFunc();
            ColorDetectResult result = Cv.DetectColor(new Image <Rgb, byte>(TcpIpFileManager.GetInstance().FilePath));

            TcpIpFileManager.GetInstance().IsFileFresh = false;
            WriteToConsole("Color Det= " + result.Result);
        }
示例#2
0
        public static bool IsT1G1End()
        {
            if (!FinalSign)
            {
                return(false);
            }
            ColorDetectResult result = Cv.DetectColor(new Image <Rgb, byte>(TcpIpFileManager.GetInstance().FilePath));

            if (result.Result > 180)
            {
                while (true)
                {
                    FormMain.GetInstance().SampleThreadFunc();
                    Image <Rgb, Byte> rawImage   = new Image <Rgb, byte>((Bitmap)TcpIpFileManager.GetInstance().NowImage);
                    double[]          threshold1 = new double[]
                    {
                        200
                    };
                    double[] threshold2 = new double[]
                    {
                        100, 200, 300
                    };
                    CannyTextureAnalysisResult textureAnalysisResult = Cv.AutoCannyTextureAnalysis(rawImage, threshold1, threshold2, 0);
                    TcpIpFileManager.GetInstance().IsFileFresh       = false;
                    float threshold = 0.05f;
                    if (Math.Abs(textureAnalysisResult.Diff - 0.15) < threshold)
                    {
                        return(true);
                    }
                    else
                    {
                        if (textureAnalysisResult.Diff > threshold)
                        {
                            Arduino.GetInstance().Send(MotorDirection.Forward, 80, MotorDirection.Backward, 80, 300);
                        }
                        else if (textureAnalysisResult.Diff < -threshold)
                        {
                            Arduino.GetInstance().Send(MotorDirection.Backward, 80, MotorDirection.Forward, 80, 300);
                        }
                    }
                    while (StateManager.ArduinoState.IsBusy)
                    {
                        Thread.Sleep(100);
                    }
                }
            }
            else
            {
                return(false);
            }
        }
示例#3
0
        public static void T1G2()
        {
            Arduino.GetInstance().GoStraight(110);
            while (StateManager.ArduinoState.IsBusy)
            {
                Thread.Sleep(100);
            }
            FormMain.GetInstance().SampleThreadFunc();
            TcpIpFileManager.GetInstance().IsFileFresh = false;
            FormMain.GetInstance().SampleThreadFunc();
            ColorDetectResult result = Cv.DetectColor(new Image <Rgb, byte>(TcpIpFileManager.GetInstance().FilePath));

            TcpIpFileManager.GetInstance().IsFileFresh = false;
            Arduino.GetInstance().GoStraight(7);
            while (StateManager.ArduinoState.IsBusy)
            {
                Thread.Sleep(100);
            }
            //if (result.Result <= 130 &&  result.Result >= 60)							//Yellow Green
            //{
            //	FormMain.GetInstance().WriteToConsole("YELLOW");
            //	Arduino.GetInstance().PidTurn(90);
            //	while (StateManager.ArduinoState.IsBusy)
            //	{
            //		Thread.Sleep(100);
            //	}
            //	Arduino.GetInstance().GoStraight(180);
            //	while (true)
            //	{
            //		Arduino.GetInstance().GoStraight(3);
            //		while (StateManager.ArduinoState.IsBusy)
            //		{
            //			Thread.Sleep(100);
            //		}
            //		Arduino.GetInstance().GetDistance();
            //		float dis = Arduino.GetInstance().SonicDistance;
            //		if (dis > 40 && dis < 80)
            //		{
            //			break;
            //		}
            //	}
            //	while (StateManager.ArduinoState.IsBusy)
            //	{
            //		Thread.Sleep(100);
            //	}
            //	Arduino.GetInstance().PidTurn(-90);
            //	while (StateManager.ArduinoState.IsBusy)
            //	{
            //		Thread.Sleep(100);
            //	}

            //}
            //else if (result.Result <= 240)															//Blue
            //{
            //	FormMain.GetInstance().WriteToConsole("BLUE");
            //	Arduino.GetInstance().PidTurn(135);
            //	while (StateManager.ArduinoState.IsBusy)
            //	{
            //		Thread.Sleep(100);
            //	}
            //	Arduino.GetInstance().GoStraight(75);
            //	while (StateManager.ArduinoState.IsBusy)
            //	{
            //		Thread.Sleep(100);
            //	}
            //	Arduino.GetInstance().PidTurn(-55);
            //	while (StateManager.ArduinoState.IsBusy)
            //	{
            //		Thread.Sleep(100);
            //	}

            //	//Finish
            //	Arduino.GetInstance().GoStraight(160);
            //	while (true)
            //	{
            //		Arduino.GetInstance().GoStraight(3);
            //		while (StateManager.ArduinoState.IsBusy)
            //		{
            //			Thread.Sleep(100);
            //		}
            //		Arduino.GetInstance().GetDistance();
            //		float dis = Arduino.GetInstance().SonicDistance;
            //		if (dis > 40 && dis < 80)
            //		{
            //			break;
            //		}
            //	}
            //	Arduino.GetInstance().PidTurn(-80);


            //}
            if (result.Result <= 320)                                                                                                                                   //Violet
            {
                FormMain.GetInstance().WriteToConsole("VIOLET");
                Arduino.GetInstance().PidTurn(45);
                while (StateManager.ArduinoState.IsBusy)
                {
                    Thread.Sleep(100);
                }
                Arduino.GetInstance().GoStraight(75);
                while (StateManager.ArduinoState.IsBusy)
                {
                    Thread.Sleep(100);
                }
                Arduino.GetInstance().PidTurn(45);
                while (StateManager.ArduinoState.IsBusy)
                {
                    Thread.Sleep(100);
                }

                //Finish
                Arduino.GetInstance().GoStraight(160);
                while (true)
                {
                    Arduino.GetInstance().GoStraight(3);
                    while (StateManager.ArduinoState.IsBusy)
                    {
                        Thread.Sleep(100);
                    }
                    Arduino.GetInstance().GetDistance();
                    float dis = Arduino.GetInstance().SonicDistance;
                    if (dis > 40 && dis < 80)
                    {
                        break;
                    }
                }
                Arduino.GetInstance().PidTurn(-90);
            }
            else
            {
                throw new LogicErrorException();
            }
        }