COMANDOS HEXADECIMALES SOBRE RS485

¿Has llegado a probar el último código que te propuse, enviando una trama que comience con 3E?
Me parece que debería funcionar, lo que pasa es que no he podido simularlo así, pero haciendo que el programa espere hasta tener los 8 bytes (aparte del 3E de inicio de trama) parece que sí me va en la simulación.
Prueba y me dices si funciona. Los datos deberían quedar guardados en la estructura (faltaría por saber a qué corresponde el byte que va tras el número de sonda y los tres que van tras el nivel:

struct sonda {
  byte numSonda;
  byte a;
  byte temperatura;
  int nivel;
  char b;
  char c;
  char d;
} datoSonda;

void setup() {
  Serial.begin(9600);     // opens serial port, sets data rate to 9600 bps
}

void loop() {
  byte incomingByte;
  // send data only when you receive data:
  if (Serial.available() > 0) {
    // read the incoming byte:
    incomingByte = Serial.read();
    if (incomingByte == 0x3E)
    {
      char *pSonda = (char *) &datoSonda;
      for (int i = 0; i < 8; i++) {
        pSonda[i] = Serial.read();
      }
          Serial.print("Número sonda: ");
          Serial.print(datoSonda.numSonda);
          Serial.print(", Temperatura: ");
          Serial.print(datoSonda.temperatura);
          Serial.print(", Nivel: ");
          Serial.println(datoSonda.nivel);
    }
  }
}