C#串口接收问题
给位大侠,我有一个串口接收问题,每次给单片机发送数据,然后让单片机回发同样的数据给我,用于显示在文本框中,可是我发现当用调试运行的时候数据可以正常显示,但不用调试直接运行时数据就不能正常显示,小弟真不知错在哪儿,以下是我的程序,希望各位不惜指正一下,感激不尽
     void comm_DataReceived(object sender, SerialDataReceivedEventArgs e)
         {
             try
             {
                 buffer.Clear();
                 Listening = true;//设置标记,说明我已经开始处理数据,一会儿要使用系统UI的。    
                 int n = comm.BytesToRead;//先记录下来,避免某种原因,人为的原因,操作几次之间时间长,缓存不一致    
                 byte[] buf = new byte[n];//声明一个临时数组存储当前来的串口数据                    
                 comm.Read(buf, 0, n);//读取缓冲数据                 
                 //<协议解析>    
                 buffer.AddRange(buf);
                 bool data_1_catched = false;//缓存记录数据是否捕获到    
                 //2.完整性判断    
                 zs_sjzhen = new byte[buffer.Count];
                 if (buffer.Count >= 4)//至少要包含头(1字节)+命令(1字节)+长度(1字节)+校验(1字节)    
                 {
                     //2.1 查找数据头    
                     if (buffer[0] == 0x7E)
                     {                         
                         byte checksum = 0;
                         for (int i = 0; i < buffer.Count-1; i++)//7表示校验之前的位置    
                         {
                             checksum ^= buffer[i];
                         }                         
                         //至此,已经被找到了一条完整数据。我们将数据直接分析,或是缓存起来一起分析    
                         buffer.CopyTo(0, zs_sjzhen, 0, buffer.Count);//复制一条完整数据到具体的数据缓存    
                         data_1_catched = true;
                         buffer.RemoveRange(0, buffer.Count);//正确分析一条数据,从缓存中移除数据。    
                     }
                     else
                     {
                         //这里是很重要的,如果数据开始不是头,则删除数据    
                         buffer.RemoveAt(0);
                     }
                 }
                 //分析数据    
                 if (data_1_catched)
                 {
                     builder.Clear();//清除字符串构造器的内容    
                     //因为要访问ui资源,所以需要使用invoke方式同步ui。    
                     this.Invoke((EventHandler)(delegate
                     {
                         //依次的拼接出16进制字符串    
                         foreach (byte b in zs_sjzhen)
                         {
                             builder.Append(b.ToString("X2") + " ");
                         }
                         //this.richTextBox1.AppendText(builder.ToString());
                         data_1_catched = false;
                    }));
                     this.Invoke((EventHandler)(delegate
                     {
                         this.richTextBox1.AppendText(builder.ToString());
                         // JYT_StartRunning();
                     }));
                 }  
             }
             finally
             {
                 Listening = false;//我用完了,ui可以关闭串口了。    
             }              
         }
------解决方案--------------------
参考你1L的说法,应该是数据还没有到吧。处理下时间问题。