Pages: 1 [2]   Go Down
Author Topic: ayuda con cadenas de datos  (Read 1042 times)
0 Members and 1 Guest are viewing this topic.
Euskadi
Offline Offline
God Member
*****
Karma: 16
Posts: 711
Arduinotarrak
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola,
Para tokenizar una cadena con grupos de dígitos separados por comas, puedes usar la función strtok()

« Last Edit: December 07, 2011, 01:45:29 am by curro92 » Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 51
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 51
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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,
Logged

Ciudad Real
Offline Offline
God Member
*****
Karma: 1
Posts: 747
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 ...
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 32
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 smiley-cry
Logged

Pages: 1 [2]   Go Up
Jump to: