Question

J'ai un appareil intégré exécutant une version allégée d'un serveur HTTP.Actuellement, il peut afficher des pages HTML statiques.Voici un exemple de la façon dont il affiche une page HTML statique :

   char *text="HTTP/1.0 200 OK\r\nContent-Type: text/html\r\n\r\n"
          "<html><body>Hello World!</body></html>";
   IPWrite(socket, (uint8*)text, (int)strlen(text));
   IPClose(socket);

Ce que j'aimerais faire, c'est afficher du contenu dynamique, par ex.une lecture d'un capteur.Ce à quoi j'ai pensé jusqu'à présent, c'est d'actualiser la page de temps en temps avec

<meta http-equiv="refresh" content="600">

et utilisez sprintf() pour attacher la lecture du capteur au texte variable pour la réponse.

Existe-t-il un moyen de le faire sans avoir à actualiser constamment la page ?

Était-ce utile?

La solution

Vous pouvez essayer l'approche suivante (d'après mon expérience):- Divisez le contenu statique et dynamique, minimisez le contenu dynamique.

  • Créez une pseudo interface CGI, c'est-à-direURL votre_site_embedded/sensor.cgi doit être lié à la génération de la réponse HTTP suivante :

sprintf(cgi_str, "HTTP/1.0 200 OK\r\nContent-Type: text\r\nContent-Length: %d\r\n\r\nvalue=%02d", 8, sensor_value);

ou simplement (c'est tout à propos de vos considérations de conception) :

sprintf(cgi_str, "HTTP/1.0 200 OK\r\nContent-Type: text\r\nContent-Length: %d\r\n\r\n%02d", 2, sensor_value);

  • Utilisez un simple javascript ou une petite applet Java pour demander périodiquement votre_site_embedded/sensor.cgi.Notez que javascript dépend généralement du navigateur et peut être désactivé, l'applet java nécessitera également du contenu statique supplémentaire - certains *sensor_reader.class" mais il a une liberté extraordinaire dans la présentation des données et l'extension de la lecture et de l'affichage simples avec plus de fonctionnalités.

Cela permet d'organiser la communication de manière très efficace, au lieu de recharger la page entière :une partie du code - le front-end de l'utilisateur - sera exécutée dans le navigateur, l'autre partie - le back-end - sur le périphérique embarqué.

Autres conseils

S'il vous plaît faire pas Utilisez un applet Java pour fournir ceci.

Côté client AJAX et JavaScript Faites ce genre de chose facile, sans la méchanceté d'un applet incorporé.

Où "Nastise" peut inclure:

  • Java Security Problèmes
  • Java Runtime Mismatches
  • augmentation de la taille de la charge utile (les applets sont grands, comparés aux extraits de code JavaScript)
  • Problèmes de vitesse (il peut être lent pour démarrer l'applet)
  • La page Web est plus difficile à maintenir
  • et ainsi de suite.

    En résumé: c'est 2013, utilisez simplement JavaScript et Ajax.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top