Remarks
Me007ys | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
Code Example
Me007ys me007ys;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
me007ys = new Me007ys(Device, Device.PlatformOS.GetSerialPortName("COM1"));
var consumer = Me007ys.CreateObserver(
handler: result =>
{
Resolver.Log.Info($"Observer: Distance changed by threshold; new distance: {result.New.Centimeters:N1}cm, old: {result.Old?.Centimeters:N1}cm");
},
filter: result =>
{
if (result.Old is { } old)
{
return Math.Abs((result.New - old).Centimeters) > 0.5;
}
return false;
}
);
me007ys.Subscribe(consumer);
me007ys.DistanceUpdated += Me007y_DistanceUpdated;
return Task.CompletedTask;
}
public override async Task Run()
{
var distance = await me007ys.Read();
Resolver.Log.Info($"Initial distance is: {distance.Centimeters:N1}cm / {distance.Inches:N1}in");
me007ys.StartUpdating(TimeSpan.FromSeconds(2));
}
private void Me007y_DistanceUpdated(object sender, IChangeResult<Length> e)
{
Resolver.Log.Info($"Distance: {e.New.Centimeters:N1}cm / {e.New.Inches:N1}in");
}
Sample project(s) available on GitHub
Syntax
public class Me007ys : PollingSensorBase<Length>, IObservable<IChangeResult<Length>>, IRangeFinder, ISamplingSensor<Length>, ISensor<Length>, ISleepAwarePeripheral, IDisposable
Constructors
Me007ys(ISerialPort)
Creates a new ME007YS object communicating over serial
Declaration
public Me007ys(ISerialPort serialMessage)
Parameters
Type | Name | Description |
---|---|---|
ISerialPort | serialMessage | The serial message port |
Remarks
Me007ys | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
Code Example
Me007ys me007ys;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
me007ys = new Me007ys(Device, Device.PlatformOS.GetSerialPortName("COM1"));
var consumer = Me007ys.CreateObserver(
handler: result =>
{
Resolver.Log.Info($"Observer: Distance changed by threshold; new distance: {result.New.Centimeters:N1}cm, old: {result.Old?.Centimeters:N1}cm");
},
filter: result =>
{
if (result.Old is { } old)
{
return Math.Abs((result.New - old).Centimeters) > 0.5;
}
return false;
}
);
me007ys.Subscribe(consumer);
me007ys.DistanceUpdated += Me007y_DistanceUpdated;
return Task.CompletedTask;
}
public override async Task Run()
{
var distance = await me007ys.Read();
Resolver.Log.Info($"Initial distance is: {distance.Centimeters:N1}cm / {distance.Inches:N1}in");
me007ys.StartUpdating(TimeSpan.FromSeconds(2));
}
private void Me007y_DistanceUpdated(object sender, IChangeResult<Length> e)
{
Resolver.Log.Info($"Distance: {e.New.Centimeters:N1}cm / {e.New.Inches:N1}in");
}
Me007ys(IMeadowDevice, SerialPortName)
Creates a new ME007YS object communicating over serial
Declaration
public Me007ys(IMeadowDevice device, SerialPortName serialPortName)
Parameters
Type | Name | Description |
---|---|---|
IMeadowDevice | device | The device connected to the sensor |
SerialPortName | serialPortName | The serial port |
Remarks
Me007ys | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
Code Example
Me007ys me007ys;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
me007ys = new Me007ys(Device, Device.PlatformOS.GetSerialPortName("COM1"));
var consumer = Me007ys.CreateObserver(
handler: result =>
{
Resolver.Log.Info($"Observer: Distance changed by threshold; new distance: {result.New.Centimeters:N1}cm, old: {result.Old?.Centimeters:N1}cm");
},
filter: result =>
{
if (result.Old is { } old)
{
return Math.Abs((result.New - old).Centimeters) > 0.5;
}
return false;
}
);
me007ys.Subscribe(consumer);
me007ys.DistanceUpdated += Me007y_DistanceUpdated;
return Task.CompletedTask;
}
public override async Task Run()
{
var distance = await me007ys.Read();
Resolver.Log.Info($"Initial distance is: {distance.Centimeters:N1}cm / {distance.Inches:N1}in");
me007ys.StartUpdating(TimeSpan.FromSeconds(2));
}
private void Me007y_DistanceUpdated(object sender, IChangeResult<Length> e)
{
Resolver.Log.Info($"Distance: {e.New.Centimeters:N1}cm / {e.New.Inches:N1}in");
}
Properties
Distance
Distance from sensor to object
Declaration
public Length? Distance { get; protected set; }
Property Value
Type | Description |
---|---|
Length? |
Remarks
Me007ys | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
Code Example
Me007ys me007ys;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
me007ys = new Me007ys(Device, Device.PlatformOS.GetSerialPortName("COM1"));
var consumer = Me007ys.CreateObserver(
handler: result =>
{
Resolver.Log.Info($"Observer: Distance changed by threshold; new distance: {result.New.Centimeters:N1}cm, old: {result.Old?.Centimeters:N1}cm");
},
filter: result =>
{
if (result.Old is { } old)
{
return Math.Abs((result.New - old).Centimeters) > 0.5;
}
return false;
}
);
me007ys.Subscribe(consumer);
me007ys.DistanceUpdated += Me007y_DistanceUpdated;
return Task.CompletedTask;
}
public override async Task Run()
{
var distance = await me007ys.Read();
Resolver.Log.Info($"Initial distance is: {distance.Centimeters:N1}cm / {distance.Inches:N1}in");
me007ys.StartUpdating(TimeSpan.FromSeconds(2));
}
private void Me007y_DistanceUpdated(object sender, IChangeResult<Length> e)
{
Resolver.Log.Info($"Distance: {e.New.Centimeters:N1}cm / {e.New.Inches:N1}in");
}
OutOfRangeValue
Value returned when the sensor cannot determine the distance
Declaration
public Length OutOfRangeValue { get; }
Property Value
Type | Description |
---|---|
Length |
Remarks
Me007ys | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
Code Example
Me007ys me007ys;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
me007ys = new Me007ys(Device, Device.PlatformOS.GetSerialPortName("COM1"));
var consumer = Me007ys.CreateObserver(
handler: result =>
{
Resolver.Log.Info($"Observer: Distance changed by threshold; new distance: {result.New.Centimeters:N1}cm, old: {result.Old?.Centimeters:N1}cm");
},
filter: result =>
{
if (result.Old is { } old)
{
return Math.Abs((result.New - old).Centimeters) > 0.5;
}
return false;
}
);
me007ys.Subscribe(consumer);
me007ys.DistanceUpdated += Me007y_DistanceUpdated;
return Task.CompletedTask;
}
public override async Task Run()
{
var distance = await me007ys.Read();
Resolver.Log.Info($"Initial distance is: {distance.Centimeters:N1}cm / {distance.Inches:N1}in");
me007ys.StartUpdating(TimeSpan.FromSeconds(2));
}
private void Me007y_DistanceUpdated(object sender, IChangeResult<Length> e)
{
Resolver.Log.Info($"Distance: {e.New.Centimeters:N1}cm / {e.New.Inches:N1}in");
}
Methods
AfterWake(CancellationToken)
Called after the platform returns to Wake state
Declaration
public Task AfterWake(CancellationToken cancellationToken)
Parameters
Type | Name | Description |
---|---|---|
CancellationToken | cancellationToken |
Returns
Type | Description |
---|---|
Task |
Remarks
Me007ys | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
Code Example
Me007ys me007ys;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
me007ys = new Me007ys(Device, Device.PlatformOS.GetSerialPortName("COM1"));
var consumer = Me007ys.CreateObserver(
handler: result =>
{
Resolver.Log.Info($"Observer: Distance changed by threshold; new distance: {result.New.Centimeters:N1}cm, old: {result.Old?.Centimeters:N1}cm");
},
filter: result =>
{
if (result.Old is { } old)
{
return Math.Abs((result.New - old).Centimeters) > 0.5;
}
return false;
}
);
me007ys.Subscribe(consumer);
me007ys.DistanceUpdated += Me007y_DistanceUpdated;
return Task.CompletedTask;
}
public override async Task Run()
{
var distance = await me007ys.Read();
Resolver.Log.Info($"Initial distance is: {distance.Centimeters:N1}cm / {distance.Inches:N1}in");
me007ys.StartUpdating(TimeSpan.FromSeconds(2));
}
private void Me007y_DistanceUpdated(object sender, IChangeResult<Length> e)
{
Resolver.Log.Info($"Distance: {e.New.Centimeters:N1}cm / {e.New.Inches:N1}in");
}
BeforeSleep(CancellationToken)
Called before the platform goes into Sleep state
Declaration
public Task BeforeSleep(CancellationToken cancellationToken)
Parameters
Type | Name | Description |
---|---|---|
CancellationToken | cancellationToken |
Returns
Type | Description |
---|---|
Task |
Remarks
Me007ys | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
Code Example
Me007ys me007ys;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
me007ys = new Me007ys(Device, Device.PlatformOS.GetSerialPortName("COM1"));
var consumer = Me007ys.CreateObserver(
handler: result =>
{
Resolver.Log.Info($"Observer: Distance changed by threshold; new distance: {result.New.Centimeters:N1}cm, old: {result.Old?.Centimeters:N1}cm");
},
filter: result =>
{
if (result.Old is { } old)
{
return Math.Abs((result.New - old).Centimeters) > 0.5;
}
return false;
}
);
me007ys.Subscribe(consumer);
me007ys.DistanceUpdated += Me007y_DistanceUpdated;
return Task.CompletedTask;
}
public override async Task Run()
{
var distance = await me007ys.Read();
Resolver.Log.Info($"Initial distance is: {distance.Centimeters:N1}cm / {distance.Inches:N1}in");
me007ys.StartUpdating(TimeSpan.FromSeconds(2));
}
private void Me007y_DistanceUpdated(object sender, IChangeResult<Length> e)
{
Resolver.Log.Info($"Distance: {e.New.Centimeters:N1}cm / {e.New.Inches:N1}in");
}
Dispose()
Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
Declaration
public void Dispose()
Remarks
Me007ys | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
Code Example
Me007ys me007ys;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
me007ys = new Me007ys(Device, Device.PlatformOS.GetSerialPortName("COM1"));
var consumer = Me007ys.CreateObserver(
handler: result =>
{
Resolver.Log.Info($"Observer: Distance changed by threshold; new distance: {result.New.Centimeters:N1}cm, old: {result.Old?.Centimeters:N1}cm");
},
filter: result =>
{
if (result.Old is { } old)
{
return Math.Abs((result.New - old).Centimeters) > 0.5;
}
return false;
}
);
me007ys.Subscribe(consumer);
me007ys.DistanceUpdated += Me007y_DistanceUpdated;
return Task.CompletedTask;
}
public override async Task Run()
{
var distance = await me007ys.Read();
Resolver.Log.Info($"Initial distance is: {distance.Centimeters:N1}cm / {distance.Inches:N1}in");
me007ys.StartUpdating(TimeSpan.FromSeconds(2));
}
private void Me007y_DistanceUpdated(object sender, IChangeResult<Length> e)
{
Resolver.Log.Info($"Distance: {e.New.Centimeters:N1}cm / {e.New.Inches:N1}in");
}
Dispose(bool)
Dispose of the object
Declaration
protected virtual void Dispose(bool disposing)
Parameters
Type | Name | Description |
---|---|---|
bool | disposing | Is disposing |
Remarks
Me007ys | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
Code Example
Me007ys me007ys;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
me007ys = new Me007ys(Device, Device.PlatformOS.GetSerialPortName("COM1"));
var consumer = Me007ys.CreateObserver(
handler: result =>
{
Resolver.Log.Info($"Observer: Distance changed by threshold; new distance: {result.New.Centimeters:N1}cm, old: {result.Old?.Centimeters:N1}cm");
},
filter: result =>
{
if (result.Old is { } old)
{
return Math.Abs((result.New - old).Centimeters) > 0.5;
}
return false;
}
);
me007ys.Subscribe(consumer);
me007ys.DistanceUpdated += Me007y_DistanceUpdated;
return Task.CompletedTask;
}
public override async Task Run()
{
var distance = await me007ys.Read();
Resolver.Log.Info($"Initial distance is: {distance.Centimeters:N1}cm / {distance.Inches:N1}in");
me007ys.StartUpdating(TimeSpan.FromSeconds(2));
}
private void Me007y_DistanceUpdated(object sender, IChangeResult<Length> e)
{
Resolver.Log.Info($"Distance: {e.New.Centimeters:N1}cm / {e.New.Inches:N1}in");
}
MeasureDistance()
Start a distance measurement
Declaration
public void MeasureDistance()
Remarks
Me007ys | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
Code Example
Me007ys me007ys;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
me007ys = new Me007ys(Device, Device.PlatformOS.GetSerialPortName("COM1"));
var consumer = Me007ys.CreateObserver(
handler: result =>
{
Resolver.Log.Info($"Observer: Distance changed by threshold; new distance: {result.New.Centimeters:N1}cm, old: {result.Old?.Centimeters:N1}cm");
},
filter: result =>
{
if (result.Old is { } old)
{
return Math.Abs((result.New - old).Centimeters) > 0.5;
}
return false;
}
);
me007ys.Subscribe(consumer);
me007ys.DistanceUpdated += Me007y_DistanceUpdated;
return Task.CompletedTask;
}
public override async Task Run()
{
var distance = await me007ys.Read();
Resolver.Log.Info($"Initial distance is: {distance.Centimeters:N1}cm / {distance.Inches:N1}in");
me007ys.StartUpdating(TimeSpan.FromSeconds(2));
}
private void Me007y_DistanceUpdated(object sender, IChangeResult<Length> e)
{
Resolver.Log.Info($"Distance: {e.New.Centimeters:N1}cm / {e.New.Inches:N1}in");
}
RaiseEventsAndNotify(IChangeResult<Length>)
Raise distance change event for subscribers
Declaration
protected override void RaiseEventsAndNotify(IChangeResult<Length> changeResult)
Parameters
Type | Name | Description |
---|---|---|
IChangeResult<Length> | changeResult |
Overrides
Remarks
Me007ys | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
Code Example
Me007ys me007ys;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
me007ys = new Me007ys(Device, Device.PlatformOS.GetSerialPortName("COM1"));
var consumer = Me007ys.CreateObserver(
handler: result =>
{
Resolver.Log.Info($"Observer: Distance changed by threshold; new distance: {result.New.Centimeters:N1}cm, old: {result.Old?.Centimeters:N1}cm");
},
filter: result =>
{
if (result.Old is { } old)
{
return Math.Abs((result.New - old).Centimeters) > 0.5;
}
return false;
}
);
me007ys.Subscribe(consumer);
me007ys.DistanceUpdated += Me007y_DistanceUpdated;
return Task.CompletedTask;
}
public override async Task Run()
{
var distance = await me007ys.Read();
Resolver.Log.Info($"Initial distance is: {distance.Centimeters:N1}cm / {distance.Inches:N1}in");
me007ys.StartUpdating(TimeSpan.FromSeconds(2));
}
private void Me007y_DistanceUpdated(object sender, IChangeResult<Length> e)
{
Resolver.Log.Info($"Distance: {e.New.Centimeters:N1}cm / {e.New.Inches:N1}in");
}
Read()
Convenience method to get the current sensor reading
Declaration
public override Task<Length> Read()
Returns
Type | Description |
---|---|
Task<Length> |
Overrides
Remarks
Me007ys | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
Code Example
Me007ys me007ys;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
me007ys = new Me007ys(Device, Device.PlatformOS.GetSerialPortName("COM1"));
var consumer = Me007ys.CreateObserver(
handler: result =>
{
Resolver.Log.Info($"Observer: Distance changed by threshold; new distance: {result.New.Centimeters:N1}cm, old: {result.Old?.Centimeters:N1}cm");
},
filter: result =>
{
if (result.Old is { } old)
{
return Math.Abs((result.New - old).Centimeters) > 0.5;
}
return false;
}
);
me007ys.Subscribe(consumer);
me007ys.DistanceUpdated += Me007y_DistanceUpdated;
return Task.CompletedTask;
}
public override async Task Run()
{
var distance = await me007ys.Read();
Resolver.Log.Info($"Initial distance is: {distance.Centimeters:N1}cm / {distance.Inches:N1}in");
me007ys.StartUpdating(TimeSpan.FromSeconds(2));
}
private void Me007y_DistanceUpdated(object sender, IChangeResult<Length> e)
{
Resolver.Log.Info($"Distance: {e.New.Centimeters:N1}cm / {e.New.Inches:N1}in");
}
ReadSensor()
Read the distance from the sensor
Declaration
protected override Task<Length> ReadSensor()
Returns
Type | Description |
---|---|
Task<Length> |
Overrides
Remarks
Me007ys | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
Code Example
Me007ys me007ys;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
me007ys = new Me007ys(Device, Device.PlatformOS.GetSerialPortName("COM1"));
var consumer = Me007ys.CreateObserver(
handler: result =>
{
Resolver.Log.Info($"Observer: Distance changed by threshold; new distance: {result.New.Centimeters:N1}cm, old: {result.Old?.Centimeters:N1}cm");
},
filter: result =>
{
if (result.Old is { } old)
{
return Math.Abs((result.New - old).Centimeters) > 0.5;
}
return false;
}
);
me007ys.Subscribe(consumer);
me007ys.DistanceUpdated += Me007y_DistanceUpdated;
return Task.CompletedTask;
}
public override async Task Run()
{
var distance = await me007ys.Read();
Resolver.Log.Info($"Initial distance is: {distance.Centimeters:N1}cm / {distance.Inches:N1}in");
me007ys.StartUpdating(TimeSpan.FromSeconds(2));
}
private void Me007y_DistanceUpdated(object sender, IChangeResult<Length> e)
{
Resolver.Log.Info($"Distance: {e.New.Centimeters:N1}cm / {e.New.Inches:N1}in");
}
StartUpdating(TimeSpan?)
Start updating distances
Declaration
public override void StartUpdating(TimeSpan? updateInterval)
Parameters
Type | Name | Description |
---|---|---|
TimeSpan? | updateInterval | The interval used to notify external subscribers |
Overrides
Remarks
Me007ys | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
Code Example
Me007ys me007ys;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
me007ys = new Me007ys(Device, Device.PlatformOS.GetSerialPortName("COM1"));
var consumer = Me007ys.CreateObserver(
handler: result =>
{
Resolver.Log.Info($"Observer: Distance changed by threshold; new distance: {result.New.Centimeters:N1}cm, old: {result.Old?.Centimeters:N1}cm");
},
filter: result =>
{
if (result.Old is { } old)
{
return Math.Abs((result.New - old).Centimeters) > 0.5;
}
return false;
}
);
me007ys.Subscribe(consumer);
me007ys.DistanceUpdated += Me007y_DistanceUpdated;
return Task.CompletedTask;
}
public override async Task Run()
{
var distance = await me007ys.Read();
Resolver.Log.Info($"Initial distance is: {distance.Centimeters:N1}cm / {distance.Inches:N1}in");
me007ys.StartUpdating(TimeSpan.FromSeconds(2));
}
private void Me007y_DistanceUpdated(object sender, IChangeResult<Length> e)
{
Resolver.Log.Info($"Distance: {e.New.Centimeters:N1}cm / {e.New.Inches:N1}in");
}
StopUpdating()
Stop sampling
Declaration
public override void StopUpdating()
Overrides
Remarks
Me007ys | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
Code Example
Me007ys me007ys;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
me007ys = new Me007ys(Device, Device.PlatformOS.GetSerialPortName("COM1"));
var consumer = Me007ys.CreateObserver(
handler: result =>
{
Resolver.Log.Info($"Observer: Distance changed by threshold; new distance: {result.New.Centimeters:N1}cm, old: {result.Old?.Centimeters:N1}cm");
},
filter: result =>
{
if (result.Old is { } old)
{
return Math.Abs((result.New - old).Centimeters) > 0.5;
}
return false;
}
);
me007ys.Subscribe(consumer);
me007ys.DistanceUpdated += Me007y_DistanceUpdated;
return Task.CompletedTask;
}
public override async Task Run()
{
var distance = await me007ys.Read();
Resolver.Log.Info($"Initial distance is: {distance.Centimeters:N1}cm / {distance.Inches:N1}in");
me007ys.StartUpdating(TimeSpan.FromSeconds(2));
}
private void Me007y_DistanceUpdated(object sender, IChangeResult<Length> e)
{
Resolver.Log.Info($"Distance: {e.New.Centimeters:N1}cm / {e.New.Inches:N1}in");
}
Events
DistanceUpdated
Raised when the value of the reading changes
Declaration
public event EventHandler<IChangeResult<Length>> DistanceUpdated
Event Type
Type | Description |
---|---|
EventHandler<IChangeResult<Length>> |
Remarks
Me007ys | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
Code Example
Me007ys me007ys;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
me007ys = new Me007ys(Device, Device.PlatformOS.GetSerialPortName("COM1"));
var consumer = Me007ys.CreateObserver(
handler: result =>
{
Resolver.Log.Info($"Observer: Distance changed by threshold; new distance: {result.New.Centimeters:N1}cm, old: {result.Old?.Centimeters:N1}cm");
},
filter: result =>
{
if (result.Old is { } old)
{
return Math.Abs((result.New - old).Centimeters) > 0.5;
}
return false;
}
);
me007ys.Subscribe(consumer);
me007ys.DistanceUpdated += Me007y_DistanceUpdated;
return Task.CompletedTask;
}
public override async Task Run()
{
var distance = await me007ys.Read();
Resolver.Log.Info($"Initial distance is: {distance.Centimeters:N1}cm / {distance.Inches:N1}in");
me007ys.StartUpdating(TimeSpan.FromSeconds(2));
}
private void Me007y_DistanceUpdated(object sender, IChangeResult<Length> e)
{
Resolver.Log.Info($"Distance: {e.New.Centimeters:N1}cm / {e.New.Inches:N1}in");
}