cserial-portembeddedrs485

Synchronous baud rate (RFC2217) encode/decode


I'm trying to implement RFC2217 in my code but I can't understand how the last parity bit (46H and 28H) is generated.

I'm using RS485 to Ethernet device.

What will be the code, if I'm using 2400,E,8,1?

Is it: 55 AA 55 09 60 1B XX?

User manual: page 42 in https://www.sarcitalia.it/file_upload/prodotti//USR-N520-Manual-EN-V1.0.4.pdf

Synchronous baud rate (RFC2217) picture SS


Solution

    1. In the field for the baud rate you missed the MSByte. This field shall be 00 09 60.

    2. Yes, 1B for "E,8,1" is correct. BTW, the table lists 2 bits for the 1-bit fields of "stop bit" and "parity enable", which is quite irritating.

    3. The field "parity" is actually just a sum, without the header and the MSBit cleared. (I don't grasp the text of the explanation, but the document seems to be low quality anyway.)

      01 C2 00 03: 0x01 + 0xC2 + 0x00 + 0x03 = 0xC6; without bit 7 = 0x46.

      00 25 80 03: 0x00 + 0x25 + 0x80 + 0x03 = 0xA8; without bit 7 = 0x28.

      Your telegram 00 09 60 1B: 0x00 + 0x09 + 0x60 + 0x1B = 0x84; without bit 7 = 0x04. So XX is 04.