计算串口c#

时间:2016-05-18 10:31:26

标签: c#

我从字节数组中的串口接收数据

如何计算不包括sync(54)和校验和(F2)字节的数据的校验和,并希望与最后一个校验和字节匹配。

已更新:

int bytes = comport.BytesToRead;

            byte indexCRC;
            int sumCRC = 0;
            byte checksumCRC = 0;
            byte checksum;

            byte[] RXBuffer = new byte[bytes];


            comport.Read(RXBuffer, 0, bytes);

            checksum = RXBuffer.Last();

            byte[] RXBufferCRC = new byte[bytes];

            for (indexCRC = 1; indexCRC < RXBufferCRC.Length; indexCRC++)
            {
                sumCRC = sumCRC + RXBufferCRC[indexCRC];
            }

            checksumCRC = (byte)(sumCRC);

2 个答案:

答案 0 :(得分:1)

从1开始索引,但在此之前删除数组的最后一个索引并将数组存储在其他数组中

int Secbytes = comport.BytesToRead;
byte[] SecRXBuffer = new byte[Secbytes];

Array.Copy(SecRXBuffer, VanguardConstants.RECEIVEINDEX, RXBuffer, 0, Secbytes);

byte[] tmp = new byte[bytes - 1];

Array.Copy(RXBuffer, tmp, Secbytes - 1);

for (i = 1; i < tmp.Length; i++)
{
   Sum = (byte)(Sum + tmp[i]);
}

Checksum = ((byte)Sum);

答案 1 :(得分:0)

http://err.se/crc8-for-ibutton-in-c/

以下是C#中CRC8功能的实现。