現在、C# .NET 用の DMX ライブラリに取り組んでいます。現時点では、「開始色」と「終了色」に基づいて色の遷移を作成することに固執しています。
この関数は 3 つの引数を取ります。1 つ目は DMXController オブジェクト (基本的には拡張された SerialPort)、2 つ目は startColor、3 つ目は endColor です。
全体の処理は別のスレッドで処理されるため、アプリケーションがハングすることはありません。
DMX クライアントは単なる RGB LED コントローラーであるため、文字通り RGB 値 (例: 赤 = 255、0、0) を受け入れます。
固定色の例をいくつか見てきましたが、このプロジェクトでは任意の色を使用できます。
私が正しければ、最大ステップ数は 255 ステップになります。
これを行うための最も効率的な方法は何ですか? サイクルのすべてのステップは DMXController に送信されるため、ある種の for-next または while ループである必要があり、すべてのステップが送信されます。
これまでの私のコードは次のとおりです。
public static void FadeColor(DMXController controller, Color startColor, Color endColor)
{
Color currentColor = startColor;
Thread fadeColorThread = new Thread(delegate()
{
// Start For-Next / While loop
// Update currentColor with new RGB values
controller.SetChannel(1, currentColor.R);
controller.SetChannel(2, currentColor.G);
controller.SetChannel(3, currentColor.B);
controller.Update();
// If neccesary a delay like Thread.Sleep(5);
// End For-Next / While loop
});
fadeColorThread.Name = "DMX Color Transition Thread";
fadeColorThread.Start();
}
トランジションを開始する前に、カラー オブジェクトから r、g、および b の値を抽出する方が速い場合は、それを実装します。