예제 #1
0
        private async void _stream_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            await _semaphoreSlim.WaitAsync();

            try
            {
                var packet = await ReadFrameInternal();

                if (packet == null)
                {
                    return;
                }
                try
                {
                    var telegram = EnOceanTelegramFactory.FromPacket(packet);
                    TelegramReceived?.Invoke(this, new PacketReceivedEventArgs(telegram));
                }
                catch (NotImplementedException)
                {
                    Logger.Logger.Instance.LogHexIn(packet.RawData);
                }

                if (_stream.BytesToRead > 0)
                {
                    _stream_DataReceived(sender, e);
                }
            }
            finally
            {
                _semaphoreSlim.Release();
            }
        }
예제 #2
0
 private void TelegramReceivedEventHandler(object sender, PacketReceivedEventArgs packetReceivedEventArgs)
 {
     if (packetReceivedEventArgs.Telegram is RadioErp1Packet radio1 && _learnModeActive && RadioErp1Packet.IsTechIn(radio1))
     {
         TeachInReceived?.Invoke(sender, packetReceivedEventArgs);
     }
     TelegramReceived?.Invoke(sender, packetReceivedEventArgs);
 }