Show Posts
Pages: 1 [2] 3
16  International / Software / Re: ayuda funcion seek() on: October 16, 2012, 02:08:06 am
Buenas,
yo tengo un archivo de texto con una cantidad de líneas que leo como caracteres,cada línea puede variar su tamaño.
No he creado ningun array de posiciones puesto que en ocasiones el número de líneas es muy grande.
Lo que intento hacer en mi programa es una comparación de datos entre una línea y otra y según el resultado apuntar a una u otra.Es aquí donde no encuentro la solución, como puedo pasar de líneas con el puntero???

17  International / Software / Re: ayuda funcion seek() on: October 15, 2012, 02:02:52 am
Gracias por contestar curro92.
Voy a seguir mirando por internet porque no se si me servirá esta instrucción para lo que busco, quiero apuntar con el puntero y que me lea toda una línea y así consecutivamente(no puedo dar un número de desplazamiento fijo puesto que las líneas son de distinto tamaño). Podría poner en el medio condición de salto de línea? así estaría todo solucionado.

Eskerrik asko!
18  International / Software / ayuda funcion seek() on: October 11, 2012, 03:47:15 am
Hola!
tengo un archivo de texto en mi SD, quiero apuntar las líneas de dicho archivo con un puntero para poder moverme de una a otra. Por lo que he estado mirando por ahí la función que más se ajusta a lo que necesito es la de seek(). Lo que he encontrado de ejemplos es muy poco y no me ha quedado muy claro como funciona la instrucción. He entendido lo siguiente, hay dos formas de usarla:
- archivo.seek(pos): busca una posición en el archivo y devuelve true o false y la encuentra o no.
-archivo.seek(   ,    ,    ,) : el primer espacio es para el puntero a archivo, el último para situarse en el archivo(SEEK_SET(principio),SEEK_CUR(posición actual),SEEK_END(final)), pero la posición del medio no se para que sirve.

Esta última es la que yo necesito, pero no se usarla.

Me podría ayudar alguien? Muchas gracias.
19  International / Software / leer caracteres SD y guardar en un vector (SOLUCIONADO) on: October 08, 2012, 06:32:24 am
He encontrado el fallo!!  smiley-grin

el error estaba en la inicialización de la SD. Quitando el trozo en rojo funciona!!!

  Serial.begin(9600);
  Serial.print("Initializing SD card...");
  pinMode(53, OUTPUT); // se debe configurar como salida pq sino la libreria SD no funcionará
 
  if (!SD.begin(chipSelect)) {  //comprueba si la tarjeta está presente y puede ser inicializada
    Serial.println("Card failed, or not present"); //si entra es que la tarjeta no se inicializa
    return; // no se hace nada más
  }
  Serial.println("card initialized.");
 
  File dataFile = SD.open("hola.txt"); // se abre el archivo(sólo se puede abrir uno al mismo tiempo)

  if (dataFile) {  //si el archivo esta abierto, se escribe en el
    while (dataFile.available()) {
      Serial.write(dataFile.read());
    }
    dataFile.close();
  } 
  else {
    Serial.println("error opening hola.txt"); //si no se ha abierto el archivo da error
  }



Ahora ya me escribe en la consola hola!!!
20  International / Software / leer caracteres SD y guardar en un vector (SOLUCIONADO) on: October 08, 2012, 04:15:33 am
Hola!
Tengo un archivo de texto en una SD, en el cual esta escrito lo siguiente:

hola
adios

He hecho un programa con el que quiero leer los caracteres de "hola" y guardarlos en un vector para luego hacer cosas con ellos, por ejemplo en este programa volver a escribirlos. Cuando lo ejecuto, lo único que hace es inicializar la tarjeta, nada más!!  No se si no uso las instrucciones adecuadas o cual puede ser el problema....Alguien tiene alguna idea? como no pase de aquí difícilmente voy a poder hacer mi proyecto...

Gracias de antemano.

Aquí está mi programa:

#include <SoftwareSerial.h>
#include <SD.h>

const int chipSelect = 53; // en Mega, 53 es el pin CS (en la mayoria 10)
char linea[6];
int i;
int imax;
char dato;

void setup(){
  
  Serial.begin(9600);
  Serial.print("Initializing SD card...");
  pinMode(53, OUTPUT); // se debe configurar como salida pq sino la libreria SD no funcionará
  
  if (!SD.begin(chipSelect)) {  //comprueba si la tarjeta está presente y puede ser inicializada
    Serial.println("Card failed, or not present"); //si entra es que la tarjeta no se inicializa
    return; // no se hace nada más
  }
  Serial.println("card initialized.");
  
  File dataFile = SD.open("hola.txt"); // se abre el archivo(sólo se puede abrir uno al mismo tiempo)

  if (dataFile) {  //si el archivo esta abierto, se escribe en el
    while (dataFile.available()) {
      Serial.write(dataFile.read());
    }
    dataFile.close();
  }  
  else {
    Serial.println("error opening hola.txt"); //si no se ha abierto el archivo da error
  }
  
  i=0;
  dato=dataFile.read();
  while (dato!='\n'){
  linea=dato;
  imax=i;
  i++;
  dato=dataFile.read();
  }
}
 
  void loop(){
  
  for (i=0; i<imax; i++){
  Serial.print(linea);
  }
  }
  
21  International / Software / Re: libreria stdio on: September 28, 2012, 07:08:52 am
por ejemplo, cuando tu pones un while(hidhfiigf){}

La palabra "while" aparece en un color amarillo anaranjado. A eso me refiero. No se si me explico....
22  International / Software / Re: libreria stdio on: September 28, 2012, 06:56:06 am
pensaba que si necesitaría alguna libreria, ya que cuando pongo la instrucción se queda en negro. Y no se por que he supuesto que tendría que aparecer en amarillo...
Entonces estoy totalmente equivocada??
Muchas gracias por la contestación.
23  International / Software / libreria stdio on: September 28, 2012, 04:02:01 am
Hola!
voy a hacer un programa usando la estructura objeto struct, por lo que he estado mirando creo que necesito la libreria <stdio.h>. Donde puedo encontrarla?? es que he hecho un intento de instalación con un archivo que encontré, pero no me ha servido de nada.
El IDE que uso es arduino 0023.

Muchas gracias.
24  International / Software / Re: error de conversion on: September 26, 2012, 05:40:57 am
Vale, me acabo de dar cuenta que los ceros salen porque no recoge el dato de latitud y longitud.
Haciendo el mismo programa pero con:
Serial.print(latitud);
Serial.print(',');
Serial.println(longitud);

obtengo espacio en blanco a ambos lados de la coma. Que ocurre?? por que no me almacena el valor de latitud y longitud??
25  International / Software / error de conversion on: September 26, 2012, 05:29:49 am
Hola!  os cuento mi problema a ver si alguien me puede ayudar.
Dispongo de un archivo en una SD, el cual abro y visualizo los datos que tiene, es de la siguiente forma:

,45.78634,5.674225,65,
,67.34577,4.652546,48,
,23.42675,3.678456,23,

Cada valor entre comas le doy un nombre: latitud,longitud,cantidad,
Lo que quiero hacer ahora es pasar la cadena de caracteres a real y a entero, y que a su vez lo imprima. El error viene cuando en vez de salirme el número convertido me salen ceros: 0.0000,0.0000
Os pongo el programa, a ver si veis cual es mi fallo.

GRACIAS.

#include <SD.h>
const int chipSelect = 53; // en Mega, 53 es el pin CS (en la mayoria 10)
//------------------------------------
int campo=0;
char dato;
char latitud[10];
char longitud[10];
char cantidad[10];
int pos;
float lat;
float lon;
int cant;

void setup(){
  
  Serial.begin(9600);
  Serial.print("Initializing SD card...");
  pinMode(53, OUTPUT); // se debe configurar como salida pq sino la libreria SD no funcionará
  if (!SD.begin(chipSelect)) {  //comprueba si la tarjeta está presente y puede ser inicializada
    Serial.println("Card failed, or not present"); //si entra es que la tarjeta no se inicializa
    return; // no se hace nada más
  }
  Serial.println("card initialized.");
  File dataFile = SD.open("llc.txt"); // se abre el archivo(sólo se puede abrir uno al mismo tiempo)
  if (dataFile) {  //si el archivo esta abierto, se escribe en el
    while (dataFile.available()) {
      Serial.write(dataFile.read());
    }
    dataFile.close();
  }  
  else {
    Serial.println("error opening gps.txt"); //si no se ha abierto el archivo da error
  }  
//-------------------------------------
while (dataFile.available()){
 while (campo<4){
   if(dato==','){
   campo++;
   pos=0;
   }
   else{
   if(campo==1){
   latitud[pos++]=dato;
   }
   if(campo==2){
   longitud[pos++]=dato;
   }
   if(campo==3){
   cantidad[pos++]=dato;
   }
   }
 dato=dataFile.read();
 }
}
}

void loop(){
  
 lat=atof(latitud);  //convierto latitud a float
 lon=atof(longitud);
 cant=atoi(cantidad);
 Serial.print(lat,4); //imprimo lat con 4 decimales
 Serial.print(',');
 Serial.println(lon,4);  
}
26  International / Software / Re: abrir sd y asignar variable a cada dato on: September 12, 2012, 07:17:13 am
Por hoy ya vale, mañana continuo!!
Ya te iré contando como va la cosa, espero no volver a dar guerra!! jaja

Muchas gracias otra vez
Ciao
27  International / Software / Re: abrir sd y asignar variable a cada dato on: September 12, 2012, 03:42:52 am
Si lo estaba haciendo de la forma que dices, distingo cada secuencia entre comas, en mi caso se llama campo. Y lo convierto en real con la función atof. Y así tengo ya el dato listo para luego operar con el.

Lo que no entiendo muy bien es lo de \n, he mirado y puede tener dos significados: de caracter nulo o nueva línea. A cual te refieres? como se usa?

Muchíiisimas gracias, estoy muy agradecida de verdad!
28  International / Hardware / Re: conversor V-I para mi arduino on: September 12, 2012, 02:17:34 am
Será una servoválvula de consumo variable
29  International / Software / Re: abrir sd y asignar variable a cada dato on: September 12, 2012, 02:12:21 am
Giltesa, muchas gracias por contestar. Te voy a explicar un poco más mi proyecto, para que lo entiendas mejor.
En mi archivo gps.txt tengo datos como estos:(latitud,longitud,cantidad)

,42.46099,2.41741,23,
,42.46099,2.41741,99,
,42.46099,2.41741,12,
,42.46098,2.41741,45,
,42.46098,2.41741,75,
,42.46098,2.41740,33,
,42.46098,2.41740,63,
,42.46098,2.41739,145,
,42.46088,2.42161,35,
,42.46081,2.42151,85,
,42.46075,2.42159,109,
,42.46071,2.42177,67,

El tamaño del archivo variará, en ocasiones tendré 20 filas y en otras 200 por ejemplo.
La idea que yo tengo es leer cada fila tratando los datos como cadena de caracteres, y en el momento que tenga un espacio saltar de línea. A su vez tendré que asignar el número 1, por ejemplo, si estuviese en la primera fila. Así continuaría sucesivamente.
El problema es que no se como podría guardar cada variable de fila, si empleo arrays, cuando tenga muchos datos puede que use excesiva memoria no? Es que es la única manera que se me ocurre.
Otra duda que tenía es como saber cuando he llegado a la última fila. Consultando un libro he encontrado la instrucción eof. Creo que con esta intrucción me valdrá, no?
30  International / Hardware / Re: conversor V-I para mi arduino on: September 12, 2012, 01:25:37 am
buenas, lo siento pero no logro entender muy bien a que te refieres con tu pregunta de la carga...
Pages: 1 [2] 3