共接收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就是最后的有效值
但是有时候就会出现几千千克的情况