Help with AR49-M25S absolute encoder and RS485

Hey all, I’ve been banging my head against this for awhile now and I’ve gotten to the point where I need assistance from more experienced developers.

I’m currently using an MKS XDrive Mini, a MAX485, and an AR49-M25S using RS485 for communication. Here’s what I have so far:

#include <SimpleFOC.h>

#define RS485_RO PA1
#define RS485_RE PA2
#define RS485_DE PA3
#define RS485_DI PA0

#define AR49_READ     0x02
#define AR49_ZERO_RST 0xC2


HardwareSerial Serial4(RS485_RO, RS485_DI);

char buffer[10];

void PrintBits(char c)
{
  for(int i = 7; i >= 0; i--)
  {
    Serial.print(bitRead(c,i));
  }
}

float OnReadEncoder()
{
  digitalWrite(RS485_RE, HIGH);
  digitalWrite(RS485_DE, HIGH);
  delayMicroseconds(2);

  Serial4.write(AR49_READ);

  Serial4.flush();
  delayMicroseconds(5);

  digitalWrite(RS485_RE, LOW);
  digitalWrite(RS485_DE, LOW);

  delayMicroseconds(20);

  Serial.print("Response from encoder:");

  int bytesReceived = Serial4.available();
  if (bytesReceived > 0)
  {
    Serial4.readBytes(buffer, bytesReceived);

    for (int i = 0; i < bytesReceived; i++)
    {
      Serial.print(' ');
      PrintBits(buffer[i]);

      if (buffer[i] == AR49_READ)
      {
        Serial.print(" (Read cofirmed!) ");
      }
    }
  }

  Serial.println("");

  return 0;
}

void OnInitEncoder()
{

}

GenericSensor encoder = GenericSensor(OnReadEncoder, OnInitEncoder);

void setup()
{
  pinMode(RS485_RE, OUTPUT);
  pinMode(RS485_DE, OUTPUT);

  Serial4.begin(2500000, SERIAL_8N1);

  encoder.init();

  Serial.begin(115200);

  delay(1000);
}

void loop()
{
  encoder.update();
  
  delay(1000);
}

Unfortunately what I’m getting back from the encoder doesn’t seem to make any sense nor conform to what I should expect to be getting back. Here’s the documentation for the encoder https://docs.broadcom.com/doc/AR49-Series-AN starts on Page 39.

Here’s a sample of what I’m getting back:

Response from encoder: 00010000 01101111 11111110
Response from encoder: 00110000 10111111 11111011 10011100
Response from encoder: 00110000 11111000 11111011 11111111
Response from encoder: 00110000 11100000 11111011 11110111
Response from encoder: 00010000 01101111 11111110
Response from encoder: 00010000 11100011 11111011 11110110
Response from encoder: 00110000 11100110 11111011 11110011
Response from encoder: 00110000 11100111 11111011 11110000

Any ideas or suggestions would be greatly appreciated.