コード例 #1
0
        private void _txChar_ValueChanged(GattCharacteristic sender, GattValueChangedEventArgs args)
        {
            // enqueue new data
            var data = new byte[args.CharacteristicValue.Length];

            DataReader.FromBuffer(args.CharacteristicValue).ReadBytes(data);
            _rxData.AddRange(data);

            // try parsing
            int             consumedBytes = 0;
            DownlinkMessage msg           = null;

            using (var stream = new MemoryStream(_rxData.ToArray()))
            {
                msg           = DownlinkMessage.Parser.ParseDelimitedFrom(stream);
                consumedBytes = (int)stream.Position;
            }

            // publish
            if (msg != null)
            {
                _rxData.RemoveRange(0, consumedBytes);
                DownlinkMessageReceived?.Invoke(this, msg);
            }
        }
コード例 #2
0
        internal void OnUartTx(byte[] data, ushort length)
        {
            // enqueue new data
            _rxData.AddRange(data);

            // try parsing
            int             consumedBytes = 0;
            DownlinkMessage msg           = null;

            using (var stream = new MemoryStream(_rxData.ToArray()))
            {
                msg           = DownlinkMessage.Parser.ParseDelimitedFrom(stream);
                consumedBytes = (int)stream.Position;
            }

            // publish
            if (msg != null)
            {
                _rxData.RemoveRange(0, consumedBytes);
                DownlinkMessageReceived?.Invoke(this, msg);
            }
        }