Chronos Plugins 5.9.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 (IGuiHelper guiHelper) | |
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. | |
Public Member Functions inherited from AxelSemrau.Chronos.Plugin.IDevice | |
Public Member Functions inherited from AxelSemrau.Chronos.Plugin.IHaveMachineParameters< CoffeMakerParams > | |
Task | ApplyParametersAsync (bool waitUntilSetpointIsReached, CancellationToken cancelToken) |
Set the given parameters on the device. | |
Public Member Functions inherited from AxelSemrau.Chronos.Plugin.IHaveInteractiveErrorHandling |
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 | |
Properties inherited from AxelSemrau.Chronos.Plugin.INeedAConnection | |
Properties inherited from AxelSemrau.Chronos.Plugin.ICanInterrupt | |
Properties inherited from AxelSemrau.Chronos.Plugin.IHaveMachineParameters< CoffeMakerParams > | |
ParamType | Parameters [get, set] |
Your parameter set. | |
Properties inherited from AxelSemrau.Chronos.Plugin.IProvideDiagnosticLogs | |
Properties inherited from AxelSemrau.Chronos.Plugin.IStopRuns | |
Properties inherited from AxelSemrau.Chronos.Plugin.IScheduleStateAware |
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 |
readonly IGuiHelper | mGuiHelper |
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 | ( | IGuiHelper | guiHelper | ) |
Definition at line 63 of file MockDevice.cs.
References MockPlugin.Device.MockDevice.mGuiHelper.
Task MockPlugin.Device.MockDevice.ApplyParametersAsync | ( | bool | waitUntilSetpointIsReached, |
CancellationToken | canToken ) |
Definition at line 268 of file MockDevice.cs.
References MockPlugin.Device.MockDevice.SetStatusMessage.
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 356 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 97 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 254 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 115 of file MockDevice.cs.
References MockPlugin.Device.MockDevice.ConnectionStateChanged, AxelSemrau.Chronos.Plugin.IGuiHelper.MainWindow, MockPlugin.Device.MockDevice.mGuiHelper, 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 127 of file MockDevice.cs.
References MockPlugin.Device.MockDevice.ConnectionStateChanged, AxelSemrau.Chronos.Plugin.IGuiHelper.MainWindow, MockPlugin.Device.MockDevice.mGuiHelper, MockPlugin.Device.MockDevice.mIsConnected, and MockPlugin.Device.MockDevice.OnIsConnectedChanged().
void MockPlugin.Device.MockDevice.Dispose | ( | ) |
Definition at line 71 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 361 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 208 of file MockDevice.cs.
References AxelSemrau.Chronos.Plugin.IGuiHelper.GuiTaskFactory, MockPlugin.Device.MockDevice.IsConnected, MockPlugin.Device.MockDevice.mGuiHelper, 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 372 of file MockDevice.cs.
References MockPlugin.Device.MockDevice.HandleError.
Referenced by MockPlugin.Tasks.CoffeeMachineDoesNotWorkProperly.Execute().
|
private |
Definition at line 350 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 159 of file MockDevice.cs.
References MockPlugin.Device.MockDevice.DebugOutput, AxelSemrau.Chronos.Plugin.IGuiHelper.MainWindow, MockPlugin.Device.MockDevice.mGuiHelper, 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 107 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 232 of file MockDevice.cs.
References MockPlugin.Device.MockDevice.AbortSchedule, and MockPlugin.Device.MockDevice.StopRun.
Referenced by MockPlugin.Tasks.PretendCoffeeMachineIsBroken.Execute().
void MockPlugin.Device.MockDevice.WaitIfPaused | ( | ) |
Definition at line 281 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 294 of file MockDevice.cs.
Referenced by MockPlugin.Device.MockDevice.CheckForAbort().
|
private |
|
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 292 of file MockDevice.cs.
Referenced by MockPlugin.Device.MockDevice.WaitIfPaused().
|
private |
Definition at line 330 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 296 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 149 of file MockDevice.cs.
|
get |
Device class specification referred to by some messages.
Implements AxelSemrau.Chronos.Plugin.IDevice.
Definition at line 85 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 80 of file MockDevice.cs.
|
getset |
Helper for our toolbox.
Definition at line 173 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 323 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 87 of file MockDevice.cs.
Referenced by MockPlugin.Tasks.BrewCoffee.RegisterCoffeeConsumption(), MockPlugin.Tasks.BrewFrappuccino.RegisterConsumption(), and MockPlugin.Misc.StatusViewControl.timer1_Tick().
|
getset |
Definition at line 266 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 305 of file MockDevice.cs.
|
set |
Hook up immediately or save this for later use.
Implements AxelSemrau.Chronos.Plugin.IScheduleStateAware.
Definition at line 333 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 326 of file MockDevice.cs.
Referenced by MockPlugin.Device.MockDevice.TriggerAbort().
Action<string> MockPlugin.Device.MockDevice.AbortSchedule |
Definition at line 252 of file MockDevice.cs.
Referenced by MockPlugin.Device.MockDevice.TriggerAbort().
Action<ConnectionState> MockPlugin.Device.MockDevice.ConnectionStateChanged |
Definition at line 136 of file MockDevice.cs.
Referenced by MockPlugin.Device.MockDevice.Connect(), and MockPlugin.Device.MockDevice.Disconnect().
Action<string> MockPlugin.Device.MockDevice.DebugOutput |
Definition at line 199 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 385 of file MockDevice.cs.
Referenced by MockPlugin.Device.MockDevice.RaiseError().
PropertyChangedEventHandler MockPlugin.Device.MockDevice.PropertyChanged |
Definition at line 217 of file MockDevice.cs.
Referenced by MockPlugin.Device.MockDevice.OnIsConnectedChanged().
Action<string> MockPlugin.Device.MockDevice.SetStatusMessage |
Definition at line 193 of file MockDevice.cs.
Referenced by MockPlugin.Device.MockDevice.ApplyParametersAsync(), and MockPlugin.Device.MockDevice.ShowTheMessage().