byte[] SendData=Encoding.ASCII.GetBytes(textBox1.Text);
byte[] ReceiveData=Encoding.ASCII.GetBytes(textBox2.Text);
int Overtime=300;
serialPort1.DiscardInBuffer(); //清空接收缓冲区
 serialPort1.Write(SendData, 0, SendData.Length);   
System.Threading.Thread.Sleep(50);   
int num = 0, ret = 0;   
while (num++ < Overtime)   
{   
  if (serialPort1.BytesToRead>= ReceiveData.Length)   
  {   
  break;   
  }   
System.Threading.Thread.Sleep(50);   
}为什么serialPort1.BytesToRead没有值?该serialPort1.BytesToWrite也没有?
求帮助

解决方案 »

  1.   

    serialPort1.DiscardInBuffer(); 你这不是清空了接受缓存区嘛,那数据不就删除了吗?
      

  2.   

    if (serialPort1.BytesToRead>= ReceiveData.Length) 
    即使有,也是小于 ReceiveData.Length
      

  3.   

    textBox2.Text中有字符吗?空字符根本走不到while中啊
      

  4.   

    while (num++ < Overtime)   
    {   
      //if (serialPort1.BytesToRead>= ReceiveData.Length)   
      //{   
      //break;   
      //}   
    string text =serialPort1.BytesToRead;
    System.Threading.Thread.Sleep(50);   //此行设置断点,看看上一行有没有数据 }
      

  5.   


    byte[] SendData=Encoding.ASCII.GetBytes(textBox1.Text); //要发送的字节数组
    byte[] ReceiveData=Encoding.ASCII.GetBytes(textBox2.Text);
    int Overtime=300;
    serialPort1.DiscardInBuffer(); //清空接收缓冲区
     serialPort1.Write(SendData, 0, SendData.Length);  //serialPort1发送数据 
    System.Threading.Thread.Sleep(50);   
    int num = 0, ret = 0;   
    while (num++ < Overtime)   
    {   
      //问题在这,当前只是serialPort1发了数据出去,没有任何COM对象给serialPort1发送过数据,
      //BytesToRead会一直为0
      if (serialPort1.BytesToRead>= ReceiveData.Length)   
      {   
      break;   
      }   
    System.Threading.Thread.Sleep(50);   
    }
      

  6.   

    你的意思是我发送个数据过去,然后那边在返回一个结果过来。serialPort1.BytesToRead才会有数据字节对吧   才能用Read读取到  是吗?
      

  7.   

    private void selMonitor_DataReceived(object sender, SerialDataReceivedEventArgs e)
            {
                try
                {
                    byte[] data = new byte[this.selMonitor.BytesToRead];
                    selMonitor.Read(data, 0, data.Length);
                    this.Invoke(interfaceUpdateHandle, new string[] { BitConverter.ToString(data) });
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.ToString());
                }
            }