derdaani
derdaani

Reputation: 598

Calculating a checksum for the Xor result of the data content when programming an LED board

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!

Upvotes: 1

Views: 2265

Answers (1)

ANeves
ANeves

Reputation: 6385

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);

Upvotes: 1

Related Questions