共接收6位16进制
前三位是有效数据
第四位是校验位
前三位与第四位的异或等于0
后两位为回车换行
我现在出现的问题是,还有些不合法数据接受过来
是偶尔出现的,大家帮忙看看,代码如下:  private void selMonitor_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            try
            {
                byte[] buffer = new byte[6];
                byte check = 0;
                int read = sp.Read(buffer, 0, buffer.Length);
                for (int i = 0; i < buffer.Length; i++)
                {
                    check = (byte)(check ^ buffer[i]);                }
                int nValue = 0;
                if (check == 7)//相当于后两位的异或
                {
                    byte[] value = new byte[4];
                    value[0] = buffer[2];
                    value[1] = buffer[1];
                    value[2] = buffer[0];
                    if (buffer[0] >= 0x80)
                    {
                        value[3] = 0xff;
                    }
                    else
                    {
                        value[3] = 0x00;
                    }
                    nValue = BitConverter.ToInt32(value, 0);
                }
  
            }
            catch (System.Exception ex)
            {
                PubClass.ReportError(ex.Message);            }
        }
nValue就是最后的有效值