Go Down

Topic: Base de datos (Read 759 times) previous topic - next topic

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?


robtillaart

Please post your question also in English
Rob Tillaart

Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -
(Please do not PM for private consultancy)

PaulS

What does that have to do with the Arduino website or forum?
The art of getting good answers lies in asking good questions.

surbyte

#3
Jun 21, 2015, 08:47 pm Last Edit: Jun 21, 2015, 08:48 pm by surbyte
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

Code: [Select]
char *buf;

supongamos esto
Code: [Select]
#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;
    }
}

Go Up