在 C# 中计算块校验字符(BCC)的函数

3 c#

块校验字符(BCC) 我需要一个函数来计算 C# 中的块校验字符(BCC)。01 30 02 4D 21 20 20 03 这是字符串,我如何计算此字符串的“块校验字符”。

BCC = 从 SOH 到 ETX SOH ID STX 代码 ETX BCC 0x01 0x30 0x02 0x40 0x03 的异或

我需要添加 BCC 并将数据发送到 COM。如果可能,请给我一个函数,以便我可以发送“01 30 02 4D 21 20 20 03”并获得密件抄送。

谢谢

Viv*_*vek 5

据我所知,BCC 是给定字节流中所有字节的异或,不包括第一个 SOH 或 STX,直到第一个 ETX 或 EOT。ETX 包含在 BCC 中。在每个 ETX 之后拆分字节流并调用以下函数以获取 BCC。

 public static byte GetBCC(this byte[] inputStream)
    {
        byte bcc = 0;

        if (inputStream != null && inputStream.Length > 0)
        {
            // Exclude SOH during BCC calculation
            for (int i = 1; i < inputStream.Length; i++)
            {
                bcc ^= inputStream[i];
            }
        }

        return bcc;
    }
Run Code Online (Sandbox Code Playgroud)