Visual studio C#上位机数据接收异常


  Thread.Sleep(100);
            int receiveData = serialPort1.BytesToRead;        //读取缓存区字节数目
            textBox15.Text = Convert.ToString(receiveData);//数据长度为40
            DateTime ReadStartTime = DateTime.Now;
            byte[] rdata=new byte[serialPort1.BytesToRead];这里数据长度为0,并且没有数据内容
                //try
                //{ 
                    serialPort1.Read(rdata, 0, rdata.Length);
                //}
               // catch
                //{
               //     MessageBox.Show("读取数据失败,请检查串口号", "失误");
                //}
            int q = 0;
            q = serialPort1.BytesToRead;
                textBox15.Text=textBox15.ToString() + "     "+q;//数据长度为0
                int i=0;
                //for (i = 0; i < serialPort1.BytesToRead; )
                //{
                     foreach (byte member in rdata)
                    {
                    Readbuff[i] = (byte)member;
                    i++;
                    // }
                 }
                Thread.Sleep(10);
                serialPort1.DiscardInBuffer();
                serialPort1.DiscardOutBuffer();
                analysisdata();
                Thread.Sleep(10);

使用的是Visual studio的Framework4.7版,数据判断接收的第一次长度为40,后面数据长度突然变为0,而且没有数据内容。这可能与什么有关?

你有多个线程,或多个事件在调用同一个端口的接收

就是serialPort1.Read()只能调用一次吗?C#萌新一枚