【发布时间】:2026-01-28 04:20:03
【问题描述】:
我正在使用用于 Open Sound Control 或 OSC 的 Rug.OSC 库在 C# 中编写一些代码。我已经成功地将 OSC 消息从它发送到处理等中的其他代码,但只有浮点数或整数的单个或短列表,而不是数组。我有一个相当大的数组(1462 个浮点数),我想在一个消息中作为一个数组发送,而不是 1462 个单个浮点消息,但我在 MSVS 中得到的只是错误。
我想用 C# 代码做的基本上是这样的:
float[] myArray = new float[1462]; myOscMessage = new OscMessage("/array", myArray);
我查看了这里的语法:
https://bitbucket.org/rugcode/rug.osc/wiki/Message%20arguments%20as%20Rug.Osc%20understands%20them
并尝试过如下语法:
myOscMessage = new OscMessage("/array", {myArray});
--或--
myOscMessage = new OscMessage("/array", new float[]{myArray});
--或--
myOscMessage = new OscMessage("/array", new float[]{new float[]{myArray}});
但我收到如下错误:
Rug.Osc.dll 中出现“System.ArgumentException”类型的未处理异常
-- 或--
无法将 float[] 转换为 float
我可能在这里遗漏了简单,但我似乎无法弄清楚。有关如何使用 Rug.OSC 库在 C# 中通过 OSC 发送浮点数组的任何建议?
【问题讨论】:
-
另外应该注意的是,在默认设置中使用 Rug.Osc 时,不可能通过 UDP 在单个消息中发送 1462 个浮点数,因为它会超过最大数据包大小。它总计超过 7310 个字节,因为为每个数组元素写入了一个类型标签条目。以
byte[](blob) 形式发送可能会更好,因为类型标签开销最小。您可能还需要考虑对阵列进行切片或使用 TCP 等非 udp 传输层。