从 LabVIEW 将字符串传递给 Python 函数

Passing String into Python Function from LabVIEW

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

这是我的 Python (3.6.8) 代码:

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

如果我传入长度为 152 的字符串,我希望此函数的长度为 152 到 return。

这是我想在两者之间传递的示例字符串(发送时它们是 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

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

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

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