Haukcode.sACN 2.0.83

dotnet add package Haukcode.sACN --version 2.0.83
                    
NuGet\Install-Package Haukcode.sACN -Version 2.0.83
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Haukcode.sACN" Version="2.0.83" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Haukcode.sACN" Version="2.0.83" />
                    
Directory.Packages.props
<PackageReference Include="Haukcode.sACN" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Haukcode.sACN --version 2.0.83
                    
#r "nuget: Haukcode.sACN, 2.0.83"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Haukcode.sACN@2.0.83
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Haukcode.sACN&version=2.0.83
                    
Install as a Cake Addin
#tool nuget:?package=Haukcode.sACN&version=2.0.83
                    
Install as a Cake Tool

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 data
  • SendSync() - Send synchronization packet

Receiving:

  • JoinDMXUniverse() - Subscribe to a universe
  • DropDMXUniverse() - Unsubscribe from a universe
  • JoinDMXUniverseForTrigger() - 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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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