Chronos Plugins  5.2.0
This documentation covers the plugin interfaces definitions and an example implementation.
AxelSemrau.Chronos.Plugin Namespace Reference

Classes and interfaces that are meant for plugins. The classes and interfaces below this namespace are meant to be upwards compatible across Chronos versions. If you notice any incompatibilities, please let us know. More...

Namespaces

namespace  Columns
 Interfaces for custom sample list column type definitions. These interfaces allow you to define new custom column types definitions which behave just like builtin types and let you define your own column context menus and editors for the sample list.
 
namespace  Config
 Information regarding the currently active configuration. These classes reflect configuration information which is meant to be accessed by plugins. If you miss information here, please let us know, and don't start parsing the Chronos configuration files, as these may change in the future.
 
namespace  Consumables
 
namespace  LegacyDevices
 Access to some functionality of Chronos builtin device drivers. These are added as required. If you are missing something here that would be useful for your plugin, please let us know.
 
namespace  MethodEditor
 Auxiliary functions that can improve the usablility of the method editor for your task types.
 
namespace  SDKSupport
 Functionality supporting CTC's Task SDK plugins. This is not maintained by Axel Semrau, but by CTC directly. We can forward any requests about this if necessary.
 
namespace  WPF
 

Classes

interface  IAcquisitionServiceBase
 Base for acquisition services, parts that are the same regardless of the parameter list. If you want to provide an acquisition service from your plugin, you must implement the generic interface for your specific parameter type. More...
 
interface  IPerseveringAcquisitionService
 Request retrying if IsAvailable returned false. More...
 
interface  IDetailProvidingAcquisitionService
 If there are several instruments or you can provide some version/configuration information for the service, this is the place to do it. More...
 
interface  ISoftHandshakingAcquisitionService
 Implement this interface if you want to support soft handshaking (read: not by cable) for your acquisition service. More...
 
interface  IAcquisitionService
 Implement this interface if you want to provide an acquisition service that is loaded on program start, can provide an optional configuration dialog and be used by the normal Acquisition task in Chronos. More...
 
interface  IJitLinkAware
 Implement this interface on your ParamT if you need to check for the presence of just in time evaluated expressions for the calling AcquisitionTask. More...
 
class  LockInstrumentAttribute
 Decorate a property of your ParamT class with this property if your acquisition service can be used simultaneously on multiple instruments. More...
 
interface  IConfigurableAcquisitionService
 Implement this interface if your acquisition service requires some kind of configuration More...
 
interface  IHaveConfigurator
 The GUI for the configuration is kept seperately from the service More...
 
interface  ISequenceAwareAcquisitionService
 Implement this if your acquisition service has to know when a Chronos sequence starts / ends. More...
 
interface  IEbisEnabledAcquisitionService
 To be implemented by acquisition services that cooperate with the EBIS module for Chronos. More...
 
interface  IStandbySupportingAcquisitionService
 For services that can be put into some kind of standby mode (by an error method, for example) More...
 
interface  ICommandUsingAcquisitionService
 Implement this interface if your acquisition service supports some kind of utility commands that could be run from a method. More...
 
interface  IAcquisitionHostTask
 This interface is implemented by the acquisition task instance that hosts your parameter list. More...
 
interface  IDevice
 To be implemented by the "device driver" part of a Chronos plugin. More...
 
class  DeviceExtensions
 Hopefully useful extensions for IDevice More...
 
class  TrayGeometry
 Basic description of a simple rectangle tray geometry. More...
 
interface  IProvideTrayGeometry
 Allow to ask the sampler for the geometry of a tray. More...
 
interface  INeedAConnection
 For devices that need some kind of user configured connection string to address the hardware. More...
 
interface  IManageConnectionState
 Implement this if your device wants to expose its connection state to other plugins. More...
 
interface  IProvideStatusMessages
 Implement this interface if you want to keep the user up-to-date about what your device is doing. More...
 
interface  IHaveDebugOutput
 Implement this interface if you wish to provide debug log output. More...
 
interface  IAbortSchedules
 Implement this interface if you need to abort schedules on some error condition. More...
 
interface  IMultipartDevice
 Implement this interface if your device consists of multiple parts which can be used in parallel - like the heads/body of a PAL3. In the part, please return BaseDeviceName + ":" + PartName for consistency reasons. More...
 
class  InteractiveErrorHandlingEventArgs
 Everything needed for showing the error dialog / reacting on input. More...
 
interface  IHaveInteractiveErrorHandling
 For devices that allow interactive error handling (like retrying the last action) More...
 
interface  ICanInterrupt
 For devices that support pausing/aborting independent of a task More...
 
interface  IHaveMachineParameters
 Parameters that are constant for the duration of a schedule. More...
 
interface  IDirectDeviceAccess
 Implement this interface if you need direct access to the list of configured devices. More...
 
interface  IPal3Options
 Makes some aspects of the PAL3 behavior configurable More...
 
interface  IPal3Access
 Provides access to some options and configuration information for the PAL3 samplers even out of the schedule execution context. More...
 
interface  IJobAwareDevice
 Implement this if your device needs to know when a specific job of the running scheduler has finished. More...
 
interface  IBarcodeReader
 Implement this interface if your device is a barcode reader that can be used with the ReadBarcode task. More...
 
interface  IPluginDeviceAdapter
 Do not implement this interface. More...
 
interface  IGuiHelper
 Helper functions for GUI related tasks. More...
 
interface  IDebugHelper
 Utility functions for debugging purposes More...
 
class  Helpers
 Static instance for access to utility functions and resources. More...
 
interface  ILicenseChecker
 Information about license validity and type. More...
 
interface  ILicenseInfo
 Details about a Chronos style license. More...
 
interface  IStorageInspector
 Inspect stored data. More...
 
interface  IConfigInfo
 Get information about the currently active configuration. More...
 
interface  IDeviceInfo
 Gives access to information about a device and its connection state, if known. More...
 
interface  IUtilityFactories
 Helper factories for utility classes implemented within Chronos More...
 
interface  IHaveRunlogOutput
 Implement this interface if you have messages for our run log. More...
 
interface  IReactOnCultureChanges
 Allows you to support runtime language switching just like Chronos does. More...
 
class  TraceWriteEventArgs
 For future extension (categories, priorities...) More...
 
interface  ITraceLogger
 Writes some text to the trace log More...
 
class  ScheduleStateEventArgs
 Information about the current state change More...
 
interface  IScheduleEvents
 Currently starting schedule stage More...
 
interface  IScheduleStateAware
 Implement this interface if you need to track the state of schedules. More...
 
class  MethodLaunchEventArgs
 Could be extended in the future if e.g. arguments should be passed to the method running task planer. More...
 
interface  IEmbedMethods
 Implement this interface if you want to run a method from within your task. More...
 
class  DynamicPropertyMasterAttribute
 Set this attribute if changing its value in the method editor will result in a different list of properties for the task/service. More...
 
class  SortPriorityAttribute
 Override the normal sort priority in the method editor. More...
 
class  LicenseCheckerAttribute
 Use this attribute if you want to expose the contents of your plugin assembly only after a license check was successful. More...
 
class  RequiresAdvancedAttribute
 If this attribute is present, the respective class is not available in Chronos XT. More...
 
interface  IProvideDiagnosticLogs
 This can be called for a sample list worker or device that writes its own set of log files which should be available with the "gather diagnostics" option. More...
 
interface  IStopRuns
 Implement this interface with your device or sample list worker to get fine-grained control about stopping a currently running schedule or the complete queue. More...
 
interface  IPluginAdapter
 Generic way to access a plugin object that was wrapped by Chronos More...
 
class  StopRunArgs
 Options for stopping the schedule/queue. More...
 
interface  IColumnInfo
 Information about a column defined in a method. More...
 
interface  IPAL3Services
 An object implementing this interface is provided by Chronos and passed to the PAL3task just before execution. More...
 
interface  IWorkWithSampleLists
 For plugins that want to manipulate or run sample lists. More...
 
interface  INeedToRunSampleLists
 For automatic generation of sample lists and running the resulting schedules. More...
 
class  RunSampleListEventArgs
 Parameters for sample list loading and schedule creation More...
 
interface  INeedCellAccess
 Implement this interface in your sample list worker class if you need access to the content of cells. More...
 
interface  IAccessSampleLists
 From Chronos 5.2 on, there can be multiple sample lists at once. More...
 
interface  ISampleListAccessor
 Provides basic sample list information and lets you iterate over all lines. More...
 
interface  ISampleListManager
 Access to all sample lists, adding of new sample lists More...
 
interface  ISampleListLine
 Gives access to all cells of a line. More...
 
interface  ICellAccessor
 Gives access to a cell's value. More...
 
interface  IStatusView
 To be implemented by the Status view part of a Chronos plugin. More...
 
interface  ITask
 To be implemented by the "task" part of a Chronos plugin. Public properties of the implementing type are visible in Chronos' method editor. More...
 
interface  IPluginTaskAdapter
 Do not implement this interface. More...
 
interface  IDemoAwareTask
 For tasks that try to do some special actions during schedule demo execution. More...
 
class  DefaultUnitAttribute
 Use this on your task property if you want the method editor to show a default unit. More...
 
class  SuppressPathPrefixAttribute
 Please don't use this unless you are sure you know what you are doing! Set this attribute on your task if you have to avoid "Plugin." prefix in property paths. More...
 
interface  IAbortableTask
 Implement this interface if your task does some long lasting operation which should be interruptible. More...
 
interface  ITaskForDevice
 To be implemented if the task needs to access a device ("Autosampler" property in Chronos) More...
 
class  DevicesLimitedAttribute
 Add this attribute to your ITaskForDevice.SetDevice method or your IDevice property if you are using more than one device to limit the range of autosamplers that is offered in the method editor. More...
 
interface  IAccessProperty
 Gives full access to other tasks's properties. More...
 
interface  ITaskInfo
 Gives access to a task's implementation and to all user visible properties. More...
 
interface  IInspectJob
 Allows to get information about other tasks within our task's job and about other jobs. More...
 
interface  IMethodInfo
 Information about the method that was used to create this job More...
 
interface  IResourceManager
 The resource manager is your interface to the scheduler regarding occupied or locked objects. More...
 
interface  IUseResources
 Implement this interface if you need to communicate with the scheduler about locked/occupied objects. More...
 
interface  INeedToInspectOtherTasks
 Implement this interface if you have to access other tasks within the schedule. More...
 
interface  INeedToCheckForJITLinks
 Implement this interface if you have to know (usually for validation) if a certain property of a given task will be filled in later by a {jit:} scripting expression More...
 
interface  IGiveARuntimeHint
 If you can calculate your runtime, you should implement this interface. More...
 
interface  IWantEditorUpdates
 Implement this interface in your task if you want the method editor to notify it of changed properties. More...
 
class  InvisibleByDefaultAttribute
 Use this attribute to mark a property as only visible to users who explicitly look for invisible properties. More...
 
class  ScheduleDiagramColorAttribute
 Override the default color that is used to display the task in the schedule diagram. More...
 
class  TaskCategoryAttribute
 The Task Category Method Attribute More...
 
class  CustomTaskCategoryAttribute
 Use this if none of the predefined categories fit and you have a better idea than "Misc". More...
 
class  LinkPropertyAttribute
 Attribute to link the decorated Property with the specifyed Task and TaskProperty More...
 
class  StandardValueProviderAttribute
 If your standard value list cannot be provided without knowing the actual task's details, you can derive from this attribute class. More...
 
interface  IToolbox
 To be implemented by the Toolbox part of a Chronos plugin. More...
 
interface  IUsableDuringRun
 Implement this if you want your toolbox to be visible during a sequence run. More...
 

Enumerations

enum class  ResultKind {
  Name , Amount , Area , Height ,
  RTExpected , RTObserved
}
 The kind of result expected from the ExecuteDataReader call to an EBIS enabled acquisition service. More...
 
enum class  ConnectionState {
  Disconnected , Connecting , Connected , Disconnecting ,
  Failed
}
 If your connectivity state changes, you should tell the user about it. More...
 
enum class  ErrorType { Other , BarcodeNotRead , MissingVial }
 Lets a device implementing IHaveInteractiveErrorHandling specify which kind of error occurred. More...
 
enum class  ScheduleState { Validated , Starting , Ended , SamplersStopped }
 Which stage? More...
 
enum class  TaskCategory {
  SamplePrep = 1 , Cleaning = 2 , Injection = 3 , IO = 4 ,
  CDS = 5 , FlowControl = 6 , SPME = 7 , Misc = 8 ,
  PAL3SDK = 9 , LCMS = 10 , ITSP = 11 , ITEX = 12
}
 The enumeration of Task Categories More...
 

Functions

delegate Exception RunSampleListHandler (object sender, RunSampleListEventArgs args)
 Runs the given sample list. More...
 
delegate object dExpressionResolver (string text, int rowNo)
 
delegate bool JITCheckerDelegate (object task, string propertyPath)
 The delegate that does the check for you. More...
 

Detailed Description

Classes and interfaces that are meant for plugins. The classes and interfaces below this namespace are meant to be upwards compatible across Chronos versions. If you notice any incompatibilities, please let us know.

Enumeration Type Documentation

◆ ConnectionState

If your connectivity state changes, you should tell the user about it.

Enumerator
Disconnected 

The device is not connected.

Connecting 

We are just trying to establish a connection.

Connected 

The connection has been established.

Disconnecting 

We are trying to disconnect from the device.

Failed 

There was an error while trying to connect, the device is not usable.

Definition at line 15 of file DeviceInterfaces.cs.

16  {
21 
25  Connecting,
26 
30  Connected,
31 
36 
40  Failed
41  }
@ Disconnecting
We are trying to disconnect from the device.
@ Connected
The connection has been established.
@ Failed
There was an error while trying to connect, the device is not usable.
@ Connecting
We are just trying to establish a connection.
@ Disconnected
The device is not connected.

◆ ErrorType

Lets a device implementing IHaveInteractiveErrorHandling specify which kind of error occurred.

The user can configure which kinds of errors could/should be handled in which way. For example, abort on missing barcode, skip sample on missing vial and ask for other errors.

Enumerator
Other 

Any kind of error that does not fit into the predefined categories.

BarcodeNotRead 

Device was unable to read a barcode.

MissingVial 

A card/vial/whatever is containing the sample was not found in the expected place.

Definition at line 298 of file DeviceInterfaces.cs.

299  {
303  Other,
312  }
@ BarcodeNotRead
Device was unable to read a barcode.
@ Other
Any kind of error that does not fit into the predefined categories.
@ MissingVial
A card/vial/whatever is containing the sample was not found in the expected place.

◆ ResultKind

The kind of result expected from the ExecuteDataReader call to an EBIS enabled acquisition service.

Enumerator
Name 
Amount 
Area 
Height 
RTExpected 
RTObserved 

Definition at line 193 of file AcquisitionInterfaces.cs.

◆ ScheduleState

Which stage?

Enumerator
Validated 

Validation was completed

Starting 

Before the first task is executed

Ended 

After the last task finished or an error occurred, but before autosamplers are disconnected

SamplersStopped 

After all autosamplers have been stopped.

Definition at line 80 of file MiscInterfaces.cs.

81  {
85  Validated,
89  Starting,
90 
94  Ended,
99  }
@ Ended
After the last task finished or an error occurred, but before autosamplers are disconnected
@ Validated
Validation was completed
@ Starting
Before the first task is executed
@ SamplersStopped
After all autosamplers have been stopped.

◆ TaskCategory

The enumeration of Task Categories

Enumerator
SamplePrep 

The sample prep Category

Cleaning 

The cleaning Category

Injection 

The injection Category

IO 

The Input Output Category

CDS 

The CDS Category

FlowControl 

The flow control Category

SPME 

The SPME Category

Misc 

The miscellaneous Category

PAL3SDK 

The PAL3 SDK Category

LCMS 

The LCMS Category

ITSP 

The ITSP Category

ITEX 

The ITEX Category

Definition at line 626 of file TaskInterfaces.cs.

627  {
631  SamplePrep = 1,
635  Cleaning = 2,
639  Injection = 3,
643  IO = 4,
647  CDS = 5,
651  FlowControl = 6,
655  SPME = 7,
659  Misc = 8,
663  PAL3SDK = 9,
667  LCMS = 10,
671  ITSP = 11,
675  ITEX = 12
676  }
@ FlowControl
The flow control Category
@ Injection
The injection Category
@ Misc
The miscellaneous Category
@ IO
The Input Output Category
@ SamplePrep
The sample prep Category

Function Documentation

◆ dExpressionResolver()

delegate object AxelSemrau.Chronos.Plugin.dExpressionResolver ( string  text,
int  rowNo 
)

◆ JITCheckerDelegate()

delegate bool AxelSemrau.Chronos.Plugin.JITCheckerDelegate ( object  task,
string  propertyPath 
)

The delegate that does the check for you.

Parameters
taskEither an ITask or the object from ITaskInfo.Task
propertyPathFull path to the property in question. Inside a plugin you will probably need to call this delegate using "Plugin.FancyStuff" for a FancyStuff property. isFancyStuffJitted = mJITChecker(this, "Plugin.FancyStuff");
Returns
True if the property is set by a JIT link

◆ RunSampleListHandler()

delegate Exception AxelSemrau.Chronos.Plugin.RunSampleListHandler ( object  sender,
RunSampleListEventArgs  args 
)

Runs the given sample list.

Parameters
sender
args
Returns
If running the list failed, you'll get the exception here, else null.