⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainform.cs

📁 WIFI-Robot Basic
💻 CS
📖 第 1 页 / 共 2 页
字号:
        private void OpenMJPEG()
        {


            MJPEGStream mjpegSource = new MJPEGStream();
            mjpegSource.VideoSource = CameraIp;
            OpenVideoSource(mjpegSource);


        }


        // 打开视频源
        private void OpenVideoSource(IVideoSource source)
        {

            this.Cursor = Cursors.WaitCursor;

            CloseFile();

            if (detector != null)
            {
                detector.MotionLevelCalculation = true;
            }


            Camera camera = new Camera(source, detector);
            camera.Start();

            cameraWindow.Camera = camera;

            statIndex = statReady = 0;

       


            timer.Start();

            this.Cursor = Cursors.Default;
        }


        private void CloseFile()
        {
            Camera camera = cameraWindow.Camera;

            if (camera != null)
            {

                cameraWindow.Camera = null;

                camera.SignalToStop();

                camera.WaitForStop();

                camera = null;

                if (detector != null)
                    detector.Reset();
            }

            if (writer != null)
            {
                writer.Dispose();
                writer = null;
            }
            intervalsToSave = 0;
        }


        private void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            Camera camera = cameraWindow.Camera;

            if (camera != null)
            {

                statCount[statIndex] = camera.FramesReceived;

                if (++statIndex >= statLength)
                    statIndex = 0;
                if (statReady < statLength)
                    statReady++;

                float fps = 0;


                for (int i = 0; i < statReady; i++)
                {
                    fps += statCount[i];
                }
                fps /= statReady;

                statCount[statIndex] = 0;

                fpsPanel.Text = fps.ToString("F2") + " fps";
            }


            if (intervalsToSave > 0)
            {
                if ((--intervalsToSave == 0) && (writer != null))
                {
                    writer.Dispose();
                    writer = null;
                }
            }
        }


        private void noneMotionItem_Click(object sender, System.EventArgs e)
        {
            detector = null;
            detectorType = 0;
            SetMotionDetector();
        }

      


        private void SetMotionDetector()
        {
            Camera camera = cameraWindow.Camera;


            if (detector != null)
            {
                detector.MotionLevelCalculation = true;
            }


            if (camera != null)
            {
                camera.Lock();
                camera.MotionDetector = detector;


                statIndex = statReady = 0;
                camera.Unlock();
            }
        }


        private void motionItem_Popup(object sender, System.EventArgs e)
        {
            MenuItem[] items = new MenuItem[]
			{
				noneMotionItem
			};

            for (int i = 0; i < items.Length; i++)
            {
                items[i].Checked = (i == detectorType);
            }

       
        }



   

        private void btnOpenVideo_Click(object sender, EventArgs e)
        {
            OpenMJPEG();
        }






        //读取INI
        public string ReadIni(string Section, string Ident, string Default)
        {
            Byte[] Buffer = new Byte[65535];
            int bufLen = GetPrivateProfileString(Section, Ident, Default, Buffer, Buffer.GetUpperBound(0), FileName);
            string s = Encoding.GetEncoding(0).GetString(Buffer);
            s = s.Substring(0, bufLen);
            return s.Trim();
        }
        private void GetIni()
        {
            CameraIp = ReadIni("VideoUrl", "videoUrl", "");
            ControlIp = ReadIni("ControlUrl", "controlUrl", "");
            Port = ReadIni("Port", "port", "");


            CMD_Forward = ReadIni("Forward", "forward", "");
            CMD_Backward = ReadIni("Backward", "backward", "");
            CMD_TurnLeft = ReadIni("Left", "left", "");
            CMD_TurnRight = ReadIni("Right", "right", "");
            CMD_Stop = ReadIni("Stop", "stop", "");
            CMD_EngineUp = ReadIni("GearUp", "gearUp", "");
            CMD_EngineDown = ReadIni("GearDown", "gearDown", "");


            btCom = ReadIni("BTCOM", "btcom", "");
            btBaudrate = ReadIni("BTBaudrate", "btbaudrate", "");

        }
        

        private void SYSConfig_Click(object sender, EventArgs e)
        {
            Config config = new Config();
            config.ShowDialog();
        }

   

        private void panel_Paint(object sender, PaintEventArgs e)
        {

        }

        private void MainForm_Load(object sender, EventArgs e)
        {
            GetIni();
        }

        private void menuItem5_Click(object sender, EventArgs e)
        {
           
            InitWIFI(ControlIp, Port);//初始化WIFI
        }

        private void menuItem6_Click(object sender, EventArgs e)
        {
            //开启蓝牙模式
            controlType = 1;
           


        }

       


        //初始化WIFI
        public void InitWIFI(string controlIp, string port)
        {
           
            controlType = 0;
            this.menuItem5.Checked = true;
           
        }


        private bool send_flag = true;
        private void buttonForward_Click(object sender, EventArgs e)
        {
            if (send_flag)
            {
                send_flag = false;
                if (controlType == 0)
                {
                    Thread t;
                    t = new Thread(delegate()
                    {
                        RobotEngine.SendDataInSocket(CMD_Forward, ControlIp, Port);
                    });
                    t.Start();
                }
                else if (controlType == 1)
                {
                    RobotEngine.SendDataInComm(comm, CMD_Forward);
                }
                else
                {
                    MessageBox.Show("请先选择一种控制方式!", "控制发送提示!");
                }
            }
            
        }

        private void buttonLeft_Click(object sender, EventArgs e)
        {
            if (send_flag)
            {
                send_flag = false;
                if (controlType == 0)
                {
                    Thread t;
                    t = new Thread(delegate()
                    {
                        RobotEngine.SendDataInSocket(CMD_TurnLeft, ControlIp, Port);
                    });
                    t.Start();
                }
                else if (controlType == 1)
                {
                    RobotEngine.SendDataInComm(comm, CMD_TurnLeft);
                }
                else
                {
                    MessageBox.Show("请先选择一种控制方式!", "控制发送提示!");
                }
            }
        }

        private void buttonRight_Click(object sender, EventArgs e)
        {
            if (send_flag)
            {
                send_flag = false;
                if (controlType == 0)
                {
                    Thread t;
                    t = new Thread(delegate()
                    {
                        RobotEngine.SendDataInSocket(CMD_TurnRight, ControlIp, Port);
                    });
                    t.Start();

                }
                else if (controlType == 1)
                {
                    RobotEngine.SendDataInComm(comm, CMD_TurnRight);
                }
                else
                {
                    MessageBox.Show("请先选择一种控制方式!", "控制发送提示!");
                }
            }
        }

        private void buttonBackward_Click(object sender, EventArgs e)
        {
            if (send_flag)
            {
                send_flag = false;
                if (controlType == 0)
                {
                    Thread t;
                    t = new Thread(delegate()
                    {
                        RobotEngine.SendDataInSocket(CMD_Backward, ControlIp, Port);
                    });
                    t.Start();
                }
                else if (controlType == 1)
                {
                    RobotEngine.SendDataInComm(comm, CMD_Backward);
                }
                else
                {
                    MessageBox.Show("请先选择一种控制方式!", "控制发送提示!");
                }
            }
        }

        private void buttonStop_Click(object sender, EventArgs e)
        {
            send_flag = true;
            if (controlType == 0)
             {
                 Thread t;
                 t = new Thread(delegate()
                 {
                     RobotEngine.SendDataInSocket(CMD_Stop, ControlIp, Port);
                 });
                 t.Start();
  
             }
            else if (controlType == 1)
            {
                RobotEngine.SendDataInComm(comm, CMD_Stop);
            }
            else
            {
                MessageBox.Show("请先选择一种控制方式!", "控制发送提示!");
            }
        }

      

            private void MainForm_FormClosed(object sender, FormClosedEventArgs e)
            {
                Process.GetCurrentProcess().Kill();
               
            }

            private void MainForm_KeyDown(object sender, KeyEventArgs e)
            {
                if (e.KeyCode == Keys.W)
                {
                   
                    buttonForward.PerformClick();

                }
                else if (e.KeyCode == Keys.S)
                {
                  
                    buttonBackward.PerformClick();

                }
                else if (e.KeyCode == Keys.A)
                {
                    buttonLeft.PerformClick();

                }
                else if (e.KeyCode == Keys.D)
                {
                   
                    buttonRight.PerformClick();

                }
       
               
            }

            private void MainForm_KeyUp(object sender, KeyEventArgs e)
            {
                buttonStop.PerformClick();
            }
    }

    
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -