【问题标题】:How to communicate Java and Labview through TCP/IP, and send data buffers of float point?Java和Labview如何通过TCP/IP通信,发送浮点数据缓冲区?
【发布时间】:2014-09-16 13:48:05
【问题描述】:

我正在做一个大学项目,我需要与 Labview 进行双向 Java 通信,并在数据缓冲区中以浮点数发送和接收数据,因为 Labview 中的应用程序会高速生成数据,但我暂时存储和当数组大小为 100 时发送。

我的一个困难是将 Labview 发送的数据转换为 Java 格式,反之亦然。

谢谢!!

【问题讨论】:

  • 到目前为止你有什么?
  • 如果您同时编写 LabVIEW 和 Java 软件,那么格式由您决定。到目前为止,您尝试了什么,得到了什么结果?
  • 到目前为止,我正在labview 中创建数据服务器和客户端。但让我担心的不是 TCP/IP 连接,这很容易。我看到的是用Labview发送和接收复杂数据类型,例如不知道如何接收和解释从labview发送的浮点数,以及获取浮点数数组。还要在这些数字上加上一个标识符,以了解每个数字的含义。谢谢你的帮助!!

标签: java floating-point buffer labview tcp-ip


【解决方案1】:

据我所知,您有两种选择:

  1. 使用基于文本的协议(XML、JSON、您自己的东西)并发送文字“1.3454”。
    1. 专业人士: 它可能是人类可读的,这简化了调试/断言传输正确数据的过程。拥有不同类型的消息也更简单。
    2. con:这可能意味着精度的损失,并且肯定意味着某种开销。
  2. 如果你只有这一种数据,你也可以提取float的字节并发送,这样另一端就可以准确读取4个字节并重构float。
    1. pro:没有开销
    2. con: 字节序可能有问题。我不确定LabVIEW和Java是否以特定的字节序处理所有数据,或者它是否取决于硬件。您可能需要重新排序读取的字节,然后再将它们重新组装回浮点数。不同类型的消息也会变得更加复杂。在此最好阅读TCP Read VI 上的文档

您还可以混合使用这两种方法:从浮点数中提取字节,将每个字节视为一个字符并将它们组合为一个字符串,然后将其放入基于文本的协议中。

【讨论】:

    【解决方案2】:

    考虑使用 Labview 标准 tcp-ip lib 或 websocket。

    【讨论】:

    猜你喜欢
    • 2019-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-05
    • 1970-01-01
    • 2014-08-19
    相关资源
    最近更新 更多