Je développe un produit qui est interfacé via USB. Je souhaite écrire une application de contrôle pour cette application, mais je ne peux pas programmer d’interface graphique pour le caca; j’ai donc eu l’idée d’utiliser une page Web (située dans le répertoire d’installation de l’application) en tant qu’interface pour le programme.
La ligne de communication serait donc: Utilisateur -> Page HTML (non hébergée – elle est locale) -> Programme C ++ -> Port USB
J’aimerais le faire de cette façon car il est portable, du moins en ce qui concerne l’interface utilisateur, et je peux écrire du HTML couramment.
Ma question est la suivante: serait-il possible d’utiliser une page HTML pour communiquer avec le port USB via un programme C ++?
Sinon, j’apprendrai le GTK – il est suffisamment portable.
PS Cela serait-il possible avec PHP ou (eugh) Java?
EDIT: Je viens de me rendre compte que PHP est un langage côté serveur – cela ne fonctionnerait pas dans ma situation car la page doit être exécutée en tant que programme (IE, utilisez simplement le navigateur Web et HTML comme interface graphique), le traitement réel étant effectué à l’aide de C / C ++)
Vous pouvez réellement créer des applications Web en C ++ en utilisant un toolkit appelé Wt (API similaire à Qt). Il existe un navigateur autonome ainsi qu’un module pour Apache. De cette façon, vous pouvez utiliser C ++ comme langage de programmation de la même manière que vous utiliseriez C # avec ASP.NET, vous pouvez donc également utiliser votre code C ++ existant. Ce n’est pas vraiment élégant cependant.
En fait, je vous recommanderais d’apprendre Qt et d’écrire toute l’application par dessus. Il est incroyablement portable et dispose d’une API étendue pour à peu près tout – c’est un framework d’application. GTK + ne fait que l’interface utilisateur, et en C, bien que l’encapsuleur GTKmm pour C ++ soit agréable. Consultez-le sur http://qt.nokia.com – il est disponible sous la licence GNU LGPL.
J’ai utilisé mongoose pour contrôler un serveur via HTTP / HTML. J’ai généré les pages directement en C ++, mais je ne vois pas pourquoi vous ne pouviez pas appeler l’interpréteur PHP pour afficher le contenu de la page.
Sauf si vous écrivez un plug-in de navigateur (pas très portable), un navigateur affichant une page Web ne peut pas simplement appeler des fonctions dans votre programme C ++.
Si vous souhaitez contrôler un périphérique à partir d’un navigateur, votre programme C ++ doit incorporer un serveur Web. Ainsi, quand un lien ou un bouton est cliqué, le programme C ++ reçoit une connexion sur un socket écouté et peut faire n’importe quoi.
C’est une chose parfaitement respectable à apprendre (probablement en utilisant des bibliothèques tierces pour aider avec l’aspect serveur Web), mais apprendre à écrire une application avec une interface graphique, et cette dernière est plus directement au point ici 😉
Certes, Java peut faire la même chose. Vous pouvez même exécuter PHP à partir de la ligne de commande et implémenter votre serveur en PHP, bien que ce soit un peu à l’envers de la façon dont PHP est utilisé normalement.
Si vous voulez le faire, votre programme C ++ devra jouer le rôle de serveur http. Autant que je sache – de nombreux utilitaires de configuration de routeur fonctionnent de cette façon (à l’exception de l’Apple Airport Express / Extreme) – ils ont un petit fichier httpd fonctionnant avec des pages HTML servies via CGI.
Découvrez HTMLayout . Le composant de bas niveau, HTMLayout lui-même, est gratuit. Pour le moment, pour autant que je sache, il s’agit uniquement de Windows, mais des travaux sont en cours pour le porter sous Linux et Mac. (Un port Windows Mobile existe déjà). Ils ont également Sciter, qui est construit autour de HTMLayout et contient des fonctions de script. Découvrez les démos, elles sont impressionnantes!
(Désolé si cela ressemblait à une prise. Je ne suis pas affilié à eux, mais j’aime beaucoup HTMLayout :)).
La chose la plus proche à laquelle je puisse penser est d’écrire un plugin Firefox / Chrome / IE / Safari et de l’installer sur son navigateur pour exécuter votre interface graphique afin de contrôler votre appareil.
Vous pouvez intégrer un simple serveur http (par exemple, http://code.google.com/p/mongoose/ ) qui expose une interface REST à la fonctionnalité de vos applications et sert une page HTML pouvant effectuer des appels vers l’interface.