mirror of
https://github.com/jwetzell/qController.git
synced 2026-08-20 14:39:12 +00:00
Initial check-in of module qController
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
using System;
|
||||
using Rug.Osc;
|
||||
using System.Net;
|
||||
using System.Threading;
|
||||
|
||||
namespace qController
|
||||
{
|
||||
public class PacketEventArgs : EventArgs{
|
||||
public OscPacket Packet {
|
||||
get;
|
||||
set;
|
||||
}
|
||||
}
|
||||
|
||||
public class QReceiver
|
||||
{
|
||||
static OscReceiver qReceiver;
|
||||
static Thread thread;
|
||||
private QController owner;
|
||||
|
||||
public delegate void PacketReceivedHandler(object source, PacketEventArgs args);
|
||||
|
||||
public event PacketReceivedHandler PacketReceived;
|
||||
|
||||
public QReceiver(int port, QController ctrl)
|
||||
{
|
||||
qReceiver = new OscReceiver(port);
|
||||
|
||||
thread = new Thread(new ThreadStart(ListenLoop));
|
||||
owner = ctrl;
|
||||
qReceiver.Connect();
|
||||
thread.Start();
|
||||
|
||||
}
|
||||
|
||||
public void ListenLoop()
|
||||
{
|
||||
Console.WriteLine("Loop Started");
|
||||
try
|
||||
{
|
||||
while (qReceiver.State != OscSocketState.Closed)
|
||||
{
|
||||
// if we are in a state to recieve
|
||||
if (qReceiver.State == OscSocketState.Connected)
|
||||
{
|
||||
// get the next message
|
||||
// this will block until one arrives or the socket is closed
|
||||
OscPacket packet = qReceiver.Receive();
|
||||
|
||||
OnPacketReceived(packet);
|
||||
// Write the packet to the console
|
||||
|
||||
// DO SOMETHING HERE!
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
// if the socket was connected when this happens
|
||||
// then tell the user
|
||||
if (qReceiver.State == OscSocketState.Connected)
|
||||
{
|
||||
Console.WriteLine("Exception in listen loop");
|
||||
Console.WriteLine(ex.Message);
|
||||
}
|
||||
}
|
||||
Console.WriteLine("Loop Ended");
|
||||
}
|
||||
|
||||
public void Close(){
|
||||
qReceiver.Close();
|
||||
thread.Abort();
|
||||
}
|
||||
|
||||
protected virtual void OnPacketReceived(OscPacket pkt){
|
||||
if (PacketReceived != null)
|
||||
PacketReceived(this, new PacketEventArgs(){Packet = pkt});
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user