예제 #1
0
        public void ReadColorTimePoints()
        {
            CallForFreshData();

            var rawVar = GetRawVariable("Points");
            var bytes  = StringToByteArray(rawVar);

            var ctps = new List <ColorTimePoint>();

            for (int pIx = 0; pIx < bytes.Length / 8; ++pIx)
            {
                var bIxOffset = pIx * 8;
                var id        = bytes[bIxOffset];
                var color     = new ColorTimePointColor(bytes[bIxOffset + 1], bytes[bIxOffset + 2], bytes[bIxOffset + 3]);
                var time      = BitConverter.ToSingle(bytes, bIxOffset + 4);
                ctps.Add(new ColorTimePoint(id, color, time));
            }

            ColorTimePointsRead?.Invoke(this, new EventArgs <ColorTimePoint[]>(ctps.ToArray()));
        }
        public void ReadColorTimePoints()
        {
            EnqueueCallOnNetworkStream(nameof(ReadColorTimePoints), netStream =>
            {
                netStream.WriteByte(0x03);

                var byteList = new List <byte>();
                var buffer   = new byte[1024];

                do
                {
                    var bytesRead = netStream.Read(buffer, 0, 4);
                    for (var i = 0; i < bytesRead; ++i)
                    {
                        byteList.Add(buffer[i]);
                    }
                }while (netStream.DataAvailable);

                var data = byteList.ToArray();

                var pointCount = data[0];
                var offsetIx   = 1;

                var points = new List <ColorTimePoint>();
                for (int i = 0; i < pointCount; ++i)
                {
                    var id = data[offsetIx];
                    var r  = data[offsetIx + 1];
                    var g  = data[offsetIx + 2];
                    var b  = data[offsetIx + 3];
                    var t  = BitConverter.ToSingle(data, offsetIx + 4);

                    var ctp = new ColorTimePoint(id, new ColorTimePointColor(r, g, b), t);
                    points.Add(ctp);

                    offsetIx += 8;
                }

                ColorTimePointsRead?.Invoke(this, new EventArgs <ColorTimePoint[]>(points.ToArray()));
            });
        }
예제 #3
0
 public void ReadColorTimePoints()
 {
     ColorTimePointsRead?.Invoke(this, new EventArgs <ColorTimePoint[]>(_points.ToArray()));
 }