对 LED 板进行编程时计算数据内容的异或结果的校验和

发布于 2024-11-17 04:39:38 字数 558 浏览 2 评论 0原文

我正在编写一个应用程序来与 LED 指示灯板进行通信。编程语言是Processing。典型的请求如下所示:

<ID01><L1><PA><FE><MA><WC><FE>Probe3E<E>

其中 3E 是校验和。文档称校验和“表示数据内容的异或结果”。我不完全是一个编码忍者,所以我不太清楚如何编码。

我发现了一个据称在 Delphi 中编码的工作示例,但无法将其转移到处理:

Function SimpleCheckSum (const MyMessage : String) : byte;
Var res : byte;
    i   : integer;
Begin
  res := ord(MyMessage[1]);
  for i:=2 to length(MyMessage) do
     res := res XOR ord(MyMessage[i]);
  result := res;
End;

非常感谢任何帮助和/或想法!

I am programming an application to communicate with a LED indicator board. Programming language is Processing. A typical request looks like this:

<ID01><L1><PA><FE><MA><WC><FE>Probe3E<E>

where 3E is the checksum. The documentation says that the checksum "denotes the Xor Result of the data content". I'm not exactly a coding ninja, so I can't quite figure out how to code this.

I found an allegedly working example coded in Delphi but can't transfer it to Processing:

Function SimpleCheckSum (const MyMessage : String) : byte;
Var res : byte;
    i   : integer;
Begin
  res := ord(MyMessage[1]);
  for i:=2 to length(MyMessage) do
     res := res XOR ord(MyMessage[i]);
  result := res;
End;

Any help and/or thoughts are greatly appreciated!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

御守 2024-11-24 04:39:38

经过更多小时的研究和测试,询问者能够正确计算校验和:

String myCommand = "<L1><PA><FE><MA><WC><FE>test"; // result should be: 62
byte res = 0;
for(int i=0; i<myCommand.length(); i++){
  res ^= byte(myCommand.charAt(i));
}
String checksum = hex(res);

After more hours of research and testing the asker was able to compute the checksum correctly:

String myCommand = "<L1><PA><FE><MA><WC><FE>test"; // result should be: 62
byte res = 0;
for(int i=0; i<myCommand.length(); i++){
  res ^= byte(myCommand.charAt(i));
}
String checksum = hex(res);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文