2010-10-03 13 views
11

Ich entwickle ein Produkt, das über USB angeschlossen ist. Ich möchte eine Steuerungs-App dafür schreiben, aber ich kann keine GUI für poo programmieren, daher kam ich auf die Idee, eine Webseite (lokal im Installationsverzeichnis der App) als Schnittstelle zum Programm zu verwenden.Jede Möglichkeit, HTML als Schnittstelle zu einem C/C++ - Programm zu verwenden?

So würde die Linie der Kommunikation sein: Benutzer -> HTML-Seite (nicht gehosteten - es lokal ist) -> C++ Programm -> USB-Anschluss

Ich mag würde es auf diese Art und Weise tun, weil es ist portabel, zumindest UI-weise, und ich kann HTML flüssig schreiben.

Meine Frage ist das: wäre es möglich, eine HTML-Seite zu verwenden, um mit dem USB-Anschluss über ein C++ - Programm zu sprechen?

Wenn nicht, werde ich GTK lernen - es ist tragbar genug.

PS. Wäre das mit PHP oder (eugh) Java möglich?

EDIT: Nur realisierte PHP ist eine serverseitige Sprache - es würde nicht in meiner Situation funktionieren, weil die Seite als ein Programm ausgeführt werden muss (IE, verwenden Sie einfach den Webbrowser und HTML als GUI, mit der tatsächliche Verarbeitung erfolgt mit C/C++)

+0

PHP muss * nicht * nur serverseitig ausgeführt werden; Es wird nur am häufigsten verwendet. http://gtk.php.net/ –

+0

exec ssi (http://en.wikipedia.org/wiki/Server_Side_Includes) ??? Ich weiß nicht, ob es funktioniert, wie es funktioniert, ob es gut oder schlecht ist ... wirklich weiß ich nichts über diesen Vorschlag: es ist also keine Antwort – pmg

Antwort

8

Sie können tatsächlich Webanwendungen in C++ mit einem Toolkit namens Wt (ähnliche API zu Qt) erstellen. Es gibt einen eigenständigen Browser sowie ein Modul für Apache. Auf diese Weise können Sie C++ als Programmiersprache genauso verwenden wie C# mit ASP.NET, und Sie können daher auch Ihren vorhandenen C++ - Code verwenden. Es ist nicht wirklich elegant.

Ich würde tatsächlich empfehlen, lernen Sie Qt und schreiben Sie die ganze Anwendung darüber. Es ist unglaublich portabel und hat eine umfangreiche API für fast alles - es ist ein Anwendungs-Framework; GTK + macht nur die Benutzeroberfläche, und in C, obwohl der GTKmm Wrapper für C++ ist nett. Schau es dir unter http://qt.nokia.com an - es ist unter der GNU LGPL verfügbar.

+0

Danke für die Info über GTK - Ich dachte, es war ein Toolit Art der Sache. Ich bleibe definitiv bei Qt. Ich habe vorher meine Zehen eingetaucht, also werde ich die Qt-IDE entstauben und mich weiterentwickeln. – Bojangles

+0

@JamWaffles Ich empfehle Ihnen, nur das neueste SDK von der Qt-Website zu greifen, hat die IDE einige wichtige Updates in den letzten Versionen. – CMircea

+1

Ich bin mir ziemlich sicher (98%) Ich werde Qt benutzen - danke für den Rat :) – Bojangles

6

Ich habe mongoose verwendet, um einen Server über HTTP/HTML zu steuern. Ich habe die Seiten direkt in C++ generiert, aber ich verstehe nicht, warum Sie den PHP-Interpreter nicht aufrufen können, um Seiteninhalte darzustellen.

+0

Nette Idee - ich werde Mungo einen Blick geben. Wie für die PHP-Funktionalität, wäre es in dieser Situation nicht erforderlich - ich brauche nur eine Möglichkeit, USB usw. zu steuern, die von C. gemacht wird. – Bojangles

2

Wenn Sie das möchten - Ihr C++ - Programm müsste eine Rolle des http-Servers übernehmen. AFAIK - viele Router-Konfigurationsprogramme funktionieren auf diese Weise (mit Ausnahme von Apples Airport Express/Extreme) - sie haben kleine httpd läuft mit HTML-Seiten über CGI.

+0

Das ist eine Idee. Würdest du von einem Server wissen, der plattformübergreifend ist und als Anwendung ausgeführt werden kann (nicht so etwas wie Apache - ich meine etwas Kleines und Leichtes)? – Bojangles

+0

Nicht wirklich, aber ich bin mir ziemlich sicher, dass Sie sie mit einfachen Systemaufrufen selbst implementieren können. Auch - andere empfehlen Mungo. Ich würde vorschlagen, dass du eine Aufnahme machst! – Eimantas

1

Das nächste, woran ich denken kann, ist ein Firefox/Chrome/IE/Safari Plugin zu schreiben und den Benutzer in seinem/ihrem Browser installieren zu lassen, um Ihre GUI zu steuern, um Ihr Gerät zu steuern.

+0

Gute Idee. Das einzige Problem ist, dass es so viele verschiedene Browser gibt, dass ich mein ganzes Leben damit verschwenden würde, Plugins für sie zu schreiben! : P – Bojangles

5

Wenn Sie kein Browser-Plug-in (nicht sehr portabel) schreiben, kann ein Browser, der eine Webseite anzeigt, nicht nur Funktionen in Ihrem C++ - Programm aufrufen.

Wenn Sie ein Gerät über einen Browser steuern möchten, muss Ihr C++ - Programm im Grunde einen Webserver enthalten. Wenn also auf einen Link oder eine Schaltfläche geklickt wird, erhält das C++ - Programm eine Verbindung auf einem Socket, den es gerade abhört, und kann alles tun.

Das ist eine absolut respektable Sache zu lernen (wahrscheinlich mit Hilfe einiger Bibliotheken von Drittanbietern, um mit dem Webserver-Aspekt zu helfen), aber auch lernen, eine GUI-App zu schreiben, und letzteres ist direkt auf den Punkt hier ;-)

Natürlich kann Java das Gleiche machen. Sie können sogar PHP über die Befehlszeile ausführen und Ihren Server in PHP implementieren, obwohl das von der Art und Weise, wie PHP normalerweise verwendet wird, völlig anders ist.

+0

Danke dafür :) Basierend auf dem, was ich gelesen habe, sollte ich definitiv GTK oder etwas lernen - es wäre auf lange Sicht viel vorteilhafter, als auch diese App zum Arbeiten zu bekommen :) – Bojangles

1

Sie können einen einfachen http-Server (z. B. http://code.google.com/p/mongoose/) einbetten, der eine REST-Schnittstelle für Ihre Apps-Funktionalität bereitstellt und eine HTML-Seite bereitstellt, die Aufrufe an die Schnittstelle senden kann.

2

Auschecken HTMLayout. Die Low-Level-Komponente, HTMLayout selbst, ist kostenlos. Momentan ist es, soweit ich weiß, nur Windows, aber es wird gerade daran gearbeitet, es auf Linux und Mac zu portieren. (Ein Windows Mobile-Port existiert bereits). Sie haben auch Sciter, der um HTMLayout herum aufgebaut ist und Skripting-Möglichkeiten enthält. Schau dir die Demos an, sie sind beeindruckend!

(Sorry, wenn es wie ein Stecker klang. Ich bin nicht mit ihnen verbunden, aber ich mag HTMLayout :)).

+0

Danke, aber das Prog muss plattformübergreifend sein, zuerst mit UNIX-Sachen, dann mit Physik. – Bojangles

+0

Ähm ... es scheint, ich meinte "UNIX Sachen zuerst, dann Windoze". Ich habe keine Ahnung woher die Physik kommt! – Bojangles