From version 4 on, Chronos supports a plugin model. A Chronos plugin is a .Net Framework 4 assembly containing classes which implement interfaces mentioned in this documentation. At the current state of implementation, you can use this plugin model to write:
- A custom device driver module for communication with an external device that is not supported by Chronos out of the box.
- A toolbox control for maintenance operations with such a driver module.
- Tasks that work with or without your driver module and are integrated into the Chronos method editor and scheduler just like builtin tasks.
- Tasks that inspect properties of other tasks within the same job.
- Modules that can manipulate and trigger the execution of sample lists.
- Acquisition services for supporting additional Chromatography Data Systems.
- Custom column type definitions that allow you to define your own data types, editors and context menus for the sample list. This way you can give the user comfortable inputs for picking positions from your racks or methods from a database within your acquisition software.
- Consumable tracking modules, which allow you to keep track of used consumables during schedule creation and execution, and implement constraints or inform the user about consumables levels.
This documentation explains the interface definitions found in the AxelSemrau.Chronos.Plugin namespace and demonstrates the implementation techniques by showing the implementation of the accessible functionality for a mock device. Additionally, it provides a very basic example how to communicate between an external program and your plugin, as the multitude of options of communication frameworks and possible transport protocols can be quite confusing. The device using task also gives a basic idea about how to make your tasks localization aware.
In order to refer to the plugin interface types, add Chronos.exe to your project's references. The source code for our example mock plugin can be checked out from GitHub. If you want to build this plugin, please:
- Add Chronos.exe to the references and make sure you that "local copy" is set to false. In case you use PackageReference format for your project, make sure that no copy of Chronos.exe is in the plugin's folder at runtime, for example by using a post build event to delete it.
- Set the build output folder to the "plugins" subdirectory of the folder containing Chronos.exe.
- Make sure you have write permissions for this folder.
- In the debugging options, use "run external program" and enter the path to Chronos.exe there.
- Add a reference to PalPlusDriverBase.dll from the 3rdParty folder to your project. Set "local copy" to false.