Base de datos

ingeniero_henrym:
Hola buen Dia,
Estoy tratando de capturar la siguiente trama en un vector la cual esta en hexadecimal:
0 57 55 ff 75 5d 75 5d 55 d7 5f 7d 5f fd 5d 57 5f fd 5d 57 5f d5 5d 77 75 f5 7d 5f 7f 75 7f 77 7d 5d 7f 55 5d 57 75 57 5f 57 5f 55 5f 55 5f d7 5d 55 5f fd 5d 5d 5f fd 5d 55 5f
despues de capturar la debo pasarla a String y por ejemplo si quisiera pararme en la posicion 5 y cambiar el valor como puedo hacerlo despues de recibirlo?

No puede escribir en castellano en un foro en inglés ni viceverza. (lea las normas del foro).

Bueno vamos a su problema.
Trama en hexa, use un puntero a char definido asi

char *buf;

supongamos esto

#define MAX_BUFFER 100 // maximo 100 bytes

// Almacenamos el estado como variable global
int estado=LOW;
int estado_transf=LOW;
// Almacenamos también el número de milisegundos anterior
unsigned long momento_anterior=0;
unsigned long bytes_recibidos=0;

void setup()
{
  Serial.begin(9600); 
  // Queremos que un led parpadee mientras trabajamos
  pinMode(STATUS_LED, OUTPUT);
  // Queremos salida por el led de transferencia
  pinMode(TRANSF_LED, OUTPUT);
}

int serialGetString(char *string, int max)
{
  unsigned i=0;
  char sIn;
  // Queremos que la cadena se rellene hasta max-2 para que en el carácter
  // max-1 (el último) podamos meter el terminador \0
  --max;        
  while (Serial.available() && i<max)
    {
      sIn=Serial.read();
      string[i++]=sIn;
      // La recepción tiene una latencia, se produce a través de una interrupción, que a lo mejor se ejecuta
      // un poco después del Serial.available() por lo que el dato no entraría, por eso hacemos una pequeña espera
      delayMicroseconds(500);
    }
  string[i++]='\0';
  return i;
}

void loop () 
{  
  int recibe;
  unsigned long momento_actual=millis();
  char buf[MAX_BUFFER];
// No bloqueante, si hay algo para leer entramos, si no, no.
  if(Serial.available()) 
    {
      serialGetString(buf, MAX_BUFFER);
      // Escribimos el buffer completo
      Serial.println((char*)buf);
    }
  // No usamos delay para el parpadeo porque nos entorpece la comunicación con el serial
  if (momento_actual-momento_anterior>=BLINK_DELAY)
    {
      // Cambiamos el estado siguiente. Si era HIGH (1) ahora será 
      // LOW (0). He leído en algún lado que el valor de HIGH no 
      // siempre es 1; pero en este caso sí es así. 
      estado=!estado;
      // Escribimos el estado actual del led
      digitalWrite(STATUS_LED, estado);
      // Establecemos el momento anterior como actual.
      momento_anterior=momento_actual;
    }
}