这个诡异的串口设备指令
最近在调试一台国外的串口设备。该设备的指令结构为开始符-地址-指令-参数(可选)-结束符-校验码。例如指令{A?}Z,其中{和}分别为开始符和结束符,省略地址,A?为指令,Z就是那该死的校验码。现在的问题是依据说明书上的计算公式,得不到该校验码。
原文是
the checksum byte is the sum modulo 95 of all message characters begining with the header byte up to and including the trailer byte.
the value 32 is subtracted from each character value before taking the modulo95 sum. the value 32 is added to the final sum to obtain the Checksum value. all values are in decimal.
Checksum=Mod[(character value-32),95]+32
以指令{A?}Z为例,我的计算步骤是首先计算{、A、?和}的十进制ASCII码之和,然后减去32,再模95,最后和32相加,得到的值为91,而Z的ASCII值是90.怎么算都不对。请各位帮忙看看吧 串口
[解决办法]
他上面没说用ASCII加啊,你直接加的看看
[解决办法]
每一个字符(each cahracter)ASCII 码都要减 32。
{: 123 - 32 = 91
A: 65 - 32 = 33
?: 63 - 32 = 31
}: 125 - 32 = 93
((91 + 33 + 31 + 93) Mod 95) + 32 = 90