Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Net;
- namespace ArtNet.ArtNet
- {
- class ArtDMX
- {
- private byte Sequence;
- private byte[] Packet = new byte[11 + 512];
- public ArtDMX()
- {
- Net = 0;
- Universe = 0;
- Physical = 0;
- Sequence = 0;
- // Оформим заголовок
- // ID[8]: Art-Net\0
- Helper.WriteString(ref Packet, 0, "Art-Net", 8);
- // OpCode: 0x5000
- Helper.WriteUInt16(ref Packet, 8, Convert.ToInt16(OpCodes.OpDmx));
- // ProtVer: 00, 14
- Helper.WriteUInt16BE(ref Packet, 10, 0x000E);
- // Length
- Helper.WriteUInt16BE(ref Packet, 16, 512);
- }
- public void SetData(byte[] Data)
- {
- // Data[Length]
- Helper.WriteArray(ref Packet, 18, Data, 512);
- }
- // Пакет
- public byte[] GetPacket()
- {
- // Sequence
- Helper.WriteByte(ref Packet, 12, Sequence++);
- return Packet;
- }
- // Длина пакета
- public int Length { get { return Packet.Length; } }
- // Доступ к отдельным каналом по их индексу
- public byte this[int index]
- {
- get { return ((index >= 0) && (index < 512)) ? Packet[18 + index] : Convert.ToByte(0); }
- set
- {
- if ((index >= 0) && (index < 512))
- {
- Packet[18 + index] = value;
- }
- }
- }
- // Идентификатор сети
- public byte Net
- {
- get { return Packet[15]; }
- set { Packet[15] = value; }
- }
- // Идентификатор потока
- public byte Universe
- {
- get { return Packet[14]; }
- set { Packet[14] = value; ; }
- }
- // Физический порт устройства( только для информации, не обрабатывается)
- public byte Physical
- {
- get { return Packet[13]; }
- set { Packet[13] = value; ; }
- }
- // Массив каналов (512)
- public byte[] Data
- {
- get
- {
- byte[] DMX = new byte[512];
- Buffer.BlockCopy(Packet, 18, DMX, 0, 512);
- return DMX;
- }
- set
- {
- Buffer.BlockCopy(value, 0, Packet, 18, Math.Min(value.Length, 512));
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement