我正在开发一个仪器驱动程序实验室信息系统 https://www.limswiki.org/index.php/Laboratory_information_system。我想知道如何计算帧的校验和。
校验和算法说明:
-
用字符[0-9]和[A-F]表示。
-
从[STX]之后的字符开始到[ETB]或[ETX](包括[ETB]或[ETX])的字符以二进制添加。
-
代表十六进制代码中最低有效 8 位的 2 位数字被转换为 ASCII 字符 [0-9] 和
[A-F]。
-
最高有效位存储在 CHK1 中,最低有效位存储在 CHK2 中。
我没有得到上面的第三点和第四点。
这是一个示例框架:
<STX>2Q|1|2^1||||20011001153000<CR><ETX><CHK1><CHK2><CR><LF>
有什么价值CHK1
and CHK2
?如何在 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");
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)