Autor Tema: Problemas con fopen()  (Leído 2068 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado jgpeiro06

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 276
Problemas con fopen()
« en: 26 de Marzo de 2008, 13:42:43 »
No se xq pero no consigo que funcione correctamente esta funcion. Compila correctamente y cuando entra en la funcion el debugger me muestra un error.... el codigo es este y lo he cogido del manual de microchip. En el directorio del proyecto he creado previamente dos archivos afile1 y afile1.txt, pero no se cual de los dos intentara leer...

#include <stdio.h> /* for fopen, fclose, */
/* printf,FILE, NULL, EOF */
int main(void)
{
FILE *myfile1, *myfile2;
int y;
if ((myfile1 = fopen("afile1", "w+")) == NULL)
printf("Cannot open afile1\n");
else
{
printf("afile1 was opened\n");
y = fclose(myfile1);
if (y == EOF)
printf("afile1 was not closed\n");
else
printf("afile1 was closed\n");
}
}

saludos

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Problemas con fopen()
« Respuesta #1 en: 26 de Marzo de 2008, 16:05:15 »
¿Qué vas a leer con esa función? ¿Una memoria SD? El archivo debe estar conectado por hardware a tu microcontrolador (asumo que es microcontrolador por estar en este subforo), es decir, ubicado en un disco duro o memoria SD conectada físicamente al micro.

Al depurarlo el programa no sabe qué archivos tienes en la carpeta de tu proyecto, es completamente ajeno.

Desconectado jgpeiro06

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 276
Re: Problemas con fopen()
« Respuesta #2 en: 27 de Marzo de 2008, 10:51:53 »
Si, es un microcontrolador. Trabajo con un dspic, y con el MPLAB C30. Hace mucho tiempo utilice estas librerias, creo que con el MPLAB, aunque es posible que fuera para un programa xa PCs. ¿que he de hacer entonces para poder trabajar con archivos?¿alguno tiene algun proyecto basico donde se usen?

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Problemas con fopen()
« Respuesta #3 en: 27 de Marzo de 2008, 11:03:28 »
A mi solo se me ocurre que consigas un adaptador sd para circuito impreso o para protoboard y una memoria sd formateada en fat, pero para leer todo eso necesitas implementar el código de lectura fat y programar la interfaz SPI para comunicarte con la SD, son varias cosas por hacer.

Desconectado jgpeiro06

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 276
Re: Problemas con fopen()
« Respuesta #4 en: 04 de Abril de 2008, 11:22:57 »
por fin tengo la prueba de que no me equivocaba...

mira este codigo funciona perfectamente, crea un archivo y escribe dentro de el.

#include <stdio.h>
int main()
{
FILE *fichero;
fichero = fopen("salida.txt", "a");
fprintf(fichero, "hola_mundo");
fclose(fichero);
return 0;
}

No es necesaria ni fat, ni memoria externa ni nada de nada(solo simular con el MPLAB)

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Problemas con fopen()
« Respuesta #5 en: 04 de Abril de 2008, 22:52:54 »
Hola

Se me hace extraño que usando un microcontrolador vincule archivos en la computadora, el programa no tiene la cabecera del micro que estás usando, no entiendo. Pero que bueno que funciona, gracias por avisarnos.  :mrgreen:

¿Qué código en archivo .hex te genera?

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Problemas con fopen()
« Respuesta #6 en: 05 de Abril de 2008, 02:04:04 »
¿Dónde se genera el fichero?, ¿en la ram del micro?

Desconectado jgpeiro06

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 276
Re: Problemas con fopen()
« Respuesta #7 en: 05 de Abril de 2008, 06:03:27 »
El archivo se graba en el disco duro, en el derectorio del proyecto del MPLAB. No se que ocurriria si usamos el codigo directamente en el micro soldado en una board, pero hasta que pueda comprobarlo rezare a mis dioses para que el MPLAB reserve una zona de la memoria del micro para usarla como disco duro.
Si funciona con el MPLAB SIM, alguna manera debe haber de hacerlo funcionar dentro del micro, pero tamapoco yo lo tengo claro del todo....
...seguire investigando...

Desconectado manex_1987

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1127
Re: Problemas con fopen()
« Respuesta #8 en: 05 de Abril de 2008, 06:33:59 »
...y mi pregunta es... si metes a un micro ese programa, que hace exactamente?

Lo de FOPEN y demas es algo que nunca he entendido... pero que tampoco se me va la vida en ello como para abrir un hilo sobre eso...

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Problemas con fopen()
« Respuesta #9 en: 05 de Abril de 2008, 11:32:54 »
Mejor empieza escribiendo el código para un micro en específico. Es difícil que mplab asigne una zona de memoria para "simular" un disco duro, eso lo tendría que hacer con hardware externo, como te decía, con una sd card por ejemplo.

fopen y las demás funcionan para gestionar archivos, pero en tu proyecto lo hacen sobre el disco duro de tu pc, así no tiene chiste para depurar algo sobre un micro  :mrgreen:


 

anything