# ember-plus-sharp **Repository Path**: morphyyang/ember-plus-sharp ## Basic Information - **Project Name**: ember-plus-sharp - **Description**: No description available - **Primary Language**: C# - **License**: BSL-1.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-21 - **Last Updated**: 2025-11-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README EmBER+ Sharp Project ============================================================================= Check out the [documentation](http://lawo.github.io/ember-plus-sharp) for the EmBER+. This is the C#, .net library for a EmBER+ Consumer. ### Soluton contains: - Lawo - Common shared classes (Required by main library) - .NET Standard 2.1, .NET Framework 4.5, .NET Framework 4.8 - Lawo.EmberPlusSharp - The EmBER+ Consumer main library - .NET Standard 2.1, .NET Framework 4.5, .NET Framework 4.8 - Lawo.GlowAnalyzerProxy.Main - An EmBER+ analyzer tool for Glow debugging - WPF, .NET Framework 4.5 - Lawo.GlowLogConverter.Main - Converts the log format received from the Glow Analyzer Proxy - WPF, .NET Framework 4.5 ### Example to get started ```csharp // Note that the most-derived subtype MyRoot needs to be passed to the generic base class. // Represents the root containing dynamic and optional static elements in the object tree accessible through Consumer.Root private class MyRoot : DynamicRoot { } // Create TCP connection var tcpClient = new TcpClient(); await tcpClient.ConnectAsync("localhost", "9001"); // Establish S101 protocol // S101 provides message packaging, CRC integrity checks and a keep-alive mechanism. var stream = tcpClient.GetStream(); var s101Client = new S101Client(tcpClient, stream.ReadAsync, stream.WriteAsync); // Create consumer var consumer = await Consumer.CreateAsync(s101Client)); // Navigate down tree until IParameter is reached or desired INode var mixer = (INode)root.Children.First(c => c.Identifier == "MixerEmberIdentifier"); var mute = (IParameter)mixer.Children.First(c => c.Identifier == "Mute"); mute.Value = true; ```