示例#1
0
        public ArtNetPacket(ArtNetReceiveData data)
        {
            DataLength = data.DataLength - 12;  // Subtract ArtNet header
            var packetReader = new ArtNetBinaryReader(new MemoryStream(data.buffer));

            ReadData(packetReader);
        }
示例#2
0
        private void OnReceive(IAsyncResult state)
        {
            EndPoint remoteEndPoint = new IPEndPoint(IPAddress.Any, 0);

            if (PortOpen)
            {
                try
                {
                    ArtNetReceiveData receiveState = (ArtNetReceiveData)(state.AsyncState);

                    if (receiveState != null)
                    {
                        receiveState.DataLength = EndReceiveFrom(state, ref remoteEndPoint);

                        //Protect against UDP loopback where we receive our own packets.
                        if (LocalEndPoint != remoteEndPoint && receiveState.Valid)
                        {
                            LastPacket = DateTime.Now;

                            ProcessPacket((IPEndPoint)remoteEndPoint, ArtNetPacket.Create(receiveState));
                        }
                    }
                }
                catch (Exception ex)
                {
                    OnUnhandledException(ex);
                }
                finally
                {
                    //Attempt to receive another packet.
                    StartReceive();
                }
            }
        }
示例#3
0
        public static ArtNetPacket Create(ArtNetReceiveData data)
        {
            switch ((ArtNetOpCodes)data.OpCode)
            {
            case ArtNetOpCodes.Poll:
                return(new ArtPollPacket(data));

            case ArtNetOpCodes.PollReply:
                return(new ArtPollReplyPacket(data));

            case ArtNetOpCodes.Dmx:
                return(new ArtNetDmxPacket(data));

            case  ArtNetOpCodes.TodRequest:
                return(new ArtTodRequestPacket(data));

            case ArtNetOpCodes.TodData:
                return(new ArtTodDataPacket(data));

            case ArtNetOpCodes.TodControl:
                return(new ArtTodControlPacket(data));

            case ArtNetOpCodes.Rdm:
                return(new ArtRdmPacket(data));

            case ArtNetOpCodes.RdmSub:
                return(new ArtRdmSubPacket(data));
            }

            return(null);
        }
示例#4
0
 public void StartReceive()
 {
     try
     {
         EndPoint          localPort    = new IPEndPoint(IPAddress.Any, Port);
         ArtNetReceiveData receiveState = new ArtNetReceiveData();
         BeginReceiveFrom(receiveState.buffer, 0, receiveState.bufferSize, SocketFlags.None, ref localPort, new AsyncCallback(OnReceive), receiveState);
     }
     catch (Exception ex)
     {
         OnUnhandledException(new ApplicationException("An error ocurred while trying to start recieving ArtNet.", ex));
     }
 }
示例#5
0
        public static ArtNetPacket Create(ArtNetReceiveData data, Func <ushort, ArtNetReceiveData, ArtNetPacket> customPacketCreator)
        {
            switch ((ArtNetOpCodes)data.OpCode)
            {
            case ArtNetOpCodes.Poll:
                return(new ArtPollPacket(data));

            case ArtNetOpCodes.PollReply:
                return(new ArtPollReplyPacket(data));

            case ArtNetOpCodes.Dmx:
                return(new ArtNetDmxPacket(data));

            case ArtNetOpCodes.TodRequest:
                return(new ArtTodRequestPacket(data));

            case ArtNetOpCodes.TodData:
                return(new ArtTodDataPacket(data));

            case ArtNetOpCodes.TodControl:
                return(new ArtTodControlPacket(data));

            case ArtNetOpCodes.Rdm:
                return(new ArtRdmPacket(data));

            case ArtNetOpCodes.RdmSub:
                return(new ArtRdmSubPacket(data));

            case ArtNetOpCodes.ArtTrigger:
                return(new ArtTriggerPacket(data));

            default:
                if (customPacketCreator != null)
                {
                    var customPacket = customPacketCreator(data.OpCode, data);
                    if (customPacket != null)
                    {
                        return(customPacket);
                    }
                }

                return(new ArtNetUnknownPacket(data));
            }
        }
 public ArtTodControlPacket(ArtNetReceiveData data)
     : base(data)
 {
 }
 public ArtPollReplyPacket(ArtNetReceiveData data)
     : base(data)
 {
 }
示例#8
0
 public ArtRdmSubPacket(ArtNetReceiveData data)
     : base(data)
 {
 }
示例#9
0
 public ArtTriggerPacket(ArtNetReceiveData data)
     : base(data)
 {
 }
示例#10
0
 public ArtNetDmxPacket(ArtNetReceiveData data)
     : base(data)
 {
 }
示例#11
0
 public ArtTodDataPacket(ArtNetReceiveData data)
     : base(data)
 {
 }
示例#12
0
 public ArtTodRequestPacket(ArtNetReceiveData data)
     : base(data)
 {
 }
示例#13
0
        public ArtNetPacket(ArtNetReceiveData data)
        {
            ArtNetBinaryReader packetReader = new ArtNetBinaryReader(new MemoryStream(data.buffer));

            ReadData(packetReader);
        }
示例#14
0
 public ArtNetUnknownPacket(ArtNetReceiveData data)
     : base(data)
 {
 }