Go Down

Topic: ayuda con cadenas de datos (Read 1 time) previous topic - next topic

curro92

#15
Dec 06, 2011, 08:34 pm Last Edit: Dec 07, 2011, 07:45 am by curro92 Reason: 1
Hola,
Para tokenizar una cadena con grupos de dígitos separados por comas, puedes usar la función strtok()


pacoooh


Arduino 1.0 incluye un par de funciones nuevas para hacer estas cosas,si no recuerdo mal


Sergegsx, te refieres ha "Strings" ? http://arduino.cc/en/Tutorial/StringCharacters

lo estoy probando estos días, y esta muy bien, para recuperar caracteres de una String, identificar partes de testo, cambiar...

pero es curioso


pacoooh

uy!! perdón...

es curioso los ejemplos me funcionan bien en la ide 0.22, pero en la versión 1.0 me salen errores,

SrDonGato


Perdoname SrDonGato, estoy espeso pero no te entiendo. Yo ya envio la trama como me cometas desde el transmisor 256,235,563,121 o como tu quieras no importa. Cuando recibo esa trama lo hago exactamente igual que la que envío.
Ya la tengo en char,  ok. Ahora necesito convertir dicha trama en int separados, he llegado a:


char* datos;
long int  dato1=0;
unsigned long  dato2=0;
unsigned long  dato3=0;

void setup() {
  Serial.begin(9600);
}

void loop() {


int i,serAva;     
char entranBytes [7];               
char * entranBytesPtr = &entranBytes[0]; 
     
if (Serial.available()>0)         
{
   delay(15);                                                         
   serAva = Serial.available();
   for (i=0; i<serAva;i++ )       
   entranBytes = Serial.read();
   entranBytes =  '\0';             
   atoi(entranBytesPtr); 
   }
   else
   return ;                         
  datos = entranBytes;
   
  long int dato1= atol( datos);   

Pero en dato1 ya está convertido a long... (es para hacerlo con sumas y restas). pero como diferencio los 3 primeros numeros la coma los otros 3 numeros, etc.?



Este código NO te funciona como piensas. estas metiendo caracteres nulos en todas las posiciones del array
prueba el codigo que te he dado ...

chechucv

El codigo te te he puesto funciona ok ya que lo tengo ya montado pero con operaciones matemáticas, el null solo lo hace al final de la trama para reconocer el final de la misma.
Se podría hacer un if (char ==','){ valor1 = int atoi(char);} pero luego como sigo...
if (char!=','){valor2 = int atoi(char);}, es en este punto donde no entiendo el concepto de char, en otros lenguajes lo cambias y ya está, en este lenguaje me cuesta asimilar el concepto, pero me gusta mucho.
Perdona SrDonGato no es mi intención que me lo hagas y no busco lo facil, es que me gusta y no quiero quedarme estancado sino avanzar y me he quedado atascado y no lo veo. Luego dire que tontería pero ahora no lo veo =(

Go Up