【问题标题】:Passing String into Python Function from LabVIEW从LabVIEW将字符串传递给Python函数
【发布时间】:2022-03-09 04:06:50
【问题描述】:

我正在尝试将一个字符串从 LabVIEW 传递到 Python 节点。该字符串是一整串需要正确解码的字节(U8)(它们是通过 UDP 接收的 Google Protobuf 数据)。但是,当我传递一个长度为 152 的字符串时,我只收到一个长度为 ~18 的字符串。我认为文件中有 5 个连续 0 的地方出了点问题。还有其他几个可能需要忽略的转义字符。

这是我的 Python (3.6.8) 代码:

def Parse(s):
    return str(len(s))

如果我传入一个长度为 152 的字符串,我希望从这个函数返回 152。

这是我想在两者之间传递的示例字符串(发送时它们为 ASCII 格式):

0A 95 01 0A 01 47 12 02 31 43 18 1E 20 1E 29 00 00 00 00 00 38 8B 40 31 00 00 00 00 00 EC A3 40 38 AC F2 FB 0B 50 80 89 7A 59 00 00 00 A0 0C FA 85 40 61 00 00 00 E0 32 0F F3 BF 69 00 00 00 60 49 36 46 40 71 7A 9F B9 01 F1 0F A2 40 79 31 67 14 06 29 B5 81 C1 81 01 00 00 E9 EA 15 B6 DB 3F 88 01 C2 F7 D4 E6 11 90 01 01 98 01 01 A0 01 01 A8 01 C8 A7 B6 9B 01 B1 01 08 BF E1 E1 D9 8E 74 41 B9 01 29 5C 8F C2 F1 E4 13 41 C0 01 01 C9 01 7E 44 18 D0 93 6D B3 41

这可能是从 LV 到 Python 的问题吗?还是完全是 Python 问题?

谢谢,

JT

【问题讨论】:

    标签: python labview


    【解决方案1】:

    UTF8 在解码 Null (0x00) 字符时出现问题。

    LabVIEW 对此没有任何真正的顾虑,因为它维护一个长度参数,允许它知道其字符串的长度。鉴于 python 字符串实际上是列表(没有定义的长度),我认为这可能是 python 将空字符解码为字符串结尾的问题。

    如果您尝试将字符串作为字节数组传递给 python,然后在 python 中转换为字符串,它应该能够毫无顾虑地处理这个问题。

    【讨论】:

    • 谢谢。对于那些好奇的人,我使用s = array.array('B', b).tobytes() 将整数数组“字节数组”从 LabVIEW 转换为字符串。你还需要import array
    猜你喜欢
    • 2023-02-25
    • 1970-01-01
    • 2017-08-04
    • 1970-01-01
    • 2016-01-28
    • 2013-12-11
    • 1970-01-01
    • 2011-05-12
    相关资源
    最近更新 更多