首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

c#串口疏失

2013-08-13 
c#串口出错1.点击上面的实时数据,下面是方法private void toolStripButton3_Click(object sender, EventAr

c#串口出错
1.c#串口疏失
点击上面的实时数据,下面是方法
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#串口疏失
问了许多人了,当然都是网上问的,都没解决,只好找大神帮忙了
[解决办法]
你换一个端口试试,在楼上的界面上强制更换端口号;
还有就是,你要确保你再打开该端口时,没有其他地方在使用它,而且每次打开后,一定要想着关闭。
[解决办法]
对端口的访问被拒绝,一般就是这个端口已经被打开了,串口不是共享资源,看下有没有别的程序在使用串口,或者在你写的程序中别的地方打开了COM7

热点排行