有什么方法可以使用 HTML 作为 C/C++ 程序的接口吗?

问题描述 投票:0回答:8

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

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

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

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

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

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

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

html c hardware usb hardware-interface
8个回答
11
投票

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

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


6
投票

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


5
投票

除非你编写了一个浏览器插件(不太便携),否则浏览网页的浏览器不能只调用你的C++程序中的函数。

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

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

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


2
投票

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


2
投票

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

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


1
投票

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


1
投票

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


0
投票

您可以使用 HTML/CSS/JavaScript UI 创建跨平台 C++ 桌面应用程序。有很多解决方案你可以看看:

CEF

用于将 Chromium Web 浏览器控件嵌入到 C++ 应用程序中的跨平台框架。开源。

钼SDK

用于使用 HTML/CSS/JavaScript UI 创建跨平台桌面应用程序的 SDK。商业版(公开预览期间免费)。包括一组工具,用于从模板搭建项目、构建、品牌化、签名和公证,打包成适用于 Windows、macOS 和 Linux 的本机可执行文件。具有自动类型转换等功能的 C++ 到 JavaScript 桥接器。

超轻

用于将 WebKit Web 浏览器控件嵌入到 C++ 应用程序中的跨平台框架。免费和商业。不使用铬。

© www.soinside.com 2019 - 2024. All rights reserved.