Étape 1: Une page sur l’échec
Voici quelques choses que j’ai essayé... qui n’a pas fonctionné. Ce sont des trous de lapin que j’ai pris et presque m’a amené à renoncer.
-Tout d’abord j’ai tenté de charger toutes les pages de js de franc-bord et toutes ses dépendances normalement et simplement nourrissent directement au client par la réutilisation de code d’un membre du forum bien connu arduino, zoomkat et wifiwebserver. Cela m’a amené à proposer quelque chose comme ce que vous voyez ici :
Ce qui se passe ici est que tant que le fichier flux vient hors de l’espace mémoire sur le linkit un qu'il se mettre dans une mémoire tampon en RAM, puis à partir de cette mémoire tampon du flux déversé dans les files d’attente sortantes des pile de réseau. Cela pose deux questions :
Ce premier tampon est en fait assez minuscule et lecture d’un fichier de la ROM n’est pas particulièrement rapide. Donc, ce que vous vous retrouvez avec sont très lent de chargement des pages. Parfois ils alors expirer ou faire d’autres choses bizarres. J’ai wiresharked (https://www.wireshark.org/) la connexion et on dirait qu’elle recrache seulement de petits paquets d’environ 50 octets (plus tard, il commença à faire sens pour moi que la mémoire tampon utilisée lors de la lecture de fichiers en est probablement de cette taille). Franc-bord a fait un tas de dépendances dont il a besoin de charger. Certains d'entre eux faire choses simultanées et chargement dynamiquement des trucs. Cela ne fonctionne pas dans un programme linéaire simple. Il y a probablement des moyens pour que cela fonctionne sur un arduino, mais pas facilement (un départ serait de chercher ici : https://learn.adafruit.com/multi-tasking-the-ardu... .
J’ai essayé d’utiliser diverses méthodes de lecture du fichier en et en s’assurant que la mémoire tampon était presque plein avant d’envoyer plus de données au client. mais n’a pas aller très loin. J’ai aussi essayé readUntil et ses variantes. Aucun d'entre eux a fait le tour
Certains assortiment de liens que j’ai lu au cours de cette exploration de trou de lapin :
http://forum.Arduino.cc/index.php?topic=279849.msg...
http://Playground.Arduino.cc/code/WebServerST
http://forum.Arduino.cc/index.php?topic=279849.msg...
https://www.Arduino.cc/en/Reference/StreamReadStr...
Enfin, j’ai décomposé et cherché quelque chose de très léger pour satisfaire mon désir pour une représentation graphique de données ainsi que l’exposition de json des données. Ce que je suis venu avec rellies sur les éléments de « compteur » ou « intérimaire » de html 5. Ce sont essentiellement minuscules graphiques à barres qui restituent sans page .js externe comprend ou style de poids lourd. Voici les os à nu.
Le code de la page avec que je suis venu quelque chose comme ça avait l’air (et a été lu par quelque chose de semblable à la liste ci-dessus, mais avec un ajout de présenter les lectures de batterie au format json à /bat) :
Cependant, je suis tombé sur un autre problème avec mon code...
Si j’étais à charger une page html et cette page html devrait essayer de faire un HTTP GET à quelque chose sur le linkit un alors rien ne se passerait. J’étais perplexe, jusqu'à ce que j’ai pensé à elle. Le code était célibataire fileté et le blocage. Donc, il était en attente jusqu'à ce que la page initiale a été faite chargement pour charger la page suivante. Ce n’est jamais arrivé, et alors il s’est coincé.