コード例 #1
0
        private void fxThread(LedModes mode, byte[] options)
        {
            switch (mode)
            {
            case LedModes.SOLID:
                for (byte i = 0; i < numLeds; i++)
                {
                    ledArray[i * 3]     = 255;
                    ledArray[i * 3 + 1] = 180;
                    ledArray[i * 3 + 2] = 70;
                }
                s.Send(ledArray);
                break;

            case LedModes.RUNNING_RAINBOW:
                for (; ;)
                {
                    byte k;
                    for (byte j = 0; j < 255; j++)
                    {
                        // fill array with color wheel
                        k = j;
                        for (byte i = 0; i < numLeds; i++)
                        {
                            k++;
                            Array.Copy(Wheel(k), 0, ledArray, i * 3, 3);
                        }
                        s.Send(ledArray);

                        Thread.Sleep(20);
                    }
                }

            case LedModes.RUNNING:
                for (;;)
                {
                    for (byte i = 0; i < numLeds; i++)
                    {
                        Array.Clear(ledArray, 0, ledArray.Length);
                        Array.Copy(new byte[] { 255, 0, 0 }, 0, ledArray, i * 3, 3);

                        s.Send(ledArray);
                        Thread.Sleep(20);
                    }
                }

            default:
                throw new IndexOutOfRangeException("No such mode declared in LedEffects class");;
            }
        }
コード例 #2
0
 public void startEffect(LedModes mode, byte[] options)
 {
     this.effectThread = new Thread(
         () => fxThread(mode, options));
     effectThread.Start();
 }