Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » Serial_DLFiles
Dark storm Hors ligne Labélisateur Points: 11538 Défis: 176 Message

Serial_DLFiles

Posté le 06/05/2014 18:03

Salut à tous !

Vous en avez sans doute entendu parler, Lephenixnoir développe en ce moment un interpréteur HTML pour lire des fichier .htm onCalc.
Bien entendu, les lire en local, c'est cool, mais les télécharger depuis une carte SD, ou Internet, c'est mieux !
Le problème, c'est que lorsqu'on a une Graph SD, tout va bien, mais dès que l'on a pas le fameux port, il faut se débrouiller autrement.

C'est dans cette optique que j'ai créé un utilitaire, Serial_DLFiles, petit add-in (de 11 300 octets environ), qui permet de télécharger des fichiers via le port 3-pins. Un peu comme le transfert calto <> calto, mais qui n'a pas besoin de réponse de la part de l'émetteur, et surtout qui est bien plus rapide.

Cet add-in fonctionne à 115200 bauds (donc environ 115200 octets/seconde dans notre cas). Il demande la taille du fichier à recevoir et le nom sous lequel il doit être enregistré.

En parallèle, j'ai codé une petite application pour Arduino qui permet d'envoyer des fichiers depuis une carte SD connectée à celle-ci via un shield spécial. Ici, c'est mon écran tactile qui possède un port SD.

Voici une vidéo de démonstration :


Comme vous pouvez le constater, le transfert s'effectue très rapidement (un peu moins de 2 secondes pour 10 000 octets en moyenne) mais il est bridé à des fichiers de taille maximale de 10 000 octets. Une future mise à jour devrait résoudre ce problème.

Pour ce qui est des sources, vous pouvez trouver celles de Serial_DLFiles en pièce-jointe, mais en ce qui concerne celles de l'utilitaire Arduino, étant donné que chacun a du matériel différent, voici la fonction servant à envoyer des fichiers. Elle est à adapter en fonction de votre Arduino + shield SD + librairies utilisées :

Cliquez pour découvrir
Cliquez pour recouvrir
void sendFile(char *fName)
{
  char textBuffer[512];
  int result;

  error = file.openFile(fName, FILEMODE_BINARY);

  if(error == NO_ERROR)
  {
    printMsg("Sending..."); // à vous de voir comment afficher les messages/erreurs (via le serial, écran, autre...)
    result = 0;
    
    while ((result != EOF) and (result != FILE_IS_EMPTY))
    {
      result = file.readBinary();
      
      if (result != FILE_IS_EMPTY)
      {
        memcpy(textBuffer, file.buffer, result);          
        serialCalc.write((uint8_t*)textBuffer, result);
      }
      else
        printMsg("** ERROR: File is empty...");
      
      if(result < 512) break; // si on est à la fin du fichier, on quitte
      
      serialCalc.flush(); // on attend que les données ont été envoyées
    }
    
    printMsg("Done !");
    printMsg("");
    file.closeFile();
  }
  else // si le fichier n'a pas été ouvert
  {
    switch(error)
    {
    case ERROR_ANOTHER_FILE_OPEN:
      printMsg("* ERROR: Another file is already open.");
      break;
    case ERROR_FILE_NOT_FOUND:
      printMsg("* ERROR: File not found.");
      break;
    }
  }
}


Vous pouvez trouver de temps en temps des bugs dans l'utilitaire onCalc, la version ci-jointe n'est pas une version définitive.

Bref, pour conclure, ce système ouvre la voie à d'autres améliorations, comme le transfert de fichiers depuis Internet

Enjoy !

Fichier joint


Lephenixnoir Hors ligne Administrateur Points: 20789 Défis: 143 Message

Citer : Posté le 06/05/2014 18:16 | #


Je ne pense pas que mon interpréteur HTML/CSS puisse être en mesure de lire des fichiers classiques.
En revanche, rien ne nous empêche d'envoyer sur un serveur nos pages adaptées.

De plus, la navigation sur Internet est je pense, hord de portée de la calculatrice du fait du manque de mémoire, et de la taille des contenus médias.
Peut-être que si un nouvel OS est mis en place, nous saurons obtenir de meilleurs résultats, mais dans l'état actuel des choses à moins d'utiliser une carte SD (et encore), il nous sera simplement impossible de naviguer sur l'Internet classique, car les restrictions sont trop grandes.

En revanche, rien ne nous empêche de faire une version de PC consultable depuis les calculatrices.
Dark storm Hors ligne Labélisateur Points: 11538 Défis: 176 Message

Citer : Posté le 06/05/2014 18:18 | #


Après, l'Arduino est totalement capable de filtre du contenu (images, scripts, etc)
Donc je suis convaincu qu'il est possible de lire une version simplifiée de toutes les pages web (tant qu'elles sont pas trop complexes, du genre avec du Java/Flash de partout )
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lephenixnoir Hors ligne Administrateur Points: 20789 Défis: 143 Message

Citer : Posté le 06/05/2014 18:22 | #


Je vais être clair sur la situation (sans pour autant être méchant ).
WebCalc ne sait pas afficher des pages web classiques, et sa constitution ne le permet pas. Il ne remplit pas les mêmes fonctions et ne fait pas appel aux mêmes outils.

En clair, pour faire une adaptation pour le HTML classique, il faudra reprendre à zéro.
Dark storm Hors ligne Labélisateur Points: 11538 Défis: 176 Message

Citer : Posté le 06/05/2014 18:23 | #


Ah, ok
Je pensais que tu gérais les balises "classiques" (html, head, body, p, etc)
Si c'est le cas, il suffit de virer (via l'arduino) tout ce que la calto ne peux pas lire
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lephenixnoir Hors ligne Administrateur Points: 20789 Défis: 143 Message

Citer : Posté le 06/05/2014 18:27 | #


En fait, oui.
Mais je ne gère ni le positionnement, ni l'alignement CSS, etc...
Dark storm Hors ligne Labélisateur Points: 11538 Défis: 176 Message

Citer : Posté le 06/05/2014 18:33 | #


Donc si on vire tout ça, on peut lire du html (c'est moche mais on le fera)
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lephenixnoir Hors ligne Administrateur Points: 20789 Défis: 143 Message

Citer : Posté le 06/05/2014 18:38 | #


Ça ne ressemblera à rien
Dark storm Hors ligne Labélisateur Points: 11538 Défis: 176 Message

Citer : Posté le 06/05/2014 18:51 | #


Si, à du texte suivi de texte
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lephenixnoir Hors ligne Administrateur Points: 20789 Défis: 143 Message

Citer : Posté le 06/05/2014 19:11 | #


Et encore, ce ne sera pas positionné.
Et surtout !
Aucune différence entre "px", "em" et "%" !

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2021 | Il y a 72 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd