예제 #1
0
            public SendStatus SendPixelValue(int channel, PixelRGBByte rgb)
            {
                var values = new byte[3];
                values[0] = rgb.R;
                values[1] = rgb.G;
                values[2] = rgb.B;

                // Max 510 RGB values per universe
                int universe = (this.startDmxChannel + (channel * 3)) / 510;
                int localStart = (this.startDmxChannel + (channel * 3)) % 510;

                var acnUniverse = GetAcnUniverse(this.startUniverse + universe);

                return acnUniverse.SendDimmerValues(localStart, values, 0, 3);
            }
예제 #2
0
            public SendStatus SendPixelsValue(int channel, PixelRGBByte[] rgb)
            {
                // Max 510 RGB values per universe
                int universe = (this.startDmxChannel + (channel * 3)) / 510;
                int localStart = (this.startDmxChannel + (channel * 3)) % 510;

                var acnUniverse = GetAcnUniverse(this.startUniverse + universe);

                int chn = 0;
                var values = new byte[3 * rgb.Length];
                foreach (var rgbValue in rgb)
                {
                    values[chn++] = rgbValue.R;
                    values[chn++] = rgbValue.G;
                    values[chn++] = rgbValue.B;

                    if (chn + localStart > 510)
                    {
                        acnUniverse.SendDimmerValues(localStart, values, 0, chn);

                        // Get next universe
                        chn = 0;
                        universe++;
                        localStart = 1;
                        acnUniverse = GetAcnUniverse(this.startUniverse + universe);
                    }
                }

                if (chn > 0)
                    acnUniverse.SendDimmerValues(localStart, values, 0, chn);

                return SendStatus.NotSet;
            }