Haukcode.sACN
2.0.88
dotnet add package Haukcode.sACN --version 2.0.88
NuGet\Install-Package Haukcode.sACN -Version 2.0.88
<PackageReference Include="Haukcode.sACN" Version="2.0.88" />
<PackageVersion Include="Haukcode.sACN" Version="2.0.88" />
<PackageReference Include="Haukcode.sACN" />
paket add Haukcode.sACN --version 2.0.88
#r "nuget: Haukcode.sACN, 2.0.88"
#:package Haukcode.sACN@2.0.88
#addin nuget:?package=Haukcode.sACN&version=2.0.88
#tool nuget:?package=Haukcode.sACN&version=2.0.88
Haukcode.sACN
A high-performance, cross-platform sACN (E1.31) library for .NET - enabling DMX512 lighting control over IP networks.
What is sACN?
sACN (Streaming ACN / ANSI E1.31) is a network protocol for transmitting DMX512 lighting control data over IP networks using UDP. It's the industry standard for modern entertainment and architectural lighting systems.
Features
- ✅ Send and receive DMX data via sACN/E1.31
- ✅ Multicast and unicast support
- ✅ Sync packet support for frame-accurate multi-universe synchronization
- ✅ High-performance with buffer pooling and async I/O
- ✅ Cross-platform (.NET 8.0, 9.0, 10.0)
- ✅ Reactive extensions support
Quick Start
Receiving DMX Data
using Haukcode.sACN;
using Haukcode.sACN.Model;
using System.Net;
using System.Threading.Channels;
var channel = Channel.CreateUnbounded<ReceiveDataPacket>();
var client = new SACNClient(
senderId: Guid.NewGuid(),
senderName: "MyReceiver",
localAddress: IPAddress.Any,
channelWriter: async p => await channel.Writer.WriteAsync(p),
channelWriterComplete: () => channel.Writer.Complete());
// Join Universe 1
client.JoinDMXUniverse(1);
// Process packets
await foreach (var packet in channel.Reader.ReadAllAsync())
{
var data = packet.Packet.RootLayer.FramingLayer as DataFramingLayer;
Console.WriteLine($"Universe {data.UniverseId}: {data.DMPLayer.Data.Length} channels");
}
Sending DMX Data
using Haukcode.sACN;
using System.Net;
var client = new SACNClient(
senderId: Guid.NewGuid(),
senderName: "MyController",
localAddress: Haukcode.Network.Utils.GetFirstBindAddress().IPAddress);
byte[] dmxData = new byte[512];
dmxData[0] = 255; // Channel 1 at full intensity
// Send via multicast
await client.SendDmxData(null, universeId: 1, dmxData);
// Send via unicast to specific device
await client.SendDmxData(IPAddress.Parse("192.168.1.100"), universeId: 1, dmxData);
Key Methods
Sending:
SendDmxData()- Send DMX channel dataSendSync()- Send synchronization packet
Receiving:
JoinDMXUniverse()- Subscribe to a universeDropDMXUniverse()- Unsubscribe from a universeJoinDMXUniverseForTrigger()- Listen for sync packets only
Documentation
For comprehensive documentation, advanced features, API reference, and troubleshooting:
📖 Full Documentation on GitHub
Resources
License
MIT License - see LICENSE for details.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Haukcode.HighPerfComm (>= 1.0.30)
- Haukcode.Network (>= 1.0.27)
- HdrHistogram (>= 2.5.0)
- System.Reactive (>= 6.1.0)
-
net8.0
- Haukcode.HighPerfComm (>= 1.0.30)
- Haukcode.Network (>= 1.0.27)
- HdrHistogram (>= 2.5.0)
- System.Reactive (>= 6.1.0)
-
net9.0
- Haukcode.HighPerfComm (>= 1.0.30)
- Haukcode.Network (>= 1.0.27)
- HdrHistogram (>= 2.5.0)
- System.Reactive (>= 6.1.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 2.0.88 | 75 | 3/20/2026 |
| 2.0.87 | 74 | 3/20/2026 |
| 2.0.86 | 77 | 3/20/2026 |
| 2.0.85 | 85 | 3/12/2026 |
| 2.0.84 | 84 | 3/11/2026 |
| 2.0.83 | 116 | 2/5/2026 |
| 2.0.82 | 101 | 2/5/2026 |
| 2.0.81 | 100 | 2/5/2026 |
| 2.0.75 | 156 | 1/19/2026 |
| 2.0.72 | 386 | 11/11/2025 |
| 2.0.70 | 256 | 10/9/2025 |
| 2.0.69 | 225 | 10/7/2025 |
| 2.0.68 | 164 | 10/4/2025 |
| 2.0.67 | 325 | 8/11/2025 |
| 2.0.66 | 386 | 5/13/2025 |
| 2.0.61 | 321 | 5/12/2025 |
| 2.0.60-main-13111951 | 317 | 5/12/2025 |
| 2.0.59 | 310 | 3/20/2025 |
| 2.0.58 | 267 | 3/13/2025 |
| 2.0.57 | 250 | 1/24/2025 |
1.0.0 - Refactored
1.0.1 - Added methods to find local IPAddress
1.0.2 - Added method for multi-universe listener
1.0.3 - Changed DMXData property
1.0.4 - Changed API for GetAddressesFromInterfaceType
1.0.5 - Added method to list network adapters
1.0.6 - Removed unused dependency
1.0.7 - Make it Linux-compatible
1.0.8 - Allow unknown operational status on network adapter
2.0.0 - Allow for sync packets, breaking change
2.0.13 - Fix issue with ReceiveMessageFrom and reusing the socket events
2.0.16 - Fix incorrect byte order of Acn Source Id