Chronos Plugins 5.4.0
This documentation covers the plugin interfaces definitions and an example implementation.
|
A chronos plugin implementation for a fake device. We pretend we are controlling a mixture of coffee machine and waiter robot. More...
Public Member Functions | |
MockDevice () | |
void | Dispose () |
void | BrewFrappuccino (BrewFrappuccino.CompositionData composition) |
Pretend we are doing some operation on a complex parameter set. | |
void | SomeDummyMethod () |
Just for testing if methods of this device can be called from some other point in our code. | |
void | Connect () |
Inform the user of our connect attempt / success. Instead of establishing a real connection, show some message box. | |
void | Disconnect () |
Pretend we are closing the connection. Actual operation substituted by a message box. | |
void | ShowTheMessage (string messageText) |
Let our device set a status message and display some message box instead of doing real work. | |
void | TriggerAbort (string reason, bool softStop) |
This will trigger the AbortSchedule-Event 5 seconds after it was called from a task. | |
void | CheckForAbort () |
Task | ApplyParametersAsync (bool waitUntilSetpointIsReached, CancellationToken canToken) |
void | WaitIfPaused () |
void | BeginInteraction () |
Will be called if interaction is started, gives you a chance to unlock a terminal, for example. | |
void | EndInteraction () |
Will be called if you can lock the terminal again. | |
void | RaiseError (string errorDescription, ErrorType errType, bool resolved) |
"Retry" here means that we don't retry some action, but that we raise the error again. | |
void | Connect () |
You may have connected to the device before this, but make sure you are connected after this. | |
void | Disconnect () |
You may disconnect now. | |
Public Member Functions inherited from AxelSemrau.Chronos.Plugin.IHaveMachineParameters< CoffeMakerParams > | |
Task | ApplyParametersAsync (bool waitUntilSetpointIsReached, CancellationToken cancelToken) |
Set the given parameters on the device. | |
void | BeginInteraction () |
Will be called if interaction is started, gives you a chance to unlock a terminal, for example. | |
void | EndInteraction () |
Will be called if you can lock the terminal again. | |
Static Public Attributes | |
const string | DeviceTypeName = "ACME Coffee Maker" |
Properties | |
string | DisplayedTypeName [get] |
Visible to the user on the instruments page of the settings editor. | |
string | DeviceTypeDescription [get] |
Device class specification referred to by some messages. | |
string | Name [get, set] |
User-selected name for the device instance. | |
string | Connection = "COM17" [get, set] |
Connection as set in the Chronos instrument settings. | |
bool | IsConnected [get, set] |
Helper for our toolbox. | |
CoffeMakerParams | Parameters = new CoffeMakerParams() [get, set] |
bool | Aborted [get, set] |
If set, abort execution as soon as possible. You can throw an OperationCanceledException. Will be set to false after termination of the run. | |
bool | Paused [get, set] |
If paused, wait until paused is reset before executing the next command. | |
IEnumerable< string > | LogPaths [get] |
Provide full paths to each of your log files here. | |
Func< StopRunArgs, Task > | StopRun [get, set] |
Callback function returning a task that completes once the schedule queue was stopped. | |
IScheduleEvents | ScheduleEvents [set] |
Hook up immediately or save this for later use. | |
Properties inherited from AxelSemrau.Chronos.Plugin.IDevice | |
string | DisplayedTypeName [get] |
Text which is displayed in the instruments settings "Autosampler Type" column and in many other places. | |
string | DeviceTypeDescription [get] |
Text which is displayed to make clear which kind of device a named sampler is. | |
string | Name [get, set] |
User-selected name for the device instance. | |
Properties inherited from AxelSemrau.Chronos.Plugin.INeedAConnection | |
string | Connection [get, set] |
Name of a serial port, IP address, hostname.... | |
Properties inherited from AxelSemrau.Chronos.Plugin.ICanInterrupt | |
bool | Aborted [get, set] |
If set, abort execution as soon as possible. You can throw an OperationCanceledException. Will be set to false after termination of the run. | |
bool | Paused [get, set] |
If paused, wait until paused is reset before executing the next command. | |
Properties inherited from AxelSemrau.Chronos.Plugin.IHaveMachineParameters< CoffeMakerParams > | |
ParamType | Parameters [get, set] |
Your parameter set. | |
Properties inherited from AxelSemrau.Chronos.Plugin.IProvideDiagnosticLogs | |
IEnumerable< string > | LogPaths [get] |
Provide full paths to each of your log files here. | |
Properties inherited from AxelSemrau.Chronos.Plugin.IStopRuns | |
Func< StopRunArgs, Task > | StopRun [set] |
Callback function returning a task that completes once the schedule queue was stopped. | |
Properties inherited from AxelSemrau.Chronos.Plugin.IScheduleStateAware | |
IScheduleEvents | ScheduleEvents [set] |
Hook up immediately or save this for later use. | |
Events | |
Action< ConnectionState > | ConnectionStateChanged |
Action< string > | SetStatusMessage |
Action< string > | DebugOutput |
PropertyChangedEventHandler | PropertyChanged |
Action< string > | AbortSchedule |
EventHandler< InteractiveErrorHandlingEventArgs > | HandleError |
Events inherited from AxelSemrau.Chronos.Plugin.IDevice | |
Action< ConnectionState > | ConnectionStateChanged |
Raise this event when your connection state has changed. | |
Events inherited from AxelSemrau.Chronos.Plugin.IProvideStatusMessages | |
Action< string > | SetStatusMessage |
Raise this event to set your current status while doing something on the device. Messages passed to this event will be shown in the "Autosampler status" line. | |
Events inherited from AxelSemrau.Chronos.Plugin.IHaveDebugOutput | |
Action< string > | DebugOutput |
Messages passed to this event will be logged (including a timestamp) to the user configured debug logfile. | |
Events inherited from AxelSemrau.Chronos.Plugin.IAbortSchedules | |
Action< string > | AbortSchedule |
If you raise this event, the schedule will be aborted. | |
Events inherited from AxelSemrau.Chronos.Plugin.IHaveInteractiveErrorHandling | |
EventHandler< InteractiveErrorHandlingEventArgs > | HandleError |
Raise this event if you want the user to decide how to continue, if this is desired in the settings. | |
Private Member Functions | |
void | OnIsConnectedChanged () |
For thread-safe update of the toolbox's GUI elements representing the connection state. | |
void | ScheduleStateChangedHandler (object sender, ScheduleStateEventArgs e) |
Private Attributes | |
bool | mIsConnected |
readonly ManualResetEventSlim | mPauseEnded = new ManualResetEventSlim(true) |
Using an event here instead of a simple bool helps us avoid polling while checking for the events. | |
readonly ManualResetEventSlim | mAborted = new ManualResetEventSlim(false) |
IScheduleEvents | mScheduleEvents |
A chronos plugin implementation for a fake device. We pretend we are controlling a mixture of coffee machine and waiter robot.
Just an example implementation that doesn't do any real work.
Definition at line 38 of file MockDevice.cs.
MockPlugin.Device.MockDevice.MockDevice | ( | ) |
Definition at line 63 of file MockDevice.cs.
Task MockPlugin.Device.MockDevice.ApplyParametersAsync | ( | bool | waitUntilSetpointIsReached, |
CancellationToken | canToken | ||
) |
Definition at line 267 of file MockDevice.cs.
References MockPlugin.Device.MockDevice.SetStatusMessage, and Task.
void MockPlugin.Device.MockDevice.BeginInteraction | ( | ) |
Will be called if interaction is started, gives you a chance to unlock a terminal, for example.
Implements AxelSemrau.Chronos.Plugin.IHaveInteractiveErrorHandling.
Definition at line 354 of file MockDevice.cs.
References MockPlugin.Device.MockDevice.DebugOutput.
void MockPlugin.Device.MockDevice.BrewFrappuccino | ( | BrewFrappuccino::CompositionData | composition | ) |
Pretend we are doing some operation on a complex parameter set.
composition |
Definition at line 96 of file MockDevice.cs.
References MockPlugin.Device.MockDevice.ShowTheMessage(), and MockPlugin.Device.MockDevice.WaitIfPaused().
Referenced by MockPlugin.Tasks.BrewFrappuccino.Execute().
void MockPlugin.Device.MockDevice.CheckForAbort | ( | ) |
Definition at line 253 of file MockDevice.cs.
References MockPlugin.Device.MockDevice.mAborted.
Referenced by MockPlugin.Device.MockDevice.WaitIfPaused().
void MockPlugin.Device.MockDevice.Connect | ( | ) |
Inform the user of our connect attempt / success. Instead of establishing a real connection, show some message box.
Implements AxelSemrau.Chronos.Plugin.IDevice.
Definition at line 114 of file MockDevice.cs.
References MockPlugin.Device.MockDevice.ConnectionStateChanged, AxelSemrau.Chronos.Plugin.Helpers.Gui, AxelSemrau.Chronos.Plugin.IGuiHelper.MainWindow, MockPlugin.Device.MockDevice.mIsConnected, and MockPlugin.Device.MockDevice.OnIsConnectedChanged().
void MockPlugin.Device.MockDevice.Disconnect | ( | ) |
Pretend we are closing the connection. Actual operation substituted by a message box.
Implements AxelSemrau.Chronos.Plugin.IDevice.
Definition at line 126 of file MockDevice.cs.
References MockPlugin.Device.MockDevice.ConnectionStateChanged, AxelSemrau.Chronos.Plugin.Helpers.Gui, AxelSemrau.Chronos.Plugin.IGuiHelper.MainWindow, MockPlugin.Device.MockDevice.mIsConnected, and MockPlugin.Device.MockDevice.OnIsConnectedChanged().
void MockPlugin.Device.MockDevice.Dispose | ( | ) |
Definition at line 70 of file MockDevice.cs.
References MockPlugin.Device.MockDevice.DebugOutput.
void MockPlugin.Device.MockDevice.EndInteraction | ( | ) |
Will be called if you can lock the terminal again.
Implements AxelSemrau.Chronos.Plugin.IHaveInteractiveErrorHandling.
Definition at line 359 of file MockDevice.cs.
References MockPlugin.Device.MockDevice.DebugOutput.
|
private |
For thread-safe update of the toolbox's GUI elements representing the connection state.
Definition at line 207 of file MockDevice.cs.
References AxelSemrau.Chronos.Plugin.Helpers.Gui, AxelSemrau.Chronos.Plugin.IGuiHelper.GuiTaskFactory, MockPlugin.Device.MockDevice.IsConnected, and MockPlugin.Device.MockDevice.PropertyChanged.
Referenced by MockPlugin.Device.MockDevice.Connect(), and MockPlugin.Device.MockDevice.Disconnect().
void MockPlugin.Device.MockDevice.RaiseError | ( | string | errorDescription, |
ErrorType | errType, | ||
bool | resolved | ||
) |
"Retry" here means that we don't retry some action, but that we raise the error again.
errorDescription | |
errType | |
resolved |
Definition at line 370 of file MockDevice.cs.
References MockPlugin.Device.MockDevice.HandleError.
Referenced by MockPlugin.Tasks.CoffeeMachineDoesNotWorkProperly.Execute().
|
private |
Definition at line 348 of file MockDevice.cs.
References MockPlugin.Device.MockDevice.DebugOutput.
void MockPlugin.Device.MockDevice.ShowTheMessage | ( | string | messageText | ) |
Let our device set a status message and display some message box instead of doing real work.
messageText |
Definition at line 158 of file MockDevice.cs.
References MockPlugin.Device.MockDevice.DebugOutput, AxelSemrau.Chronos.Plugin.Helpers.Gui, AxelSemrau.Chronos.Plugin.IGuiHelper.MainWindow, MockPlugin.Device.MockDevice.SetStatusMessage, and MockPlugin.Device.MockDevice.WaitIfPaused().
Referenced by MockPlugin.Device.MockDevice.BrewFrappuccino(), MockPlugin.Device.MockDeviceToolbox.btnShowMessage_Click(), and MockPlugin.Tasks.BrewCoffee.Execute().
void MockPlugin.Device.MockDevice.SomeDummyMethod | ( | ) |
Just for testing if methods of this device can be called from some other point in our code.
Definition at line 106 of file MockDevice.cs.
References MockPlugin.Device.MockDevice.DebugOutput.
void MockPlugin.Device.MockDevice.TriggerAbort | ( | string | reason, |
bool | softStop | ||
) |
This will trigger the AbortSchedule-Event 5 seconds after it was called from a task.
reason | |
softStop |
For a real device, this would be something like a leak, a failed pump or heater or anything else that makes it impossible to operate the device properly.
Definition at line 231 of file MockDevice.cs.
References MockPlugin.Device.MockDevice.AbortSchedule, MockPlugin.Device.MockDevice.StopRun, and Task.
Referenced by MockPlugin.Tasks.PretendCoffeeMachineIsBroken.Execute().
void MockPlugin.Device.MockDevice.WaitIfPaused | ( | ) |
Definition at line 280 of file MockDevice.cs.
References MockPlugin.Device.MockDevice.CheckForAbort(), and MockPlugin.Device.MockDevice.mPauseEnded.
Referenced by MockPlugin.Device.MockDevice.BrewFrappuccino(), and MockPlugin.Device.MockDevice.ShowTheMessage().
|
static |
Definition at line 54 of file MockDevice.cs.
|
private |
Definition at line 293 of file MockDevice.cs.
Referenced by MockPlugin.Device.MockDevice.CheckForAbort().
|
private |
Definition at line 57 of file MockDevice.cs.
Referenced by MockPlugin.Device.MockDevice.Connect(), and MockPlugin.Device.MockDevice.Disconnect().
|
private |
Using an event here instead of a simple bool helps us avoid polling while checking for the events.
Definition at line 291 of file MockDevice.cs.
Referenced by MockPlugin.Device.MockDevice.WaitIfPaused().
|
private |
Definition at line 329 of file MockDevice.cs.
|
getset |
If set, abort execution as soon as possible. You can throw an OperationCanceledException. Will be set to false after termination of the run.
Implements AxelSemrau.Chronos.Plugin.ICanInterrupt.
Definition at line 295 of file MockDevice.cs.
|
getset |
Connection as set in the Chronos instrument settings.
If this gets a bit more complicated, you can also use a UITypeEditor here.
Implements AxelSemrau.Chronos.Plugin.INeedAConnection.
Definition at line 148 of file MockDevice.cs.
|
get |
Device class specification referred to by some messages.
Implements AxelSemrau.Chronos.Plugin.IDevice.
Definition at line 84 of file MockDevice.cs.
|
get |
Visible to the user on the instruments page of the settings editor.
Implements AxelSemrau.Chronos.Plugin.IDevice.
Definition at line 79 of file MockDevice.cs.
|
getset |
Helper for our toolbox.
Definition at line 172 of file MockDevice.cs.
Referenced by MockPlugin.Device.MockDevice.OnIsConnectedChanged().
|
get |
Provide full paths to each of your log files here.
Implements AxelSemrau.Chronos.Plugin.IProvideDiagnosticLogs.
Definition at line 322 of file MockDevice.cs.
|
getset |
User-selected name for the device instance.
Please return what you are given. Note: Before Chronos 5.1.8, this was set to "Uninitialized Device" for temporary device instances. With later versions, the name should only be set for a "real" instance.
Implements AxelSemrau.Chronos.Plugin.IDevice.
Definition at line 86 of file MockDevice.cs.
Referenced by MockPlugin.Tasks.BrewCoffee.RegisterCoffeeConsumption(), MockPlugin.Tasks.BrewFrappuccino.RegisterConsumption(), and MockPlugin.Misc.StatusViewControl.timer1_Tick().
|
getset |
Definition at line 265 of file MockDevice.cs.
|
getset |
If paused, wait until paused is reset before executing the next command.
Implements AxelSemrau.Chronos.Plugin.ICanInterrupt.
Definition at line 304 of file MockDevice.cs.
|
set |
Hook up immediately or save this for later use.
Implements AxelSemrau.Chronos.Plugin.IScheduleStateAware.
Definition at line 331 of file MockDevice.cs.
|
getset |
Callback function returning a task that completes once the schedule queue was stopped.
Implements AxelSemrau.Chronos.Plugin.IStopRuns.
Definition at line 325 of file MockDevice.cs.
Referenced by MockPlugin.Device.MockDevice.TriggerAbort().
Action<string> MockPlugin.Device.MockDevice.AbortSchedule |
Definition at line 251 of file MockDevice.cs.
Referenced by MockPlugin.Device.MockDevice.TriggerAbort().
Action<ConnectionState> MockPlugin.Device.MockDevice.ConnectionStateChanged |
Definition at line 135 of file MockDevice.cs.
Referenced by MockPlugin.Device.MockDevice.Connect(), and MockPlugin.Device.MockDevice.Disconnect().
Action<string> MockPlugin.Device.MockDevice.DebugOutput |
Definition at line 198 of file MockDevice.cs.
Referenced by MockPlugin.Device.MockDevice.BeginInteraction(), MockPlugin.Device.MockDevice.Dispose(), MockPlugin.Device.MockDevice.EndInteraction(), MockPlugin.Device.MockDevice.ScheduleStateChangedHandler(), MockPlugin.Device.MockDevice.ShowTheMessage(), and MockPlugin.Device.MockDevice.SomeDummyMethod().
EventHandler<InteractiveErrorHandlingEventArgs> MockPlugin.Device.MockDevice.HandleError |
Definition at line 383 of file MockDevice.cs.
Referenced by MockPlugin.Device.MockDevice.RaiseError().
PropertyChangedEventHandler MockPlugin.Device.MockDevice.PropertyChanged |
Definition at line 216 of file MockDevice.cs.
Referenced by MockPlugin.Device.MockDevice.OnIsConnectedChanged().
Action<string> MockPlugin.Device.MockDevice.SetStatusMessage |
Definition at line 192 of file MockDevice.cs.
Referenced by MockPlugin.Device.MockDevice.ApplyParametersAsync(), and MockPlugin.Device.MockDevice.ShowTheMessage().