13

我正在开发一种通过 USB 连接的产品。我想为它编写一个控制应用程序,但我无法为便便编写 GUI,所以我想出了使用网页(应用程序安装目录的本地)作为程序接口的想法。

因此,通信线路将是:用户 --> HTML 页面(非托管 - 它是本地的)--> C++ 程序 --> USB 端口

我想这样做是因为它是可移植的,至少是 UI 方面的,而且我可以流利地编写 HTML。

我的问题是:是否可以使用 HTML 页面通过 C++ 程序与 USB 端口通信?

如果没有,我会学习 GTK——它足够便携。

PS。这可以用 PHP 或(eug)Java 实现吗?

编辑:刚刚意识到 PHP 是一种服务器端语言 - 它在我的情况下不起作用,因为页面需要作为程序运行(IE,只需使用 Web 浏览器和 HTML 作为 GUI,实际处理使用完成C/C++)

4

7 回答 7

10

实际上,您可以使用名为Wt(类似于 Qt 的 API)的工具包在 C++ 中创建 Web 应用程序。有一个独立的浏览器以及一个用于 Apache 的模块。通过这种方式,您可以像使用 C# 和 ASP.NET 一样使用 C++ 作为您的编程语言,因此您也可以使用现有的 C++ 代码。虽然它不是很优雅。

我实际上建议您学习 Qt 并在其之上编写整个应用程序。它具有令人难以置信的可移植性,并且具有适用于几乎所有内容的广泛 API——它是一个应用程序框架;GTK+ 只做 UI,在 C 中,虽然 C++ 的 GTKmm 包装器很好。在http://qt.nokia.com上查看- 它在 GNU LGPL 下可用。

于 2010-10-03T14:42:13.513 回答
6

我使用猫鼬通过 HTTP/HTML 控制服务器。我直接在 C++ 中生成了页面,但我不明白为什么不能调用 PHP 解释器来呈现页面内容。

于 2010-10-03T13:08:42.717 回答
5

除非您编写浏览器插件(不是很便携),否则查看网页的浏览器不能只调用 C++ 程序中的函数。

如果您要从浏览器控制设备,基本上您的 C++ 程序需要包含一个 Web 服务器。因此,当单击链接或按钮时,C++ 程序将在它正在侦听的套接字上接收连接,并且可以执行任何操作。

这是一件非常值得学习的事情(可能使用一些第三方库来帮助处理 Web 服务器方面),但学习编写 GUI 应用程序也是如此,后者在这里更直接;-)

当然,Java 也可以做同样的事情。您甚至可以从命令行运行 PHP 并在 PHP 中实现您的服务器,尽管这与 PHP 通常使用的方式完全不同。

于 2010-10-03T13:12:55.360 回答
2

如果你想这样做 - 你的 C++ 程序必须扮演 http 服务器的角色。AFAIK - 许多路由器配置实用程序都以这种方式工作(Apple 的 Airport Express/Extreme 除外) - 它们具有运行通过 CGI 提供的 html 页面的小型 httpd。

于 2010-10-03T13:09:25.710 回答
2

查看HTML 布局。低级组件 HTMLayout 本身是免费的。据我所知,它目前仅适用于 Windows,但将其移植到 Linux 和 Mac 的工作正在进行中。(Windows Mobile 端口已存在)。他们还有 Sciter,它是围绕 HTMLayout 构建的,包含脚本工具。查看演示,它们令人印象深刻!

(对不起,如果它听起来像一个插件。我不隶属于他们,但我真的很喜欢 HTMLayout :))。

于 2010-10-03T14:14:27.997 回答
1

我能想到的最接近的事情是编写一个 Firefox/Chrome/IE/Safari 插件并让用户将其安装在他/她的浏览器上以运行您的 GUI 来控制您的设备。

于 2010-10-03T13:09:35.493 回答
1

您可以嵌入一个简单的 http 服务器(例如http://code.google.com/p/mongoose/),该服务器向您的应用程序功能公开一个 REST 接口,并提供一个可以调用该接口的 HTML 页面。

于 2010-10-03T13:13:08.650 回答