【问题标题】:Passing Value from C++ to Javascript将值从 C++ 传递到 Javascript
【发布时间】:2015-09-19 07:42:44
【问题描述】:

我有一个从传感器读取值的 c++ 文件,我想在网站上动态显示这些值。所以我正在寻找一种将这些值(整数)从我的 cpp 文件传递​​到在网站上显示它们的 javascript 的方法。

我的第一个简单尝试是每秒从我的 cpp 脚本将值作为变量写入 js 文件。然后 Js 使用此文件作为源并在站点上显示其变量:

cpp:

fprintf(file, "var mx=%d, my=%d, mz=%d, ax=%d, ay=%d, az=%d, gx=%d, gy=%d, gz=%d;\n",
    imu.raw_m[0], imu.raw_m[1], imu.raw_m[2],       // M = Magnetometer
    imu.raw_a[0], imu.raw_a[1], imu.raw_a[2],       // A = Accelerometer
    imu.raw_g[0], imu.raw_g[1], imu.raw_g[2]        // G = Gyroscope
);

html/js:

<script src="./imu.js" type="text/javascript"></script>

现在的问题当然是我需要一直刷新页面,因为imu.js文件被网站缓存了。

我宁愿有办法直接将整数从 cpp 文件传递​​到 js 脚本。我读了一些关于 json 或 Googles V8 脚本的东西。但我想先听听你的建议。

顺便说一句,如果这很重要,我会在 raspi 上运行它。

感谢您的帮助

编辑:

我将尝试使用 mysql 数据库,其中我的 cpp 文件使用来自 http://dev.mysql.com/doc/connector-cpp/en/ 的 Connector/c++ 写入来自传感器的数据,而我的网站会读取它们。

【问题讨论】:

  • 一个简单的方法是让你的 C++ 程序充当一个 http 服务器,然后脚本可以使用 XMLHttpRequest 从中请求数据。
  • 好主意,但是用 C++ 制作 HTTP 服务器并不是特别容易。
  • @SkyHigh 是的,你会想要实际发送数据,而不仅仅是重写需要稍后加载的文件。您可能想研究 Node.js + C++ 或 Boost.Asio
  • 也许您可以使用一些 C++ REST 框架来公开您的网站可以定期向其发送查询的 API?

标签: javascript c++ json parameter-passing v8


【解决方案1】:

你可以将你的 C++ 代码编译成一个 Node.js 插件,然后你可以在你的插件中注册一个 JavaScript 函数,C++ 在更新值时调用它。这样,您可以以托管和受控的方式将值直接从 C++ 传递到 Javascript。

Node.js 的额外好处是能够托管您的网页并执行所有在 C++ 中可能会令人头疼的 Websocket 和 HTTP 工作。

【讨论】:

    【解决方案2】:

    如果您的脚本很聪明地知道如何访问数据文件,您就不必刷新!如果您手头有网络服务器:请注意您的网络服务器可以访问您的数据文件,然后让您的脚本通过 ajax (link to w3schools) 请求文件

    【讨论】:

    • 此链接已失效。您应该将其添加到答案中。
    【解决方案3】:

    我正在 BeagleBone Black 上做类似的事情。使用 websocketd,您几乎可以将任何程序转换为 websocket 端点,然后通过 stdin 和 stdout 命令发送数据。这对您来说是一个特别好的解决方案,因为 websocket 旨在处理不断变化的信息。

    【讨论】:

      猜你喜欢
      • 2019-11-24
      • 2014-01-17
      • 1970-01-01
      • 2013-08-19
      • 1970-01-01
      • 2016-06-04
      • 2023-03-09
      • 2013-10-26
      • 1970-01-01
      相关资源
      最近更新 更多