3

我正在做一个项目,我无权讨论核心,但我遇到了一个绊脚石。我需要将数据从 C++ 实时传输到其他语言,最好是 Java 或 Python(约 10 毫秒延迟)。

我们有一个必须用 C ++解析的传感器。我们正计划通过蓝牙进行数据读取/输出,很可能是 Java 或 C#(我不太了解 C#,但它似乎类似于 Java)。C++ 不符合要求,因为我觉得它不够先进,无法满足我们的需要。传感器解析已经完成。数据传输将在同一台机器上进行。

以下是我思考过的方法:

  • 我们尝试将 MatLab 与 Mex 的任何东西(我不做 MatLab)一起使用来访问 C++ 程序中的函数,以将数据作为数组检索。Matlab 会太慢(我们在某处读到 TX/RX 将限制在 1-20 Hz。)
  • 将数据写入文本或其他等效的原始数据、文件,并根据需要使用其他语言打开它。

我试图查找此内容,但结果中没有显示任何用处。

4

2 回答 2

2

您似乎正在寻找 IPC(进程间通信)。最容易实现的是套接字和管道。我添加了链接,这些链接将帮助您决定使用哪一个。我已经实现了命名管道和套接字以每 1 毫秒传输一次数据。我在 python、c 和 pascal 中做了这些实现。

这是所有IPC类型的描述

管道和套接字有什么区别

于 2016-05-27T00:01:07.067 回答
1

我们有同样的问题,我们必须在一个 Java 应用程序之间共享传感器数据到其他多个应用程序,包括 Java、Python 和 R。

首先我们尝试了 Socket 连接,但 socket 通信不能容错。一个应用程序中的重新启动或故障会影响其他应用程序。然后我们尝试了它们之间的 RMI 调用,但由于可扩展性,我们再次不满意。

我们希望系统可靠、可扩展、分布式和容错。所以,最后我们开始使用 RabbitMQ,我们创建了一个生产者和多个消费者。它工作了2年。您可以考虑使用 Apache Kafka。

根据您现在和不久的将来的系统要求,您可以选择 Socket 管道、RMI 调用、RabbitMQ、Kafka、Redis。

于 2016-05-28T06:00:06.497 回答