【问题标题】:Add web interface to an embedded QT application将 Web 界面添加到嵌入式 QT 应用程序
【发布时间】:2015-05-09 19:06:18
【问题描述】:

我有一个运行 Qt 应用程序的嵌入式板(由我开发,我有源代码),这个应用程序始终处于活动状态,它没有任何 GUI(没有显示!),我想补充一个用作监视器的网页(显示一些简单的值)并允许为应用程序配置一些参数... 第一个目标是一个简单的网页,允许在应用程序中设置一个变量,并“实时”显示另一个变量的状态。

板子是 ARM ,运行 Linux 并且有一个 web 服务器可用,我已经成功使用了 cgi 和 php...

如何在 Web 部件和应用程序进程之间进行通信?我可以使用 cgi 调用另一个使用套接字与主应用程序通信的应用程序,但我认为有更好的解决方案......

浏览网页我认为关键字是 Json-Ajax-JQuery,但我没有找到任何对我的案例有用的示例。

感谢任何建议和/或示例

【问题讨论】:

  • 如果您的需求不是太复杂,您可以在 QTcpServer 之上编写一个简单的 HTTP 服务器。这是一个例子:doc.qt.digia.com/solutions/4/qtservice/…
  • 正如@MrEricSir 所说,您应该有兴趣使用github.com/azadkuh/qhttp 添加您的http 服务器并在您的应用程序中处理。
  • 感谢您的回复,上周我使用了不同的技术,但我还没有决定,我宁愿避免在我的应用程序中实现 http 服务器以提供更大的灵活性,这只是第一个演示,但它将成为不同应用程序的标准;目前我认为最好的解决方案是使用以“标准”模式与网络服务器通信的网络套接字,我已经看到可以将它们与所有最重要的网络语言一起使用......

标签: jquery json qt web embedded


【解决方案1】:

你有很多不同的选择来处理这个问题,你做这件事的方式主要取决于你对做什么有信心。一些替代方案:

  1. 在您自己的应用程序中创建一个网络服务器,侦听端口 80 并处理与客户端的所有 HTTP 通信:

    a) 网络服务器是复杂的野兽,不容易实现。从一个示例 (http://doc.qt.digia.com/solutions/4/qtservice/qtservice-example-server.html) 开始,然后根据您的需要进行修改。如果您不做任何花哨的事情,这将很容易完成。

    b) 从您的应用程序中获取数据将很简单,因为网络服务器在同一进程中运行,因此您可以像处理您控制的任何其他代码一样处理它。

    c) 这使您的依赖关系更简单,只需启动一个守护程序/应用程序,无需在嵌入式平台上安装其他软件,因此安装更简单。

  2. 运行一个完整的网络服务器(apache、nginx、lightty 等)以及支持用例所需的任何服务器端代码(php、cgi、perl、python 等)。

    a) 您不必担心网络编程的技术细节以及如何实现 HTTP 协议。如果您没有太多网络编程经验,这将特别有价值。

    b) 您可以在您的应用程序中创建特殊的命令行开关,以便服务器端脚本可以调用您的程序并解析输出以获取它的数据。您还可以使用由您的应用程序写入并由服务器端脚本读取的 FIFO 文件(请参阅mkfifo)。

    c) 安装会更加复杂,需要安装另一个软件(网络服务器)并正确配置。这个问题的严重程度取决于您打算如何部署您的软件,是供您自己使用还是供客户使用等。

【讨论】:

    【解决方案2】:

    Web端和Qt端的通信可以用QTcpSocket实现(除了http嵌入式服务器方案)。 Node.js 框架允许这样做。

    有用Node.js实现JavaScript TCP server和socket的例子

    TCP socket programming in node.js

    您也可以阅读How to get sensor data over TCP/IP in nodejs? 的答案

    【讨论】:

    • 谢谢,我不知道 nodejs,在这几天我正在玩它,我在我的应用程序中添加了一个 QWebSocket,它与一个简单的 nodeJS 脚本进行通信,用于管理与客户端的连接,它在我的 PC 上运行良好;问题在于将 nodeJS 移植到我的设备(以及编译插件)不是一项简单的任务,此时我在想:客户端网页可以直接与我的 javascript 应用程序通信吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-04
    • 1970-01-01
    • 2016-02-15
    • 2015-01-18
    • 2013-08-30
    相关资源
    最近更新 更多