我正在做一个项目,我无权讨论这个项目的核心,但我遇到了一个绊脚石。我需要将数据从C++实时传输到其他语言,最好是Java或Python(延迟约10ms)。
我们有一个HAS要在C++中解析的传感器。我们计划通过蓝牙进行数据读取/输出,很可能是Java或C#(我不太了解C#,但它似乎与Java相似)。C++不符合要求,因为我觉得它不够先进,无法满足我们的需要。传感器解析已完成。数据传输将在同一台机器上进行。
以下是我思考过的方法:
- 我们尝试使用MatLab来访问C++程序中的函数,将数据作为数组检索。Matlab将太慢(我们在某处读到TX/RX将被限制在1-20 Hz。)
- 不断地将数据写入文本或其他等效的原始数据文件,并在必要时使用其他语言打开它
我试图查找这个,但结果中没有显示任何用处。
您似乎在寻找IPC(进程间通信)。最容易实现的是套接字和管道。我添加了一些链接,可以帮助您决定使用哪一个。我已经实现了命名管道和套接字,以每1ms传输一次数据。我在python、c和pascal中完成了这些实现。
以下是所有IPC类型的说明
管道和插座有什么区别
我们遇到了同样的问题,我们必须在一个Java应用程序与其他多个应用程序(包括Java、Python和R.)之间共享传感器数据
首先,我们尝试了套接字连接,但套接字通信不能容错。一个应用程序中的重新启动或故障影响了另一个应用。然后我们尝试了它们之间的RMI调用,但由于可伸缩性,我们再次感到不满意。
我们希望系统具有可靠性、可扩展性、分布式和容错性。因此,最后我们开始使用RabbitMQ,创建了一个生产者和多个消费者。它在两年内运行良好。您可以考虑使用Apache Kafka。
根据您现在和不久的将来的系统需求,您可以选择Socket管道、RMI调用、RabbitMQ、Kafka、Redis。