Я использую руб Osc.Отправить его не проблема, и получить не проблема.
Но мне нужно отправить команду OSC и получить ответ.Берингеру x32.
Например, отправьте «/ ch / 01 / mix / on» и получите 0 или 1.
public double GetOSC(string IPOSC, int REMOTEPORTUSE, int LOCALPORTUSE, string ENVIOCOMANDO)
{
// Envio Comando
OscReceiver receiver;
OscSender sender2;
// Create the receiver
using (receiver = new OscReceiver((int)LOCALPORTUSE))
{
IPAddress address = IPAddress.Parse(IPOSC);
using (sender2 = new OscSender(address, (int)LOCALPORTUSE, (int)REMOTEPORTUSE))
{
// Connect the receiver
receiver.Connect();
//And Send
sender2.Connect();
sender2.Send(new OscMessage(ENVIOCOMANDO)); //"/ch/01/mix/on"
// if we are in a state to recieve
if (receiver.State == OscSocketState.Connected )
{
// get the next message
// this will block until one arrives or the socket is closed
OscPacket packet = receiver.Receive();
// Write the packet to the console
var output = Regex.Replace(packet.ToString().Split(',')[1], @"[^0-9.]", string.Empty);
double decim = double.Parse(output, System.Globalization.CultureInfo.InvariantCulture);
return decim;
}
else
{
return -1;
}
}
}
}
Я запускаю все с одного потока.Но, если сон угрозы будет второстепенным, сломайте приложение.И появляются: System.ObjectDisposedException.
Есть идеи для отправки и получения OSC хорошо?