surbyte:
Para responder eso debes ser mas específico y comenzar a dar detalles de tu archivo.
Dino como esta conformado tu archivo .txt para luego poder responderte.
Basicamente lees el archivo de tu sd y suponiendo que puedes mantenerlo en el buffer, podrias modificarlo mientras identificas que cambiar y luego volver a guardarlo con los pasos previos (borrar) que sean necesarios.
El archivo que quiero modificar son claves de 7 caracteres en este caso números decimales separadas entre si mediante un final de linea.
Ejemplo:
9879865
5672348
4597365
9863973
y me gustaría poder ver la lista entera y poder por borrar la linea 3 por ejemplo, todo esto desde un pc sin tener que extraer mi tarjeta SD
Lucario448:
Si te refieres a que el Arduino se encargue de la edición del texto, y que el medio de comunicación sea la interfaz... sí.
Lo que quise decir antes, es que la implementación va estar difícil, pero no imposible (en especial con 2 KB de RAM).
Lo primero que se me viene a la mente es: editar línea por línea; al menos así me lo imagino con la comunicación serial como interfaz:
- Leer una línea, mostrarla; luego rescribir esa línea con los cambios para así aplicarlos al archivo.
- Enviar un salto de línea sin texto, significa dejar la actual sin modificaciones (saltársela); y enviar "etiquetas" especiales para comandos como "Ver progreso actual", "Salir sin guardar" y "Salir y guardar".
- Los cambios no se verán reflejados en el archivo original hasta que se envíe el comando de "Salir y guardar".
No sé si me captas la idea...
Con tedioso queria referirme a que el arduino no necesite mucho tiempo para lograrlo, es decir que no este mucho tiempo ocupado, y a mi se me ocurre la idea de leer el archivo entero en el pc y poder verlo, modificarlo y volver a enviarlo entero y así crear un nuevo txt. modificado, pero tampoco tengo muy claro como hacerlo.
noter:
Hola.
Intentaré una breve explicación a ver si arrojo un poco de luz. Podemos imaginarnos un objeto file como un editor de texto sin la opción de insertar ni suprimir. Sólo podemos sobreescribir en cualquier posición, agregar texto al final, o borrar del final del archivo (básicamente es indicarle que el tamaño es menor, con lo que se descartan los caracteres que queden fuera de dicho tamaño). Podemos ubicar un "cursor" de lectura o escritura en cualquier parte del archivo.
Ahora ¿Cómo podemos realizar la supresión de una línea o un trozo de archivo?
Si un archivo tiene una longitud de 100 caracteres y queremos eliminar los cinco últimos, basta con truncar dicho archivo, que es lo mismo que decir que cambie la longitud indicada en su cabecera a 95 caracteres; pero, ¿si esos cinco caracteres están en la posición 50? Pues necesitaremos dos cursores: uno que lea desde la posición 55 a la 100, y otro que vaya escribiendo lo que lee el primero, pero desde la posición 50 a la 95, y finalmente reducir la longitud como en el caso anterior.
Otro método sería utilizar dos objetos File, el primero para leer el archivo completo y el segundo para ir escribiendo en un nuevo archivo lo que lee el primero, saltando la escritura desde el carácter 50 al 55. Finalmente podemos eliminar el fichero A y renombrar el B.
¿Se entiende más o menos?
Lo de los punteros no lo veo claro ya que no seria una forma fácil de modificar ya que tendrías que saber que posición exacta del archivo .txt quieres sustituir, pero muchas gracias por la explicación siempre es bueno escuchar varias opciones pero no la termino de ver clara