Modifications

Sauter à la navigation Sauter à la recherche
6 843 octets supprimés ,  22 septembre 2018 à 15:16
Ligne 20 : Ligne 20 :     
Thoses exemples would allow you to format the Flash memory with the FAT filesystem (the same filesytem than used on SD card), read and write files like we do with SD card.
 
Thoses exemples would allow you to format the Flash memory with the FAT filesystem (the same filesytem than used on SD card), read and write files like we do with SD card.
  −
== Lire et écrire des fichiers CircuitPython ==
  −
L'exemple '''fatfs_circuitpython''' montre comment lire et écrire des fichiers sur la mémoire flash de sorte qu'ils puissent être accéssible depuis CircuitPython/MicroPython.  Cela signifie que vous pouvez exécuter un programme CircuitPython sur votre carte pour y stocker des données, puis utiliser un croquis Arduino qui utilise cette bibliothèque pour interagir avec ces mêmes données.
  −
  −
Notez qu'avant d'utiliser l'exemple '''fatfs_circuitpython''' vous '''devez''' avoir chargé CircuitPython sur votre carte. [[FEATHER-M0-MicroPython|Voyez ce guide pour charger la dernière version de CircuitPython]] afin que le système de fichier CircuitPython soit écrit et initialisé sur la puce Flash. Une fois CircuitPython chargé sur la carte, vous pouvez exécuter le croquis '''fatfs_circuitpython'''.
  −
  −
Pour exécuter le croquis, il faut le charger dans Arduino IDE et le téléverser sur la carte Feather M0. Ensuite, il faut ouvrir le moniteur série à 115200 baud. Vous devriez voir des messages s'afficher lorsqu'il essaye de lire et écrire des fichiers sur la mémoire Flash.
  −
  −
Plus spécifiquement, l'exemple cherche les fichiers '''boot.py''' et '''main.py''' (puisque CircuitPython exécute ces fichiers au démarrage) et affiche leur contenu. Puis il ajoute une ligne à la fin du fichier '''data.txt''' présent sur la carte (le fichier est créé s'il n'existe pas encore). Après avoir exécuté le croquis, vous pouvez recharger CircuitPython sur la carte et charger et lire le fichier '''data.txt''' depuis CircuitPython!
  −
  −
Voyons un peu le code du croquis pour comprendre comment lire et écrire des fichiers CircuitPython. Pour commencer une instance de la classe '''Adafruit_M0_Express_CircuitPython''' est crée en lui passant un instance de la classe SPIFlash (permettant d'accéder à la mémoire Flash):
  −
  −
<syntaxhighlight lang="c">
  −
#define FLASH_SS      SS1                    // broche SSP de la Flash
  −
#define FLASH_SPI_PORT SPI1                  // port SPI surlequel est branché la mémoire Flash
  −
  −
Adafruit_SPIFlash flash(FLASH_SS, &FLASH_SPI_PORT);    // Utiliser le bus SPI matériel
  −
  −
// Il est possible d'utiliser d'autres broches comme bus SPI (SPI logiciel)!
  −
//Adafruit_SPIFlash flash(SCK1, MISO1, MOSI1, FLASH_SS);
  −
  −
// Pour finir, créer un objet Adafruit_M0_Express_CircuitPython qui offre un accès
  −
// à une interface de type Carte SD pour interagir avec les fichiers stockés dans
  −
// le système de fichier Flash de CircuitPython.
  −
Adafruit_M0_Express_CircuitPython pythonfs(flash);
  −
</syntaxhighlight>
  −
  −
En utilisant la classe '''Adafruit_M0_Express_CircuitPython''' vous obtenez un objet de type ''système de fichier'' compatible avec en lecture et écriture avec le formattage de la mémoire Flash de CircuitPython. C'est très important pour l'interopérabilité entre CircuitPython et Arduino étant donné que CircuitPython dispose d'un partitionnement spécifique et d'un agencement particulier de la mémoire flash qui n'est pas compatible avec des bibliothèque plus "simple" (que vous pourriez rencontrer dans les autres exemples).
  −
  −
Une fois l'instance de la classe '''Adafruit_M0_Express_CircuitPython''' créée (instance appelée '''pythonfs''' dans le croquis) vous pouvez interagir avec elle comme s'il s'agissait de la [https://www.arduino.cc/en/Reference/SD bibliothèque carte SD d'Arduino].  Vous pouvez ouvrir des fichiers en lecture ou écriture, créer des répertoires, effacer des fichiers et répertoires et plus encore.
  −
  −
Voici un croquis qui vérifie la présence du fichier '''boot.py''' et affiche sont contenu (un caractère à la fois):
  −
  −
<syntaxhighlight lang="c">
  −
  // Vérifie si le fichier boot.py existe puis affiche le contenu.
  −
  if (pythonfs.exists("boot.py")) {
  −
    File bootPy = pythonfs.open("boot.py", FILE_READ);
  −
    Serial.println("Afficher boot.py...");
  −
    while (bootPy.available()) {
  −
      char c = bootPy.read();
  −
      Serial.print(c);
  −
    }
  −
    Serial.println();
  −
  }
  −
  else {
  −
    Serial.println("Pas de fichier boot.py...");
  −
  }
  −
</syntaxhighlight>
  −
  −
Notez l'appel de la fonction '''exists''' qui vérifie la présence du fichier boot.py, puis l'utilisation de la fonction '''open''' pour ouvrir celui-ci en mode lecture (''read'' en anglais''). Une fois fichier ouvert vous obtenez une référence vers un objet de la classe File  qui permet de lire et écrire dans le fichier comme s'il s'agissait d'un périphérique Serial (encore une fois, [https://www.arduino.cc/en/Reference/SD toutes les fonctions de la classe File] sont identiques à celle de la classe carte SD).
  −
  −
Dans ce cas, la fonction '''available''' retournera le nombre d'octets (''bytes'') restant à lire jusqu'à la fin du fichier -et- la fonction '''read''' lit un caractère à la fois (pour l'afficher sur le moniteur série).
  −
  −
L'écriture d'un fichier est tout aussi simple, voici comment le croquis ajoute des données dans le fichier '''data.txt''':
  −
  −
<syntaxhighlight lang="c">
  −
  // Créer et ajouter des données dans le fichier data.txt
  −
  // puis ajouter un retour à la ligne.
  −
  // Le code CircuitPython pourra, plus tard, ou consulter
  −
  // le contenu de ce fichier!
  −
  File data = pythonfs.open("data.txt", FILE_WRITE);
  −
  if (data) {
  −
    // Ajouter une nouvelle ligne de donnée:
  −
    data.println("Un bonjour a CircuitPython de la part d Arduino!");
  −
    data.close();
  −
    // Voir les autre exemples fatfs comme fatfs_full_usage
  −
    // et fatfs_datalogging pour plus d'exemples concernant
  −
    // les interactions avec les fichiers.
  −
    Serial.println("Nouvelle ligne ajoutée au fichier data.txt!");
  −
  }
  −
  else {
  −
    Serial.println("Erreur, ne sais pas ouvrir le fichier en écriture!");
  −
  }
  −
</syntaxhighlight>
  −
  −
Cette fois encore, la fonction '''open''' est utilisée pour ouvrir le fichier si ce n'est que cette fois, le fichier est ouvert en lecture (''write'' en anglais). Dans ce mode, le fichier est ouvert en ajout (les données sont ajoutées en fin de fichier) si ce dernier existe. A noter le mode écriture crée le fichier si celui-ci n'existe pas. Une fois le fichier ouvert, les fonctions tels que '''print''' et '''println''' peuvent être utilisées pour écrire des données dans le fichier (juste comme envoi des données vers le moniteur série). Une fois le traitement terminé, la fonction '''close''' ferme le fichier!
  −
  −
Voilà, nous en avons terminé avec les opérations fondamentales de lecture et d'écriture. Voyez l'exemple '''fatfs_full_usage''' pour un apercu des fonctionnalités avancées tels que la création de répertoire, effacement de fichiers et répertoires, obtention de la taille d'un fichier, etc!  Rappelez vous que pour interagir avec les fichiers CircuitPython, il faudra utiliser la classe '''Adafruit_Feather_M0_CircuitPython''' comme indiqué dans l'exemple ci-dessus!
      
== Formatter  la mémoire Flash ==
 
== Formatter  la mémoire Flash ==
29 837

modifications

Menu de navigation