1.
点击上面的实时数据,下面是方法
private void toolStripButton3_Click(object sender, EventArgs e)
        {
            if (this.panel1.Controls.Count > 0)
            {
                Control ctl = this.panel1.Controls[0];
                if (ctl is 实时数据)
                {
                    实时数据 fmChild = ctl as 实时数据;
                    fmChild.ClosePort();
                }
                else if (ctl is 单灯控制)
                {
                    单灯控制 fmChild = ctl as 单灯控制;
                    fmChild.Close();
                }
            }
            this.panel1.Controls.Clear();
            实时数据 realdata = new 实时数据();
            realdata.FormBorderStyle = FormBorderStyle.None;
            realdata.TopLevel = false;
            this.panel1.Controls.Add(realdata);
            realdata.Show();
        }
2.实时数据form页面的不断地调用串口配置方法代码如下:
//串口参数设置
        public void SetPot(SerialPort sp, string PortName, string BaudRate, string DateBit, string StopBit, string CheckBit)
        {
            if (sp.IsOpen)
            {
                sp.Close();
            }
            if (PortName == "")
            {
                MessageBox.Show("端口名不能为空");
                return;
            }
            sp.PortName = PortName;//端口名
            if (BaudRate == "")
            {
                MessageBox.Show("波特率不能为空");
                return;
            }
            sp.BaudRate = int.Parse(BaudRate);//波特率
            if(DateBit=="")
            {
                MessageBox.Show("数据位不能为空");
                return;
            }
            sp.DataBits = int.Parse(DateBit);//数据位
            //停止位
            switch (StopBit)           
            {
                case "1":
                    sp.StopBits = StopBits.One;
                    break;
                case "1.5":
                    sp.StopBits = StopBits.OnePointFive;
                    break;
                case "2":
                    sp.StopBits = StopBits.Two;
                    break;
                default:
                    sp.StopBits = StopBits.One;
                    break;
            }  
            //校验位
            string s = CheckBit;
            switch(CheckBit)
            {
                case "无": 
                    sp.Parity = Parity.None;
                    break;
                case "奇校验": 
                    sp.Parity = Parity.Odd;
                    break;
                case "偶校验": 
                    sp.Parity = Parity.Even;
                    break;
                default: sp.Parity = Parity.None;
                    break;
            }
            //sp.DiscardOutBuffer();
            //sp.DiscardInBuffer();
            //读取超时设定
            sp.ReadTimeout = 500;
            //写超时设定
            sp.WriteTimeout=5000;
            //设置缓冲区大小
            sp.ReadBufferSize = 4096;
            sp.WriteBufferSize = 4096;
            sp.Open(); 
        }   
当再次点击“实时数据“时就报错问了许多人了,当然都是网上问的,都没解决,只好找大神帮忙了C#串口定时