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/
Tags: ISO, Libreria, Librerie, Programmazione, USB, wii




