Specifications
Command Set 4-5
the two extra characters and assumes that it is a checksum. If the checksum
is not present, the module will perform the command normally. If the two
extra characters are present, the module calculates the checksum for the
message. If the calculated checksum does not agree with the transmitted
checksum, the module responds with a ‘BAD CHECKSUM’ error message
and the command is aborted. If the checksums agree, the command is
executed. If the module receives a single extra character, it responds with
‘SYNTAX ERROR’ and the command is aborted For example:
Command: $1RD (no checksum)
Response: *+00072.10
Command: $1RDEB (with checksum)
Response: *+00072.10
Command: $1RDAB (incorrect checksum)
Response: ?1 BAD CHECKSUM
Command: $1RDE (one extra character)
Response: ?1 SYNTAX ERROR
Response Checksums
If the long form ‘ # ‘ version of a command is transmitted to a module, a
checksum will be appended to the end of the response. For example:
Command: $1RD (short form)
Response: *+00072.10
Command: #1RD (long form)
Response: *1RD+00072.10A4 (A4=checksum)
Checksum Calculation
The checksum is calculated by summing the hexadecimal values of all the
ASCII characters in the message. The lowest order two hex digits of the sum
are used as the checksum. These two digits are then converted to their
ASCII character equivalents and appended to the message. This ensures
that the checksum is in the form of printable characters.
Example: Append a checksum to the command #1DOFF
Characters: # 1 D O F F
ASCII hex values: 23 31 44 4F 46 46
Sum (hex addition) 23 + 31 + 44 + 4F + 46 + 46 = 173
The checksum is 73 (hex). Append the characters 7 and 3 to the end of
the message: #1DOFF73
Example: Verify the checksum of a module response *1RD+00072.10A4










