public void comm_DataReceived(object sender, SerialDataReceivedEventArgs e)
           {
               int n = COM.BytesToRead;//获取接收缓冲区中数据的字节数
               byte[] buf = new byte[n];//声明一个临时数组存储当前来的串口数据  
               COM.Read(buf, 0, n);//读取缓冲数据  
               string strRcv = null;
               //因为要访问ui资源,所以需要使用invoke方式同步ui。  
               if (AllowReceive == true)
               {
                   for (int i = 0; i < buf.Length; i++)
                   {                       strRcv += buf[i].ToString("X2");
                   }
                   UpdateRecevie(strRcv.ToString().ToUpper());
               }
               else {
                   COM.DiscardInBuffer();
               
               } 
       }
         public delegate void UpdateString(object NewData);
         public void UpdateRecevie(object NewData)
         {
             if (this.InvokeRequired)//等待异步
             {
                 UpdateString _myInvoke = new UpdateString(UpdateRecevie);
                 this.Invoke(_myInvoke, new object[] { NewData });
             }
             else
             {
                 tx_Show.AppendText(NewData.ToString() + "\n");
               
                 tx_Show.SelectionStart = tx_Show.Text.Length - 1;
                 tx_Show.ScrollToCaret();
             }
         }实现效果如上图,第一次可以用一行完整实现读取的信息,后面在读信息就把一行完整的信息分成几段显示。 tx_Show.AppendText(NewData.ToString() + "\n");如果不加换行符,就会在上一次的接收数据后面后面的数据。
想要的结果:
 把两次接收的结果分为两行显示。
       以上代码是看别人的