有没有办法将HTML用作C / C ++程序的接口?

14

我正在开发一个通过USB接口进行交互的产品。我想为它编写一个控制应用程序,但是我不会用poo编程GUI,所以我想到了使用一个网页(在应用程序安装目录本地运行)作为程序的界面。

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

我希望这样做是因为至少在UI方面是可移植的,并且我可以流畅地编写HTML。

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

如果不行,我将学习GTK - 它足够可移植。

附注:使用PHP或Java是否可行?

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


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

11

你可以使用名为Wt的工具包(类似Qt的API)来使用C++创建Web应用程序。它有一个独立的浏览器和一个Apache模块。这样,您就可以像使用ASP.NET的C#一样使用C++作为编程语言,从而也可以使用现有的C++代码。不过这种方式并不是很优雅。

我实际上建议你学习Qt,并在其基础上编写整个应用程序。它非常便携,并且拥有广泛的API覆盖几乎每个方面 - 它是一个应用程序框架;GTK+只负责用户界面,在C中使用,虽然C++的GTKmm包装器也很好。在http://qt.nokia.com上查看它 - 它可在GNU LGPL下获得。


谢谢关于GTK的信息 - 我以为它是一种工具包之类的东西。那我肯定会坚持使用Qt。我以前有过一些涉足,所以我会重新启动Qt集成开发环境并开始开发。 - Bojangles
@JamWaffles 我建议你从Qt网站上获取最新的SDK,因为IDE在最近的版本中有一些重大更新。 - CMircea
1
我非常确定(98%)我会使用Qt - 感谢您的建议 :) - Bojangles

6

我曾经使用Mongoose通过HTTP/HTML控制服务器。我直接在C++中生成页面,但是我不认为你不能调用PHP解释器来渲染页面内容。


不错的想法 - 我会看一下mongoose。至于PHP功能,在这种情况下不需要 - 我只需要控制USB等的某种方式,而这可以通过C来完成。 - Bojangles

5
除非你编写浏览器插件(不太便携),否则在浏览网页时,浏览器无法直接调用你的C++程序中的函数。
如果你要从浏览器控制设备,基本上你的C++程序需要集成一个Web服务器。所以,当链接或按钮被点击时,C++程序将在它正在监听的套接字上收到连接,并且可以执行任何操作。
这是一件完全值得学习的事情(可能使用一些第三方库来帮助处理Web服务器方面),但学习编写GUI应用程序也是更加直接的点;-)
当然,Java也可以做同样的事情。你甚至可以从命令行运行PHP并在PHP中实现你的服务器,尽管这与通常使用PHP的方式有些内部差异。

谢谢您的回复 :) 根据我所读的内容,我应该学习GTK或类似的东西 - 这将在长期内更有益,同时也能让这个应用程序正常工作 :) - Bojangles

2
如果你想这样做,你的C++程序必须扮演一个HTTP服务器的角色。据我所知,许多路由器配置工具都是这样工作的(除了苹果的Airport Express / Extreme)-它们有一个运行着的小型httpd,通过CGI提供HTML页面。

这是个好主意。你知道有没有一个跨平台的服务器可以作为应用程序运行(不是像Apache那样的东西 - 我指的是一些小巧轻便的东西)? - Bojangles
不是很确定,但我相信你可以使用简单的系统调用来实现它们。此外,其他人推荐使用mongoose。我建议你试一试! - Eimantas

2
请查看HTMLayout。低级组件HTMLayout本身是免费的。据我所知,目前仅支持Windows,但正在努力将其移植到Linux和Mac。(已经存在Windows Mobile端口)。他们还有Sciter,它是围绕HTMLayout构建的,并包含脚本设施。查看演示,它们非常令人印象深刻!(如果听起来像广告,对不起。我与他们没有关联,但我真的很喜欢HTMLayout :))

谢谢,但这个程序需要跨平台,首先从UNIX开始,然后是物理学。 - Bojangles
额...看来我是想先处理UNIX相关的事情,然后再是Windows。我不知道物理从哪儿冒出来了! - Bojangles

1
我能想到的最接近的方法是编写一个Firefox/Chrome/IE/Safari插件,让用户在浏览器上安装它来运行你的GUI以控制你的设备。

好主意。唯一的问题是有太多不同的浏览器,我会浪费我的整个生命为它们编写插件!:P - Bojangles

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接