public async Task <ICollection <ParticularMatterDataPacket> > ReadPacketsAsync(int bytesToRead) { var buffer = new byte[bytesToRead]; var bytesRead = await _baseStream.ReadAsync(buffer, 0, buffer.Length); ICollection <ParticularMatterDataPacket> resultList = new List <ParticularMatterDataPacket>(); for (var index = 0; index < bytesRead; index++) { if (buffer[index] != ParticularMatterDataPacket.MessageHeader) { continue; } if (buffer[++index] != ParticularMatterDataPacket.CommanderNo) { continue; } index++; var result = new ParticularMatterDataPacket(); result.SetPm25(ReadUint(buffer, ref index)); result.SetPm10(ReadUint(buffer, ref index)); result.Id1 = buffer[index++]; result.Id2 = buffer[index++]; if (buffer[index++] != result.Checksum) { continue; } if (buffer[index] != ParticularMatterDataPacket.MessageTail) { continue; } resultList.Add(result); } return(resultList); }
private void OnPacketReceived(ParticularMatterDataPacket packet) => PacketReceived?.Invoke(this, packet);