我正在开发仪器驱动程序,我想知道如何计算帧的校验和。
说明:
由字符[0-9]和[A-F]表示。
从[STX]之后的字符开始直到[ETB]或[ETX](包括[ETB]或[ETX])的字符以二进制形式添加。
2位数字代表十六进制代码中最不重要的8位,将转换为ASCII字符[0-9]和[A-F]。
最高位数存储在CHK1中,最低位数存储在CHK2中。
这是示例框架:
<STX>2Q|1|2^1||||20011001153000<CR><ETX><CHK1><CHK2><CR><LF>
我想知道chk1和chk2的值是什么,我是新的,所以我对如何计算校验和完全空白
我没有超过第3和第4点。
任何人都可以提供c#的示例代码。
请帮帮我。
答案 0 :(得分:1)
用0xff掩码和并转换为两个十六进制数字。
答案 1 :(得分:1)
最后我得到了答案。
听到计算校验和的c#代码。
private string CalculateChecksum(string dataToCalculate)
{
byte[] byteToCalculate = Encoding.ASCII.GetBytes(dataToCalculate);
int checksum = 0;
foreach (byte chData in byteToCalculate)
{
checksum += chData;
}
checksum &= 0xff;
return checksum.ToString("X2");
}