Esempio n. 1
0
        public void ClearRecords()
        {
            if (IsRecording)
            {
                return;
            }

            records.Clear();
            maxChannelCount = 0;
            OnRecordCountChanged?.Invoke();
        }
Esempio n. 2
0
        private void OnReceive(string data)
        {
            if (!IsRecording)
            {
                return;
            }

            if (string.IsNullOrEmpty(data))
            {
                return;
            }

            data = data.Replace('-', '+').Replace('_', '/');
            var bytes = Convert.FromBase64String(data);

            if (bytes.Length != 2 + 33 * 4)
            {
                return;
            }

            var channelCount = bytes[1];
            var bools        = BitConverter.ToUInt32(bytes, 2);
            var numbers      = new float[32];

            for (var i = 0; i < 32; ++i)
            {
                numbers[i] = BitConverter.ToSingle(bytes, 6 + i * 4);
            }

            lock (records.SyncRoot)
            {
                records.Add(new Record
                {
                    Numbers = numbers,
                    Bools   = bools,
                });
                maxChannelCount = Math.Max(maxChannelCount, channelCount);
            }

            OnRecordCountChanged?.Invoke();
        }