|
本帖最后由 xustrive 于 2017-9-14 13:54 编辑
问题是这样的,单片机向我发送一串数据, 我能将其拿去做CRC8 的校验. 不知道怎么把发送过来的数据转换成byte[] 数组减去最后两位CRC校验值 传给CRC8函数进行计算.
private void port_DataReceived(object sender, SerialDataReceivedEventArgs e) //串口接收事件
{
try
{
System.Threading.Thread.Sleep(100);//时间延迟 防止丢失
if (s.BytesToRead != 0)
{
byte[] data = new byte[s.BytesToRead];
s.Read(data, 0, data.Length);
for (int i = 0; i < data.Length; i++)
{
string str = Convert.ToString(data, 16).ToUpper();
sn.Add((str.Length == 1 ? "0" + str : str));
}
}
}
catch
{
MessageBox.Show("输出异常");
}
}
--------------------------------CRC8 的校验. --------------------------------
public static byte CRC8(byte[] buffer)
{
byte crc = 0;
for (int j = 0; j < buffer.Length; j++)
{
crc ^= buffer[j];
for (int i = 0; i < 8; i++)
{
if ((crc & 0x01) != 0)
{
crc >>= 1;
crc ^= 0x8c;
}
else
{
crc >>= 1;
}
}
}
return crc;
} //CRC8 计算
|
|