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); }
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); }