Libfat è una libreria molto importante perchè ci permette di leggere o scrivere da periferiche esterne come la carta SD o la slot della memory card GC, questa libreria è già inclusa nell’ambiente di lavoro DevKitPRO vediamo prima di tutto che file comprende e dove si trova.
La troviamo nella cartella liogc e comprende e comprende tre file, tra cui due librerie statiche ed un header per compilazione c.

1
2
3
4
5
6
7
8
9
DevkitPRO
   libogc
      include
         fat.h
      lib
         wii
            libfat.a
         cube
            libfat.a

L’Header “fat.h” va sempre inserito come “include” del nostro proggetto, prendiamo subito in considerazione un esempio pratico:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <stdio.h> 
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
#include <fat.h>
 
int fd = 0, ret = 0 ;
char buff [ 80 ]= "" ;
char mesg [ 11 ]= "Viva il Wii" ;
bool bfatok = fatInitDefault ();
 
if ( bfatok ) {
     iprintf ( "fat inizializatan" );
} else { 
     iprintf ( "fat non inizializzatan" );
}
if ( bfatok ) {
     fd = open ( "test.txt" , O_RDWR );
     printf ( "fd :%dn" , fd );
     ret = read ( fd , buff , 80 );
     buff [ ret ]= '' ;
     printf ( "buff: %s nlunghezza: %d Bytesn" , buff , ret );
     write ( fd , mesg , 7 );
     close ( fd );
}

Subito da notare la funzione ” fatInitDefault ()”, questa infatti ci permette di inizializzare le periferiche di storaggio (scheda SD, USBstick o USBHD, ecc), questa funzione ci da come risultato un boolean e grazie ad un controllo “if” si può determinare se l’operazione è andata a buon fine.
Se tutto è andato a buon fine allora posso aprire un file che per comodità ho chiamato “text.txt” grazie alla funzione “open()”, questa ha bisogno di 2 parametri il primo indica il file da dover aprire e il secondo IL FLAG indica i quali operazioni si possono fare sul file.
In questo script ho utilizzato il valore di poter scrivere e leggere il file con posizione all’inizio del file ma esistono altri:
O_RDONLY = Apre un file per la lettura. La posizione e’ all’inizio del file.
O_WRONLY = Apre un file per la scrittura. La posizione e’ all’inizio del file.
O_CREAT = Se pathname non esiste viene creato. In mancanza di questo flag, viene tornato un errore.
O_EXCL = Quando usato con O_CREAT, se il file e’ esistente viene tornato un errore a la open fallisce.
O_TRUNC = Un file esistente verra’ troncato.
O_APPEND = Apre il pathname in append. Le successive operazioni di scrittura verranno accodate alle informazioni gia’ presenti nel pathname.
O_NOFOLLOW = Se il pathname e’ un link simbolico, allora la open fallisce.
O_DIRECTORY = Se il pathname non e’ una directory, allora la open fallisce.
Una Volta aperto il file stampo sullo schermo il risultato, poi leggo il buffet grazie alla funzione “read()” e la sua lunghezza, la visulaizza sullo schermo ed infine riscrive il file con il messaggio “Viva Wii” con la funzione “write” ed infine chiude il file con la funzione “close()”, quest’ultima è molto importante se apportiamo modifiche ai dati del file perchè questa permette di scrivere su periferica, non facendo questa operazione il nostro file rimarrà inalterato anche se abbiamo cambiato i dati in memoria.

RiujiAndy

Tratto e concesso da: http://ryujiandy.ath.cx/

Related Posts with Thumbnails

Tags: , , , , ,

Leave a Reply

Seguici su…

Siti Amici
Tag
Fan su FB