Question

Tous les exemples dans l'App Demo TCPIP sont construites à l'aide d'un programme personnalisé qui conçoit une page Web qui déclenche callbacks lorsque la page Web est modifiée. Est-il possible d'obtenir une valeur d'un capteur toutes les X secondes et envoyer les données au-dessus d'un HTTP POST?

Était-ce utile?

La solution

Je le fais en ce moment. Lecture de la valeur du capteur toutes les x secondes devrait être assez explicite, mais coder le message avec un « POST » est un peu plus délicat.

Je l'ai fait quelque chose comme le paquet générique suivant:

        TCPPutROMString(MySocket, (ROM BYTE*)"POST ");
        TCPPutROMString(MySocket, RemoteURL);
        TCPPutROMString(MySocket, (ROM BYTE*)" HTTP/1.1\r\nHost: ");
        TCPPutROMString(MySocket, ServerName);
        TCPPutROMString(MySocket, (ROM BYTE*)"\r\nContent-Length:         
                        [put number of all following characters here]\r\n\r\n");
        TCPPutROMString(MySocket, (ROM BYTE*)"variable1=whatever");
        TCPPutROMString(MySocket, (ROM BYTE*)"&variable2=whatever");
        TCPPutROMString(MySocket, (ROM BYTE*)"&variable3=whatever");

Autres conseils

Je suis assez sûr que votre page Web doit demander les données du serveur. Je ne l'ai jamais vu où le serveur pourrait forcer une mise à jour de la page. Vous pouvez essayer d'utiliser les balises meta pour actualiser la page ou construire une applet java pour demander un fichier contenant des variables dynamiques pour les données du capteur que vous voulez lire. Je l'avais aussi pensé à écrire mon propre protocole basé sur telnet qui pousserait les données vers une application qui s'y est connecté sur un port TCP / IP, mais a décidé que ne serait pas beaucoup mieux que d'utiliser le protocole HTTP qui a déjà été pris en charge à fournir données à mon applet. Il serait sans doute beaucoup plus rapide, mais aussi beaucoup plus de travail. Cela dépend vraiment de la fréquence que vous souhaitez que les données à mettre à jour. Si elle est de l'ordre de 5-10 secondes et vous avez seulement une seule connexion puis en utilisant HTTP devrait fonctionner correctement. Si vous avez plusieurs connexions et que vous voulez des données mises à jour chaque seconde ou vous voudrez peut-être aller la route Telnet. Je ne l'ai pas vu toutes les applications de démonstration qui font, mais ce serait bien de Microchip pour fournir une application de démonstration pour cela car j'ai eu le même problème que vous rencontrez.

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