I am communicating with an Gasboy Pump Control Unit (PCU) using rs232. The PCU requires a crc16. the following 2 lines is a command string I recorded from a working
system. line 1 is a working command string, for clarity I replaced the control characters with brackets, [?] represents the control character decimal number, ie: [5]= control
character ENQ. line2 is the hex numbers for each ascii character, thought this may help.
The crc16 is the hex between [23] and [4].
line1: [5]PP02RR2[23]4D5A[4]
line2: 05 50 50 30 32 52 52 32 17 34 44 35 41 04
I've tried the following polys
CRC-16-IBM ; also known as CRC-16 and CRC-16-ANSI) 0x8005 / 0xA001 / 0xC002
CRC-16-CCITT 0x1021 / 0x8408 / 0x8810[6]
CRC-16-T10-DIF 0x8BB7[14] / 0xEDD1 / 0xC5DB
CRC-16-DNP 0x3D65 / 0xA6BC / 0x9EB2
What I am trying to find is the poly and what characters are used to get the crc16 of "4D5A".
Is this easy or hard for someone who knows crc?
Any help would be appreciated. Do you know anyone that maybe able to help?
Below is more examples of the strings I get from the pump control units. NOTE the brackets and number [2] = control characters. ie: [2]=ascii character STX, [4]=ascii
character EOT. The 4 digit hex number after [23] is the crc.
[2]PP04M00000[23]7409[4]
[2]TT02S011010E[23]8A02[4]
[2]PP01M00CC0[23]A00F[4]
[2]TT01S011010E[23]85F2[4]
[2]TT01E5[6][23]6C4F[4]
[2]PP02M00000[23]755D[4]
[2]TT02S011010E[23]8A02[4]
[2]TT02E5[6][23]4E4F[4]
[2]PP03M00000[23]F66E[4]
[2]TT01S011010E[23]85F2[4]
[2]PP04M00000[23]7409[4]
[2]TT02S011010E[23]8A02[4]
[2]PP01M00CC0[23]A00F[4]
[2]PP01R40005519900055199C
1[23]500A[
4]
[2]TT01S011010E[23]85F2[4]
[2]TT01E5[6][23]6C4F[4]
[2]PP02M00000[23]755D[4]
[2]TT02S011010E [23]8A02[4]
[2]TT02E5[6][23]4E4F[4]