Beispiel #1
0
        private void ReceivedBytes(ref byte[] packetBytes, ref byte[] readBuffer)
        {
            // Fetch bytes from serial port
            //int bytesToRead = Math.Min(serialPort.BytesToRead, readBuffer.Length); // Don't use BytesToRead as it is not mono compatible
            int bytesToRead = readBuffer.Length;

            bytesToRead = serialPort.Read(readBuffer, 0, bytesToRead);

            Statistics?.BytesReceived.Increment(bytesToRead);

            int processed = 0;

            do
            {
                int packetLength;

                processed += reader.ProcessBytes(readBuffer, processed, bytesToRead - processed, ref packetBytes, out packetLength);

                if (packetLength <= 0)
                {
                    continue;
                }

                OscPacket oscPacket = OscPacket.Read(packetBytes, packetLength);

                if (Statistics != null && oscPacket.Error != OscPacketError.None)
                {
                    Statistics.ReceiveErrors.Increment(1);
                }

                PacketRecived?.Invoke(oscPacket);
            }while (processed < bytesToRead);
        }
Beispiel #2
0
        public OscPacket Read()
        {
            long position = reader.BaseStream.Position;

            OscPacket packet = reader.Read();

            long newPosition = reader.BaseStream.Position;

            Statistics?.BytesReceived.Increment((int)(newPosition - position));

            if (Statistics != null && packet.Error != OscPacketError.None)
            {
                Statistics.ReceiveErrors.Increment(1);
            }

            PacketRecived?.Invoke(packet);

            return(packet);
        }