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();

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