gpt4 book ai didi

c# - 计算串行通信的 block 校验字符 (BCC)

转载 作者:行者123 更新时间:2023-11-30 12:18:59 24 4
gpt4 key购买 nike

我正在通过 .NET 的 SerialPort 类通过串行方式与设备通信,并且根据第三方设备规范要求,我需要计算“ block 检查字符”。我得到的唯一信息是它是一个异或运算 (XOR),必须对所有字符执行。

那么,如果我有字符串“Bob,001”,将如何计算 BCC?

最佳答案

很可能是基于字符的 XOR。您需要获取它们的样本以进行验证,但大多数校验和通常以 0 结尾。

因此,对于 XOR 校验和,您将拥有数据包:

Bob,001X

其中 X 是校验和,当您将所有这些字符异或在一起时,您很可能会得到 0。

因此,要计算出 X,您只需对“Bob,001”中的所有字符进行异或运算。这是因为对于任何 N,N xor N 始终为 0。

现在,如果只允许使用字母数字,X 可能是两个十六进制字符。这就是为什么您需要样本数据(以便我们计算出来)或适当的规范(应由设备制造商提供)。

您指的实际设备是什么?网络上可能有显示如何执行此操作的信息。

基于更新:

It's an Amadeus Hospitality PMS device. No all they say is that it must be performed over all chars. excluding the STX and ETX.

您需要获取一些样本数据来确认,但它可能是一个类似这样的数据流:

        Running
Data ChkSum
====== =======
STX 02
B 42 42
o 6f 2d
b 62 4f
, 2c 63
0 30 53
0 30 63
1 31 52
4 52 00
ETX 03

校验和的位置可能会有所不同,事实上,它的计算也可能会有所不同,尽管这种可能性要小得多。如果没有示例数据或来自供应商的更多信息,我不认为可以做更多的事情。粗略地搜索互联网没有发现任何技术细节。

关于c# - 计算串行通信的 block 校验字符 (BCC),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/891664/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com