Esempio n. 1
0
        public async Task When_ListeningAndSendingMulticastOnIPV4_Then_MessagesAreSentAndReceived()
        {
            UInt16 universe = 1;

            using (var sender = new MulticastSacnSenderIPV4())
            {
                using (var receiver = new MulticastSacnReceiverIPV4())
                {
                    DataPacket received = null;

                    var hostname    = Dns.GetHostName();
                    var ipAddresses = await Dns.GetHostAddressesAsync(hostname);

                    receiver.OnDataPacketReceived += (sender, packet) =>
                    {
                        received = packet;
                    };
                    receiver.Listen(IPAddress.Any);
                    receiver.JoinMulticastGroup(universe);

                    var packet = new DataPacket();
                    packet.FramingLayer.SourceName = "Source name";
                    packet.FramingLayer.Universe   = universe;
                    packet.DMPLayer.PropertyValues = new byte[] { 1, 2, 3, 4 };

                    await sender.Send(packet);

                    await Task.Delay(250);

                    Assert.NotNull(received);
                }
            }
        }
Esempio n. 2
0
        static async Task Main(string[] args)
        {
            byte[]            cid        = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 };
            UInt16            universe   = 1;
            string            sourceName = "My lovely source";
            SacnPacketFactory factory    = new SacnPacketFactory(cid, sourceName);

            using var sacnSender = new MulticastSacnSenderIPV4();

            using Timer timer = new Timer(10000);
            timer.Elapsed    += async(sender, e) =>
            {
                var packets = factory.CreateUniverseDiscoveryPackets(new UInt16[] { universe });
                foreach (var packet in packets)
                {
                    await sacnSender.Send(packet);
                }
            };
            timer.Start();

            byte[] values = new byte[512];
            while (true)
            {
                for (byte i = 0; i < 255; i++)
                {
                    Array.Fill(values, i);
                    var packet = factory.CreateDataPacket(universe, values);
                    await sacnSender.Send(packet);

                    await Task.Delay(1000 / 40);
                }
            }
        }