当前位置: 代码迷 >> C# >> SerialPort类读取BytesToRead出错
  详细解决方案

SerialPort类读取BytesToRead出错

热度:15   发布时间:2016-05-05 04:28:55.0
SerialPort类读取BytesToRead报错
  SerialPort serialPort = (SerialPort)serialPortobj;
            //serialPort.ReadExisting();
            System.Threading.Thread.Sleep(0);

            serialPort.ReadTimeout = 1000;
            try
            {

                //阻塞到读取数据或超时 
                byte firstByte = Convert.ToByte(serialPort.ReadByte());//读取缓冲区的第一个字节
                //int bytesRead = serialPort.BytesToRead;//获取接收到缓冲区的字节数(程序到这就报错
                byte[] bytesData = new byte[serialPort.BytesToRead + 1];
                bytesData[0] = firstByte;
                for (int i = 1; i <= serialPort.BytesToRead; i++)
                {
                    bytesData[i] = Convert.ToByte( serialPort.ReadByte());    
                }
                this.TXTRecieve.Text = System.Text.Encoding.Default.GetString(bytesData);
            }
            catch (Exception e)
            {
                //处理超时错误   
                Response.Write("<script language='javascript'>alert("+e.Message.ToString()+");</script>");
                 
            }
             serialPort.Close();

------解决思路----------------------
引用:
Quote: 引用:

不能这么写报异常。。。。如果你异常里面有其他的符号,这句话就有问题。。。
注释掉了,就是加红字的那句,到那就停,疯了

 byte firstByte = Convert.ToByte(serialPort.ReadByte());//读取缓冲区的第一个字节
                //int bytesRead = serialPort.BytesToRead;//获取接收到缓冲区的字节数(程序到这就报错)
你上面读取了缓冲区,下面一句也是读取缓冲区。。。