【问题标题】:Any way to use HTML as an interface to a C/C++ program?有什么方法可以使用 HTML 作为 C/C++ 程序的接口?
【发布时间】:2011-04-20 11:24:44
【问题描述】:

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

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

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

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

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

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

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

【问题讨论】:

  • PHP 没有 只能在服务器端运行;它只是最常用的方式。 gtk.php.net
  • 执行 ssi (en.wikipedia.org/wiki/Server_Side_Includes)???我不知道它是否有效,它是如何运作的,是好是坏……我真的对这个建议一无所知:所以这不是一个答案

标签: html c hardware usb hardware-interface


【解决方案1】:

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

【讨论】:

  • 好主意 - 我会看看猫鼬。至于 PHP 功能,在这种情况下不需要它——我只需要一些控制 USB 等的方法,这是由 C 完成的。
【解决方案2】:

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

【讨论】:

  • 这是一个想法。您是否知道跨平台且可以作为应用程序运行的服务器(不是像 Apache 之类的东西——我的意思是小而轻量级的东西)?
  • 并非如此,但我很确定您可以使用简单的系统调用自己实现它们。另外 - 其他人推荐猫鼬。我建议你试一试!
【解决方案3】:

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

【讨论】:

  • 好主意。唯一的问题是有这么多不同的浏览器,我会浪费我的一生来为它们编写插件! :P
【解决方案4】:

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

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

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

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

【讨论】:

  • 谢谢 :) 根据我所读到的内容,我绝对应该学习 GTK 或其他东西 - 从长远来看,它会更有益,以及让这个应用程序正常工作 :)
【解决方案5】:

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

【讨论】:

    【解决方案6】:

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

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

    【讨论】:

    • 谢谢,但是这个 prog 需要跨平台,首先从 UNIX 开始,然后是物理。
    • 呃...看来我的意思是“首先是 UNIX 的东西,然后是 Windoze”。我不知道物理学从何而来!
    【解决方案7】:

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

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

    【讨论】:

    • 感谢您提供有关 GTK 的信息 - 我认为这是一种工具类的东西。那我肯定会坚持使用Qt。我以前曾涉足过它,所以我将清理 Qt IDE 并开始开发。
    • @JamWaffles 我建议您从 Qt 网站获取最新的 SDK,IDE 在最​​新版本中进行了一些重大更新。
    • 我很确定 (98%) 我会使用 Qt - 感谢您的建议 :)
    猜你喜欢
    • 1970-01-01
    • 2011-03-23
    • 2022-01-14
    • 2011-01-31
    • 1970-01-01
    • 2011-06-16
    • 2020-06-23
    • 2012-02-10
    • 1970-01-01
    相关资源
    最近更新 更多