USB経由でインターフェースする製品を開発しています。そのための制御アプリを書きたいのですが、うんち用のGUIをプログラムできないので、プログラムのインターフェイスとしてWebページ(アプリのインストールディレクトリのローカル)を使用することを思いつきました。
したがって、通信回線は次のようになります。ユーザー-> HTMLページ(ホストされていない-ローカル)-> C++プログラム-> USBポート
少なくともUIに関しては移植性があり、HTMLを流暢に書くことができるので、この方法でやりたいと思います。
私の質問はこれです:HTMLページを使用してC++プログラムを介してUSBポートと通信することは可能でしょうか?
そうでなければ、GTKを学びます-それは十分にポータブルです。
PS。これはPHP、または(eugh)Javaで可能でしょうか?
編集:ちょうど気づいたPHPはサーバーサイド言語です-ページをプログラムとして実行する必要があるため、私の状況では機能しません(つまり、WebブラウザとHTMLをGUI、実際の処理はC/C++を使用して行われます)
Wt (Qtと同様のAPI)というツールキットを使用して、実際にC++でWebアプリケーションを作成できます。スタンドアロンブラウザとApache用のモジュールがあります。このようにして、ASP.NETでC#を使用する場合と同じようにプログラミング言語としてC++を使用できるため、既存のC++コードを使用することもできます。しかし、それは本当にエレガントではありません。
実際には、Qtを学び、その上にアプリケーション全体を作成することをお勧めします。非常に移植性が高く、ほぼすべてに対応する広範なAPIを備えています。これはアプリケーションフレームワークです。 GTK +はUIだけを実行し、CではC++のGTKmmラッパーは素晴らしいですが、 http://qt.nokia.com でチェックしてください-GNU LGPLで入手できます。
mongoose を使用してHTTP/HTMLを介してサーバーを制御しました。ページをC++で直接生成しましたが、ページのコンテンツをレンダリングするためにPHPインタープリターを呼び出せなかった理由がわかりません。
ブラウザプラグイン(移植性はあまり高くありません)を作成しない限り、Webページを表示するブラウザはC++プログラムの関数を呼び出すことはできません。
ブラウザからデバイスを制御する場合は、基本的にC++プログラムにWebサーバーを組み込む必要があります。したがって、リンクまたはボタンがクリックされると、C++プログラムは、リッスンしているソケットで接続を受信し、何でも実行できます。
それは(おそらくWebサーバーの側面を支援するためにいくつかのサードパーティライブラリを使用して)行うことを学ぶのに完全に立派なことですが、GUIアプリを書くことも学びます、そして後者はここでより直接的にポイントになります;-)
確かにJavaは同じことを行うことができます。コマンドラインからPHPを実行し、PHPでサーバーを実装することもできますが、それは裏返しのようなものです。方法PHPが通常使用されます。
チェックアウト HTMLayout 。低レベルのコンポーネントであるHTMLayout自体は無料です。私の知る限り、現時点ではWindowsのみですが、LinuxとMacに移植する作業が進行中です。 (Windows Mobileポートは既に存在します)。また、HTMLayoutを中心に構築され、スクリプト機能を備えたSciterもあります。デモをチェックしてください、彼らは印象的です!
(プラグのように聞こえたら申し訳ありません。私は彼らと提携していませんが、HTMLayoutが本当に好きです:))。
あなたがそれをしたいのなら-あなたのC++プログラムはhttpサーバーの役割を果たさなければならないでしょう。 AFAIK-多くのルーター構成ユーティリティがこのように機能します(AppleのAirport Express/Extremeを除く)-CGIを介して提供されるhtmlページで実行される小さなhttpdがあります。
私が考えることができる最も近いことは、Firefox/Chrome/IE/Safariプラグインを作成し、ユーザーにそれを自分のブラウザーにインストールして、GUIを実行してデバイスを制御させることです。
アプリの機能へのRESTインターフェースを公開する単純なhttpサーバー(たとえば http://code.google.com/p/mongoose/ ))を埋め込むことができますインターフェイスを呼び出すことができるHTMLページを提供します。