我正在使用Rug.OSC库为C#编写一些代码用于Open Sound Control或OSC。我已经成功地将OSC消息从它发送到Processing等中的其他代码,但只有浮点数或整数的单个或短列表,而不是数组。我有一个相当大的数组(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}});
但我得到的错误如下:
未处理的类型' System.ArgumentException'发生在Rug.Osc.dll
- 或 -
无法将float []转换为float
我在这里可能很简单,但我似乎无法弄明白。有关如何使用Rug.OSC库在C#中通过OSC发送浮点数组的任何建议吗?
答案 0 :(得分:1)
目前,无法在float
构造函数中使用类型OscMessage
的数组作为参数。但是可以使用object[]
。
您可以使用以下代码将float[]
投射到object[]
。
float[] floats = new float[] { 1f, 2f, 3f, 4f, 5f, 6f, 7f, 9f, 10f };
// cast float array into an object array
object[] objects = floats.Cast<object>().ToArray();
OscMessage message = new OscMessage("/test", objects);
message
的内容将为/test, 1f, 2f, 3f, 4f, 5f, 6f, 7f, 9f, 10f
我将研究在下一版本中添加使用任何有效OSC类型的数组参数创建消息的功能。
免责声明:我是Rug.Osc的作者