Problemas comunicacion serie con sensor Lidar 2D

Buenos dias os cuento el problema que tengo para ver si alguien me puede ayudar. No he utilizado mucho arduino pero creia que no seria tan complicado comunicarme con este sensor en particular.
Lo que necesito es mediante un arduino mega leer los datos que envia el sensor Lidar 2D de Pepperl Fuchs R2100 con salida RS232 (115200 baudios 8N1) y procesar esa señal. El arduino lo tengo conectado al PC para ver por el monitor del puerto los resultados que se obtienen. Como prueba queria que saber el valor de un byte en concreto. En un principio lo único que quiero es obtener la trama de datos porque el tratamiento lo tengo claro (es similar al de una trama GPS). El sensor es el del siguiente link:

2-D LiDAR Sensor OMD8000-R2100-R2-2V15

En el prototcolo de comunicacion se indica que para obtener respuesta del sensor se debe enviar una trama de 5 bytes que es la siguiente:

0xde 0x01 0x05 0x59 0x83

y el sensor responde con una trama de 50 bytes siendo los 4 iniciales fijos:

0x01 0xde 0x32 0x11 …

Esta es la trama que quiero obtener.
El montaje que he hecho es conectar la salida del sensor RS232 a un conversor TTL y de ahi:

Vcc a 5V del arduino
GND a GND del arduino
Rx a pin 8
Tx a pin 9

Copio el codigo que estoy utilizando para que se vea si estoy haciendo algo mal:

#include <SPI.h>
#include <stdlib.h>
#include <SoftwareSerial.h>

char RxData[50] = {0} ;
int Distance[11] = {0};
SoftwareSerial mySerial(8, 9);

void setup()
{
 Serial.begin(9600); // serial port that communicates with the PC
 
 mySerial.begin(115200);
 //Serial1.begin(115200); // serial port that listens to the Lidar unit
}

void loop()
{

   mySerial.write(222);
   mySerial.write(1);
   mySerial.write(5);
   mySerial.write(89);
   mySerial.write(131);
 
/*if (Serial.available()) // if there's a byte waiting to be read

 }*/
   
   for (byte i = 0; i < sizeof(RxData); ++i){
     //RxData[i] = (char)0;
     mySerial.readBytes(RxData, 50);
     Serial.write(mySerial.read());
 }


    int Chx = 0; // calculate and check checksum
     for (int L = 0; L < 49; L++) {
       Chx = RxData[L] ^ Chx;
   }
     if (RxData[49] != Chx) {
       //input code for failed message
     }
     int BP = 4;
     for (int j = 0; j < 11; j++) {
     Distance[j] = RxData[BP + 1]*256 + RxData[BP]; // calc the distance
     //Distance[L] = Distance[L] + 200; // add the offset
     //Echo[L] = word(RxData[BP + 3], RxData[BP + 2]); // calc the echo
     BP = BP + 4;
   }

   Serial.println(RxData[2]);
   delay(500);
 }

Ya no se por donde tirar. Espero la ayuda de algun entendido en la materia. Muchas gracias

Bueno en esta etapa de pruebas ir con SoftwareSerial a 115K me parece mucho riesgo por lo que probaría con un MEGA/DUE si dispones de ellos usando Serial1…3 pero supongo que no es el caso porque ya lo habrías comentado.

Tu código no esta respetando la estructura esperable para recibir datos!!
Si hay respuesta es una secuencia o trama continua entonces debes leerlos todos
prueba de este modo:

#include <SPI.h>
#include <stdlib.h>          // <= para que?
#include <SoftwareSerial.h>

char RxData[50]   = {0} ;
int Distance[11]  = {0};
SoftwareSerial mySerial(8, 9);

void setup()
{
 Serial.begin(9600); // serial port that communicates with the PC
 
 mySerial.begin(115200);
 //Serial1.begin(115200); // serial port that listens to the Lidar unit
}

void loop() {

  iniciar_lectura();
  delay(0);            // buscar en el manual si hay una leve pausa o no

  while (Serial.available()>0) { // if there's a byte waiting to be read
    for (byte i = 0; i < sizeof(RxData); ++i){
     //RxData[i] = (char)0;
     mySerial.readBytes(RxData, 50);
     Serial.write(mySerial.read());
    }

    int Chx = 0; // calculate and check checksum
    for (int L = 0; L < 49; L++) {
         Chx = RxData[L] ^ Chx;
    }
    if (RxData[49] != Chx) {
       //input code for failed message
    }
    int BP = 4;
    for (int j = 0; j < 11; j++) {
        Distance[j] = RxData[BP + 1]*256 + RxData[BP]; // calc the distance
        //Distance[L] = Distance[L] + 200; // add the offset
        //Echo[L] = word(RxData[BP + 3], RxData[BP + 2]); // calc the echo
        BP = BP + 4;
    }

    Serial.println(RxData[2]);
    delay(500);
  }
 }


void iniciar_lectura() {
  // 0xde 0x01 0x05 0x59 0x83
  mySerial.write(0xde);
  mySerial.write(0x01);
  mySerial.write(0x05);
  mySerial.write(0x59);
  mySerial.write(0x83);
}

Muchas gracias por la ayuda.

Lo estoy probando con un arduino Mega, el sensor debe leer obligatoriamente a 115200 baudios y he probado lecturas con serial1..3 y no me funciona.

He probado el codigo que me has indicado y en el monitor serie de arduino no aparece nada. El sensor está bien porque lo he probado con un programa externo que monitoriza el puerto serie y enviandole la trama indicada devuelve los 50 bytes que indica el fabricante que representan las distancias.

No se muy bien que mas pruebas hacer.

¿Qué niveles utiliza? A ver si estamos mezclando 12 con 5 voltios.

Ya dijo que usa una interfaz RS232 a Serial.

El montaje que he hecho es conectar la salida del sensor RS232 a un conversor TTL y de ahi:

Vcc a 5V del arduino
GND a GND del arduino
Rx a pin 8
Tx a pin 9

Yo habia escrito una rspuesta basado en este supuesto y luego leo de nuevo y me encuentro con que usa el conversor.
Supongo que hay un MAX232 en ese conversor.