使用C#做RS232串口通讯程序,接收方法 private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            byte[] b = new byte[serialPort1.BytesToRead];
            serialPort1.Read(b, 0, b.Length);
            string data = "";            foreach (var i in b)
            {
                data += i.ToString() + "-";
            }            textBox1.Text += "收到数据:" + data + "\r\n";
        }
这样的话,当ReceivedBytesThreshold=1时 每次收到的数据就会是美8个字节激活一次这个方法也就是说serialPort1.BytesToRead=8。分析原因是缓冲区还没全部缓冲就开始Read。所以在Read方法前加一行
Thread.Sleep(100);
的话  就能够接收到全部的数据了,也就是说serialPort1.BytesToRead=发送的全部数据的长度。这个问题怎么解决呢?怎么让他一次触发,然后不需要Thread.Sleep呢?也就是说怎么判断内容结束了?