在同一台计算机上使用不同编程语言在不同程序之间发送数据的最佳方法是什么?

时间:2014-10-11 18:28:06

标签: c# c fpga tcp-ip labview

我正在研究开发一种可以与各种语言(Python,C,C#,LabVIEW)连接的解决方案,在这里我可以向解决方案发送数据或从解决方案发送数据。 它与FlexRIO系统连接,使用FPGA可以尽快处理大量数据。 解决方案本身可以用C或LabVIEW编写(我的限制是我有软件明智的选项来与FlexRIO驱动程序连接)。

该软件将接受将被预定义的命令(例如RESET:ALL),但数据的大小可能非常大(如1000万个字符的数组)。

例如,我可以用Python编写代码来向这个软件发送命令并获取信息。

关于如何发送此数据,我有哪些选项? 我在想TCP / IP,但我不知道我可能有的速度和内存限制。 两个软件也将在同一台计算机上。

4 个答案:

答案 0 :(得分:3)

我处理过类似的问题。您可以使用的解决方案之一是:

  • 序列化数据(protobuf,json,bson,xml)
  • 压缩数据(gzip,snappy,lz4)。交易是算法的速度与输出的大小
  • 使用进程间通信将blob发送到其他应用程序

另一方反过来做同样的事。

我使用protobuflz4WCF pipes,它们可以很好地处理频繁的小型消息,但会使用您的数据对其进行测试。

在您的情况下,写入文件并从文件中读取可能会更快。

答案 1 :(得分:1)

管道是一种方式,它们在您提到的所有语言上都受支持。它是一块共享内存,但API意味着它就像文件或流一样,取决于语言。

一个程序写入其中,另一个程序从中读取,因此就像TCP / IP连接一样,但开销较小。

如果您对此很聪明,那么您的大多数代码都不会知道它使用的流的类型。然后,如果您需要更改机制,则很少会影响您的代码。

答案 2 :(得分:1)

您可以使用任何数据交换格式来接收应用程序

  1. XML
  2. JS​​ON
  3. 所以你可以毫无阻碍地进行交流

答案 3 :(得分:0)