Skip to main content

Stream Class

Docs under migration

These docs are under active migration and updates. The original docs will remain available at docs.ghielectronics.com for future reference.

Provides a generic view of a sequence of bytes. This is an abstract class.

tip

Need NuGets: GHIElectronics.TinyCLR.Core

FileStream

var fileStream = new FileStream(@"A:\filename.tca", FileMode.Open);

// Allocate a buffer with size fileStream.Length
var buffer = new byte[fileStream.Length];

// Read data
fileStream.Read(buffer, 0, buffer.Length);

MemoryStream

var bufferIn = new byte[3] { 1, 2, 3 };

var memoryStream = new System.IO.MemoryStream();

memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
memoryStream.Write(bufferIn, 0, bufferIn.Length);

var bufferOut = memoryStream.ToArray();

// bufferIn and bufferOut match

NetworkStream

var myNetworkStream = new NetworkStream(networkSocket);

UartStream

public class UartStream : Stream {

private UartController uart;
public UartStream(UartController uart) => this.uart = uart;

public override bool CanRead => true;
public override bool CanSeek => false;
public override bool CanWrite => true;

public override long Length => throw new NotImplementedException();

public override long Position { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }

public override void Flush() => this.uart.Flush();

public override int Read(byte[] buffer, int offset, int count) {
var read = 0;
while (read < count){
while (this.uart.BytesToRead == 0) ;

read += this.uart.Read(buffer, offset + read, count - read);
}

return read;
}

public override long Seek(long offset, SeekOrigin origin) => throw new NotImplementedException();

public override void SetLength(long value) => throw new NotImplementedException();

public override void Write(byte[] buffer, int offset, int count){
var write = 0;

while (write < count){
write += this.uart.Write(buffer, offset + write, count - write);
}
}

public override bool DataAvailable => this.uart.BytesToRead > 0;
}