块检查字符(BCC) 我需要一个函数来计算C#中的块检查字符(BCC)。 01 30 02 4D 21 20 20 03 这是字符串,如何为此字符串计算“块检查字符”。
BCC =从SOH到ETX的异或 SOH ID STX CODE ETX BCC 0x01 0x30 0x02 0x40 0x03
我需要添加BCC并将数据发送到COM。 如果可能请给我一个功能,以便我可以发送“01 30 02 4D 21 20 20 03”并获得BCC。
由于
答案 0 :(得分:4)
据我所知,BCC是给定字节流中除第一个SOH或STX之外的所有字节的XOR,直到第一个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;
}