Advertisement
teplofizik

ArtNetNode.cs

Feb 14th, 2013
346
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.83 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Net;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Net.Sockets;
  7. using System.Timers;
  8.  
  9. namespace ArtNet.ArtNet
  10. {
  11.     class ArtNetNode
  12.     {
  13.         private IPAddress Address; // Адрес, куда отправляем
  14.         private IPEndPoint BroadcastEndPoint;
  15.         private UdpClient udpClient; // Сетевой интерфейс
  16.         private int Port;
  17.  
  18.         // Таймеры
  19.         private Timer dmxTimer;
  20.  
  21.         // Пакеты ArtNet
  22.         private ArtDMX DMX = new ArtDMX();
  23.  
  24.         public ArtNetNode()
  25.         {
  26.             Port = 0x1936;
  27.  
  28.             // 2.255.255.255
  29.             Address = new IPAddress(0xffffff02);
  30.             BroadcastEndPoint = new IPEndPoint(Address, Port);
  31.  
  32.             // Стандартный порт ArtNet 6454
  33.             InitNode(Port);
  34.  
  35.             // DMX
  36.             dmxTimer = new Timer(1000 / 44); // 44 Гц
  37.             dmxTimer.Elapsed += new ElapsedEventHandler(dmxtimer_Elapsed);
  38.         }
  39.  
  40.         public void Start()
  41.         {
  42.             dmxTimer.Enabled = true;
  43.             dmxTimer.Start();
  44.         }
  45.  
  46.         public void Stop()
  47.         {
  48.             dmxTimer.Enabled = false;
  49.             dmxTimer.Stop();
  50.         }
  51.  
  52.         private void InitNode(int Port)
  53.         {
  54.             udpClient = new UdpClient(Port);
  55.  
  56.             udpClient.EnableBroadcast = true;
  57.  
  58.             udpClient.Client.SendTimeout = 100;
  59.             udpClient.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
  60.         }
  61.  
  62.         private void dmxtimer_Elapsed(object sender, ElapsedEventArgs e)
  63.         {
  64.             byte[] Packet = DMX.GetPacket();
  65.  
  66.             DMX[238]++;
  67.  
  68.             udpClient.Send(Packet, DMX.Length, BroadcastEndPoint);
  69.         }
  70.     }
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement