2010-10-03 611 views
11

Estoy desarrollando un producto que está interconectado a través de USB. Quiero escribir una aplicación de control para ella, pero no puedo programar una interfaz gráfica para caca, por lo que se me ocurrió la idea de usar una página web (local para la aplicación del directorio de instalación) como interfaz para el programa.¿Alguna forma de usar HTML como interfaz para un programa C/C++?

Así, la línea de comunicación sería: Usuario -> página HTML (no acogió - es local) -> programa de C++ -> puerto USB

me gustaría hacerlo de esta manera porque es portátil, al menos UI, y puedo escribir HTML con fluidez.

Mi pregunta es esta: ¿sería posible usar una página HTML para hablar con el puerto USB a través de un programa C++?

Si no es así, voy a aprender GTK - es lo suficientemente portátil.

PS. ¿Sería esto posible con PHP o (eugh) Java?

EDIT: acaba de darse cuenta PHP es un lenguaje del lado del servidor - no funcionaría en mi situación porque la página debe ejecutarse como un programa (IE, simplemente use el navegador web y HTML como la GUI, con el procesamiento real hecho usando C/C++)

+0

PHP no * tiene * para ejecutarse solo en el lado del servidor; solo se usa más comúnmente de esa manera. http://gtk.php.net/ –

+0

exec ssi (http://en.wikipedia.org/wiki/Server_Side_Includes) ??? No sé si funciona, cómo funciona, si es bueno o malo ... realmente no sé nada acerca de esta sugerencia: por lo tanto, no es una respuesta – pmg

Respuesta

8

Puede crear aplicaciones web en C++ utilizando un kit de herramientas llamado Wt (API similar a Qt). Hay un navegador independiente y un módulo para Apache. De esta forma, puede usar C++ como su lenguaje de programación de la misma manera que lo haría con C# con ASP.NET, y así también puede usar su código C++ existente. Aunque no es realmente elegante.

De hecho, te recomiendo que aprendas Qt y escribas toda la aplicación encima. Es increíblemente portátil y tiene una extensa API para casi todo: es un marco de aplicación; GTK + solo hace la interfaz de usuario, y en C, aunque la envoltura de GTKmm para C++ es agradable. Compruébelo en http://qt.nokia.com - está disponible bajo GNU LGPL.

+0

Gracias por la información sobre GTK, pensé que era una especie de herramienta. Definitivamente me quedaré con Qt entonces. He sumergido mis dedos en él antes, así que quitaré el polvo del Qt IDE y me desarrollaré. – Bojangles

+0

@JamWaffles Te recomiendo que tomes el último SDK del sitio web de Qt, el IDE ha tenido algunas actualizaciones importantes en las últimas versiones. – CMircea

+1

Estoy bastante seguro (98%) usaré Qt - gracias por el consejo :) – Bojangles

6

He usado mongoose para controlar un servidor a través de HTTP/HTML. Genere las páginas directamente en C++, pero no veo por qué no podría invocar al intérprete de PHP para representar el contenido de la página.

+0

Buena idea: voy a echar un vistazo a la mangosta. En cuanto a la funcionalidad de PHP, no sería necesaria en esta situación, solo necesito ALGUNA forma de controlar el USB, etc., que se realiza mediante C. – Bojangles

2

Si desea hacer eso, su programa C++ debería tener un rol de servidor http. Que yo sepa - un montón de utilidades de configuración del router funcionan de esta manera (a excepción de Apple Airport Express/Extreme) - tienen pequeñas httpd corriendo con páginas html servidas a través de CGI.

+0

Eso es una idea. ¿Sabrías de un servidor que es multiplataforma y puede ejecutarse como una aplicación (no algo como Apache, quiero decir algo pequeño y liviano)? – Bojangles

+0

No realmente, pero estoy bastante seguro de que podría implementarlos usted mismo mediante simples llamadas al sistema. Además, otros están recomendando mangosta. ¡Te sugiero que tomes un tiro! – Eimantas

1

Lo más parecido que puedo pensar es escribir un complemento de Firefox/Chrome/IE/Safari y hacer que el usuario lo instale en su navegador para ejecutar su GUI para controlar su dispositivo.

+0

Buena idea. ¡El único problema es que hay tantos navegadores diferentes que desperdiciaré toda mi vida escribiendo complementos para ellos! : P – Bojangles

5

A menos que escriba un complemento del navegador (no muy portátil), un navegador que vea una página web no puede simplemente llamar a funciones en su programa C++.

Si va a controlar un dispositivo desde un navegador, básicamente su programa C++ necesita incorporar un servidor web. Entonces, cuando se hace clic en un enlace o botón, el programa C++ recibirá una conexión en un socket que está escuchando y puede hacer lo que sea.

Eso es algo perfectamente respetable para aprender a hacer (probablemente usando algunas bibliotecas de terceros para ayudar con el aspecto del servidor web), pero también está aprendiendo a escribir una aplicación GUI, y el último es más directo al grano ;-)

Ciertamente Java puede hacer lo mismo. Incluso puede ejecutar PHP desde la línea de comando e implementar su servidor en PHP, aunque eso es una especie de revés por la forma en que normalmente se usa PHP.

+0

Gracias por eso :) De acuerdo con lo que he leído, definitivamente debería aprender GTK o algo así - sería mucho más beneficioso a largo plazo, así como hacer que esta aplicación funcione :) – Bojangles

1

Usted puede incrustar un servidor http sencilla (por ejemplo http://code.google.com/p/mongoose/) que expone una interfaz REST para su funcionalidad de aplicaciones y sirve una página HTML que se pueden realizar llamadas a la interfaz.

2

Salida HTMLayout. El componente de bajo nivel, HTMLayout en sí mismo, es gratis. Por el momento, solo se trata de Windows, por lo que sé, pero el trabajo está en curso para llevarlo a Linux y Mac. (Un puerto de Windows Mobile ya existe). También tienen Sciter, que se basa en HTMLayout y contiene funciones de scripting. Mira las demos, ¡son impresionantes!

(Lo siento si sonaba como un tapón. No estoy afiliado con ellos, pero me gusta mucho HTMLayout :)).

+0

Gracias, pero esto Prog necesita ser multiplataforma, comenzando con cosas UNIX primero, luego física. – Bojangles

+0

Erm ... parece que quise decir "cosas de UNIX primero, luego Windoze". ¡No tengo idea de dónde venía la física! – Bojangles

Cuestiones relacionadas