Haukcode.sACN
2.0.83
dotnet add package Haukcode.sACN --version 2.0.83
NuGet\Install-Package Haukcode.sACN -Version 2.0.83
<PackageReference Include="Haukcode.sACN" Version="2.0.83" />
<PackageVersion Include="Haukcode.sACN" Version="2.0.83" />
<PackageReference Include="Haukcode.sACN" />
paket add Haukcode.sACN --version 2.0.83
#r "nuget: Haukcode.sACN, 2.0.83"
#:package Haukcode.sACN@2.0.83
#addin nuget:?package=Haukcode.sACN&version=2.0.83
#tool nuget:?package=Haukcode.sACN&version=2.0.83
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.29)
- Haukcode.Network (>= 1.0.26)
- HdrHistogram (>= 2.5.0)
- System.Reactive (>= 6.1.0)
-
net8.0
- Haukcode.HighPerfComm (>= 1.0.29)
- Haukcode.Network (>= 1.0.26)
- HdrHistogram (>= 2.5.0)
- System.Reactive (>= 6.1.0)
-
net9.0
- Haukcode.HighPerfComm (>= 1.0.29)
- Haukcode.Network (>= 1.0.26)
- 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.83 | 79 | 2/5/2026 |
| 2.0.82 | 74 | 2/5/2026 |
| 2.0.81 | 76 | 2/5/2026 |
| 2.0.75 | 138 | 1/19/2026 |
| 2.0.72 | 342 | 11/11/2025 |
| 2.0.70 | 241 | 10/9/2025 |
| 2.0.69 | 206 | 10/7/2025 |
| 2.0.68 | 149 | 10/4/2025 |
| 2.0.67 | 313 | 8/11/2025 |
| 2.0.66 | 368 | 5/13/2025 |
| 2.0.61 | 306 | 5/12/2025 |
| 2.0.60-main-13111951 | 310 | 5/12/2025 |
| 2.0.59 | 295 | 3/20/2025 |
| 2.0.58 | 253 | 3/13/2025 |
| 2.0.57 | 236 | 1/24/2025 |
| 2.0.56 | 176 | 1/15/2025 |
| 2.0.55 | 195 | 1/10/2025 |
| 2.0.54 | 215 | 1/9/2025 |
| 2.0.53 | 198 | 1/7/2025 |
| 2.0.52 | 420 | 12/20/2024 |
| 2.0.50 | 190 | 12/18/2024 |
| 2.0.49 | 213 | 12/13/2024 |
| 2.0.48 | 186 | 12/12/2024 |
| 2.0.47 | 209 | 12/12/2024 |
| 2.0.46 | 182 | 12/12/2024 |
| 2.0.43 | 190 | 12/11/2024 |
| 2.0.42 | 192 | 12/11/2024 |
| 2.0.41 | 191 | 12/10/2024 |
| 2.0.40 | 226 | 12/6/2024 |
| 2.0.39 | 187 | 12/3/2024 |
| 2.0.38 | 209 | 12/3/2024 |
| 2.0.37 | 168 | 12/3/2024 |
| 2.0.19 | 861 | 7/20/2023 |
| 2.0.16 | 278 | 7/13/2023 |
| 2.0.15 | 277 | 7/11/2023 |
| 2.0.14 | 295 | 7/11/2023 |
| 2.0.13 | 287 | 7/11/2023 |
| 2.0.12 | 585 | 10/7/2022 |
| 2.0.11 | 550 | 10/6/2022 |
| 2.0.10 | 557 | 10/6/2022 |
| 2.0.9 | 566 | 10/2/2022 |
| 2.0.8 | 592 | 9/25/2022 |
| 2.0.7 | 602 | 9/12/2022 |
| 2.0.6 | 580 | 8/21/2022 |
| 2.0.5 | 804 | 2/11/2021 |
| 2.0.4 | 560 | 2/3/2021 |
| 2.0.0 | 555 | 1/29/2021 |
| 1.0.8 | 776 | 5/8/2020 |
| 1.0.7 | 757 | 12/4/2019 |
| 1.0.6 | 720 | 12/4/2019 |
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