This section covers the Update method. Updates are divided in the following categories. See
“Update element” for a more complete list that includes descriptions.
The plugin calls the Update method to send information to
VWorks software, to tell
VWorks software to perform certain actions, or both. Using this method enables the plugin to perform tasks that cannot be done by means of existing
VWorks software COM interface methods.
The Update XML block contains the Update element and all its children. This XML block returns information to
VWorks software, tells
VWorks software to perform certain actions, or both.
The Update element specifies the type of update. This element has the following attribute:
|
|
|
Tells VWorks software that an asynchronous task is completed.
Tells VWorks software that an asynchronous task is started.
Tells VWorks software to update the barcode value on the specified side of the labware at the specified location.
Tells VWorks software than an error occurred while executing an asynchronous task.
Returns the results of the labware inventory, which was requested by VWorks software with a call to the IStorageDriver QueryStorageLocations method. See “QueryStorageLocations method” .
Tells VWorks software that a liquid transfer is completed.
Tells VWorks software how many mismatches occurred during a rack check.
Tells VWorks software to execute an arbitrary JavaScript script.
|
|
Tells VWorks software to schedule the specified protocol in the Runset Manager.
Tells VWorks software to output the specified value on the specified digital output channel.
Returns the volume change of one or more wells in the labware at the specified location to VWorks software.
|
The Update element’s children are defined in the “update” sections for each
Category value.
The AsyncTaskFinished update tells VWorks software that the specified asynchronous task is finished.
VWorks software can then remove the task from its asynchronous task management list.
<Update Category='AsyncTaskFinished'>
<Parameter Name='Async_TaskVWorksID' ... />
|
The Parameters element contains one
Parameter element.
The Parameter element has the following attributes plus the
Scriptable,
Style, and
Type attributes:
The following sample code is an AsyncTaskFinished update that tells VWorks software that the asynchronous task with
VWorks software task ID
26.18.1 is completed.
<Update Category='AsyncTaskFinished' >
<Parameter Name='Async_TaskVWorksID' Scriptable='1' Style='0' Type='1'
|
The AsyncTaskStarted update tells VWorks software that the specified asynchronous task is started.
VWorks software can then add the task to its asynchronous task management list and begin to manage the task.
<Update Category='AsyncTaskStarted'>
<Parameter Name='Async_TaskVWorksID' ... />
|
The Parameters element contains one
Parameter element.
The Parameter element has the following attributes plus the
Scriptable,
Style, and
Type attributes:
The following sample code is an AsyncTaskStarted update that tells VWorks software that the asynchronous task with
VWorks software task ID
26.18.1 is started.
<Update Category='AsyncTaskStarted' >
<Parameter Name='Async_TaskVWorksID' Scriptable='1' Style='0' Type='1'
|
The Barcode update tells VWorks software to update the barcode on the specified side of the labware at the specified location as follows:
<Update Category='Barcode'>
<Parameter Name='Location' ... />
<Parameter Name='Side' ... />
<Parameter Name='Barcode' ... />
|
The Parameters element contains three
Parameter elements.
Each Parameter element has one of the following pairs of
Name and
Value attributes plus the
Scriptable,
Style, and
Type attributes:
The following sample code is a Barcode update that tells VWorks software to update the south-side barcode associated with the labware at the location name
Stage 1.
<Update Category='Barcode' >
<Parameter Name='Location' Scriptable='1' Style='0' Type='1'
<Parameter Name='Side' Scriptable='1' Style='0' Type='1' Value='0' />
<Parameter Name='Barcode' Scriptable='1' Style='0' Type='1'
|
The ErrorAbortRetryIgnoreNonBlocking update tells VWorks software that an error occurred while executing an asynchronous task. The command metadata included in the update identifies the asynchronous task that returned the error. VWorks software responds to this update by displaying the error message to the user. The complete sequence of events is as follows:
•
|
The Abort, Ignore and Continue…, Retry, and Diagnostics buttons
|
The figure on page 41 shows a standard error dialog box.
The VWorks software error loop can only be terminated with a call to the IWorksAsyncDriver
Abort method or [when
VWorks software receives a return code other than
RETURN_FAIL.]
<Update Category='ErrorAbortRetryIgnoreNonBlocking' >
<Parameter Name='Async_CommandMetaData' ... />
|
The Parameters element contains one
Parameter element.
The Parameter element has the following attributes plus the
Scriptable,
Style, and
Type attributes:
The Command XML block contains the Command element and all its children. This XML block provides the command metadata for an asynchronous Shake task during which the error that requires handling occurred.
The value of the file attribute for the
Velocity11 element is
MetaData. See
“Velocity11 element” .
The Command element has three children:
Parameters,
Locations, and
AsyncParameters. The
Command element has the following attributes:
The Parameters element contains one or more
Parameter elements.
The Parameter element contains one
Ranges element and has the following attributes plus the
Scriptable,
Style, and
Type attributes:
The Ranges element contains one or more
Range elements.
The Range element has the following attribute:
The Locations element contains one of more
Value elements.
Each Value element contains the name of a location that is used by the task. This element has the following attribute:
The AsyncParameters element contains five
AsyncParameter elements.
Each AsyncParameter element has one of the following pairs of
Name and
Value attributes plus the
Style and
Type attributes:
The following sample code shows an ErrorAbortRetryIgnoreNonBlocking update that contains a truncated escaped Update Command XML block. This update tells
VWorks software to trigger task error handling because an error occurred during the asynchronous task named
Shake, which has
VWorks software task ID
25.4.1.
<Update Category='ErrorAbortRetryIgnoreNonBlocking' >
<Parameter Name='Async_CommandMetaData' Scriptable='1' Style='0' Type='1' →Value='<?xml version='1.0' encoding='ASCII' ?>
→<Velocity11 file='MetaData'
→md5sum='f1805177f41cea7b08356c675b25714d' version='1.0' >
→<Command Compiler='0' Description='Shake plate'
→Editor='4' Name='Shake' NextTaskToExecute='1'
→ProtocolName='Protocol File - 1' RequiresRefresh='0'
→TaskRequiresLocation='1' VisibleAvailability='1' >
→<Parameters > <Parameter Name='Location'
→Scriptable='1' Style='0' Type='5' Value='6'
→> <Ranges > <Range Value='process - 1' /> </Ranges>
→</Parameter> <Parameter Description='Mode to operate in'
→Name='Mode' Scriptable='1' Style='0'
→Type='2' Value='Timed' > <Ranges > <Range
→Value='On' /> <Range Value='Off' /> <Range
→Value='Timed' /> </Ranges>
→<Parameter Name='Next task command name' Scriptable='1'
→Style='0' Type='1' /> </Parameters> <Locations >
→<Value Value='6' /> </Locations> <AsyncParameters >
→<AsyncParameter Name='Async_TaskVWorksID' Style='0'
→Type='1' Value='25.4.1' /> <AsyncParameter
→Name='Async_ErrorDescription' Style='0' Type='1'
→Value='Location 6 Orbital Shaking Station error: Could not set RPM. Make sure
→the device is properly connected and initialized.' /> <AsyncParameter
→Name='Async_TaskID' Style='0' Type='1'
→Value='1' /> <AsyncParameter Name='Async_TaskVWorksID'
→Style='0' Type='1' Value='25.4.1' />
→<AsyncParameter Name='Async_Location' Style='0'
→Type='1' Value='6' /> </AsyncParameters>
→</Command> </Velocity11>' />
|
<Command Compiler='0' Description='Shake plate' Editor='4' Name='Shake'
→NextTaskToExecute='1' ProtocolName='Protocol File - 1' RequiresRefresh='0'
→TaskRequiresLocation='1' VisibleAvailability='1' >
<Parameter Name='Location' Scriptable='1' Style='0' Type='5' Value='6' >
<Range Value='process - 1' />
<Parameter Description='Mode to operate in' Name='Mode' Scriptable='1'
→Style='0' Type='2' Value='Timed' >
<Parameter Name='Next task command name' Scriptable='1' Style='0'
<AsyncParameter Name='Async_TaskVWorksID' Style='0' Type='1'
<AsyncParameter Name='Async_ErrorDescription' Style='0' Type='1'
→Value='Location 6 Orbital Shaking Station error: Could not set RPM.
→Make sure the device is properly connected and initialized.' />
<AsyncParameter Name='Async_TaskID' Style='0' Type='1' Value='1' />
<AsyncParameter Name='Async_TaskVWorksID' Style='0' Type='1'
<AsyncParameter Name='Async_Location' Style='0' Type='1' Value='6' />
|
VWorks software calls the IStorageDriver
QueryStorageLocations method to tell the plugin to perform a labware inventory. The plugin returns the results of the inventory in the InventoryPlateBarcodes update. See
“QueryStorageLocations method” .
<Update Category='InventoryPlateBarcodes'>
|
Each Barcode element contains information about one slot in the range of labware that was inventoried. This element has the following attributes:
|
|
|
0 = No barcode read error occurred
1 = A barcode read error occurred
If a read error occurred, VWorks software might report the error. Then the user must decide what to do, for example, check the labware in the slot that reported the error.
|
|
|
|
0 = No labware is present
|
|
|
|
|
The following sample code is an InventoryPlateBarcodes update that returns the results of an IStorageDriver
QueryStorageLocations method call for three labware.
<Update Category='InventoryPlateBarcodes' >
<Barcode BarcodeError='0' Cassette='1' PlatePresent='1' Slot='1'
<Barcode BarcodeError='0' Cassette='1' PlatePresent='1' Slot='2'
<Barcode BarcodeError='0' Cassette='1' PlatePresent='1' Slot='3'
|
If the device is unable to perform a labware inventory, the plugin sends an empty InventoryPlateBarcodes Update XML block to
VWorks software, as shown in the following sample code. Then
VWorks software generates an error and writes an error message to the Main Log, such as
Failed to update new barcode information: barcode0001.
The LiquidTransferComplete update tells VWorks software that the liquid transfer is completed. The plugin might use this update, for example, to provide the new volumes after a Standard Transfer task is completed.
<Update Category='LiquidTransferComplete'>
<Parameter Name='LiquidTransferComplete' ... />
|
The Parameters element contains one
Parameter element.
The Parameter element has the following attributes plus the
Scriptable,
Style, and
Type attributes:
The LiquidTransferCompleteUpdate XML block contains the LiquidTransferCompleteUpdate element and all its children. This XML block provides information about the completed liquid transfer.
<LiquidTransferCompleteUpdate>
</LiquidTransferCompleteUpdate>
|
The LiquidTransferCompleteUpdate element contains one
PipetteHeadMode element and has the following attributes:
The following sample code is a LiquidTransferComplete update that tells VWorks software that the liquid transfer from the source location named
Source Stage to the destination location named
Destination Stage is completed.
<Update Category='LiquidTransferComplete'>
<Parameter Name='LiquidTransferComplete' Scriptable='1' Style='0' Type='1'
→Value='<?xml version='1.0' encoding='ASCII' ?>
→<Velocity11 file='MetaData'
→md5sum='0fd609ab6ccef7e255a2916357326df9' version='1.0' >
→<LiquidTransferCompleteUpdate DestLocation='Destination Stage'
→SourceLocation='Source Stage' > <PipetteHeadMode
→Channels='0' ColumnCount='12' RowCount='8'
→SubsetConfig='0' SubsetType='0' />
→</LiquidTransferCompleteUpdate> </ Velocity11>' />
|
<LiquidTransferCompleteUpdate DestLocation='Destination Stage'
→SourceLocation='Source Stage' >
<PipetteHeadMode Channels='0' ColumnCount='12' RowCount='8' SubsetConfig='0'
</LiquidTransferCompleteUpdate>
|
During a rack check, the plugin reads the barcodes and checks the positions of the tubes in a tube rack. Then the plugin compares the results of the rack check to the values in the barcode input file. If a barcode, a position, or both are not the expected value, a mismatch occurred.
The plugin calls the RackInfo update to tell VWorks software how many mismatches occurred during the rack check.
VWorks software can store the number of mismatches in the JavaScript variable specified in the RackInfo update and use this variable in subsequent tasks.
<Update Category='RackInfo'>
<Parameter Name='RackInfoType' ... />
<Parameter Name='Location' ... />
<Parameter Name='CheckRackResult' ... />
<Parameter Name='MismatchesVariable' ... />
<Parameter Name='Mismatches' ... />
<Parameter Name='ProtocolName' ... />
|
The Parameters element contains five
Parameter elements.
Each Parameter element has one of the following pairs of
Name and
Value attributes plus the
Scriptable,
Style, and
Type attributes:
The following sample code is a RackInfo update that tells VWorks software that
26 mismatches occurred during a rack check at the location named
Stage 1.
<Update Category='RackInfo' >
<Parameter Name='RackInfoType' Scriptable='1' Style='0' Type='1'
<Parameter Name='Location' Scriptable='1' Style='0' Type='1'
<Parameter Name='CheckRackResult' Scriptable='1' Style='0' Type='0'
<Parameter Name='MismatchesVariable' Scriptable='1' Style='0' Type='1'
<Parameter Name='Mismatches' Scriptable='1' Style='0' Type='8' Value='26' />
<Parameter Name='ProtocolName' Scriptable='1' Style='0' Type='1'
→Value='Protocol File - 1' />
|
The RunScript update tells VWorks software to execute an arbitrary JavaScript script, for example, to set the value of variable
x to
1 (
x=1). The plugin might use this update, for example, to control task execution indirectly by telling
VWorks software to run a script that changes a variable value.
<Update Category='RunScript'>
<Parameter Name='Script' ... />
<Parameter Name='ProtocolName' ... />
|
The Parameters element contains two
Parameter elements.
Each Parameter element has one of the following pairs of
Name and
Value attributes plus the
Scriptable,
Style, and
Type attributes:
The following code is a RunScript update that tells VWorks software to run the following JavaScript script:
print("This is a testing for run script");a=1.
<Update Category='RunScript' >
<Parameter Name='Script' Scriptable='1' Style='0' Type='1'
→Value='print("This is a testing for run script");a=1' />
<Parameter Name='ProtocolName' Scriptable='1' Style='0' Type='1'
→Value='Protocol File - 1' />
|
The RunsetAdd update tells VWorks software to schedule a protocol run in the Runset Manager.
<Update Category='RunsetAdd'>
<Parameter Name='ProtocolName' ... />
<Parameter Name='StartTime_year' ... />
<Parameter Name='StartTime_month' ... />
<Parameter Name='StartTime_day' ... />
<Parameter Name='StartTime_hour' ... />
<Parameter Name='StartTime_minute' ... />
<Parameter Name='StartTime_second' ... />
<Parameter Name='NumberOfRuns' ... />
<Parameter Name='PluginName' ... />
<Parameter Name='PluginFileName' ... />
<Parameter Name='ProtocolNotes' ... />
|
The Parameters element contains 11
Parameter elements.
Each Parameter element has one of the following pairs of
Name and
Value attributes plus the
Scriptable,
Style, and
Type attributes:
The following sample code is a RunsetAdd update that tells VWorks software to add the protocol named
Protocol File ‑ 1 to the Runset Manager and to run the protocol 10 times on April 15, 2010 (2010-04-15), at 8:29:11 p.m. (20:29:11).
<Update Category='RunsetAdd' >
<Parameter Name='ProtocolName' Scriptable='1' Style='0' Type='1'
→Value='Protocol File - 1' />
<Parameter Name='StartTime_year' Scriptable='1' Style='0' Type='8'
<Parameter Name='StartTime_month' Scriptable='1' Style='0' Type='8'
<Parameter Name='StartTime_day' Scriptable='1' Style='0' Type='8'
<Parameter Name='StartTime_hour' Scriptable='1' Style='0' Type='8'
<Parameter Name='StartTime_minute' Scriptable='1' Style='0' Type='8'
<Parameter Name='StartTime_second' Scriptable='1' Style='0' Type='8'
<Parameter Name='NumberOfRuns' Scriptable='1' Style='0' Type='1'
<Parameter Name='PluginName' Scriptable='1' Style='0' Type='1'
<Parameter Name='PluginFileName' Scriptable='1' Style='0' Type='1'
→Value='PluginFileName' />
<Parameter Name='ProtocolNotes' Scriptable='1' Style='0' Type='1'
→Value='ProtocolNotes' />
|
The SetIOManagerPointDigitalOutput update tells VWorks software to output the specified value on the specified digital output channel. The plugin might use this update, for example, to configure a component or subcomponent that is controlled by a digital output signal, such as when the Vacuum Delid Station turns lid suction on or off.
<Update Category='SetIOManagerPointDigitalOutput'>
<Parameter Name='PointName' ... />
<Parameter Name='NewValue' ... />
|
The Parameters element contains two
Parameter elements.
Each Parameter element has one of the following pairs of
Name and
Value attributes plus the
Scriptable,
Style, and
Type attributes:
The following sample code is a SetIOManagerPointDigitalOutput update that tells
VWorks software to set the value of the digital output signal named
Vacuum Delid Suction to the value
1.
<Update Category='SetIOManagerPointDigitalOutput' >
<Parameter Name='PointName' Scriptable='1' Style='0' Type='1'
→Value='Vacuum Delid Suction' />
<Parameter Name='NewValue' Scriptable='1' Style='0' Type='0' Value='1' />
|
The Volume update provides the volume change for one or more specified wells in the labware at the specified location. The plugin might use this update, for example, to tell
VWorks software to update the well volumes in the database after a liquid-handling task is completed.
<Update Category='Volume'>
<Parameter Name='VolumeChange' ... />
|
The Parameters element contains one
Parameter element.
The Parameter element has the following attributes plus the
Scriptable,
Style, and
Type attributes:
The VolumeUpdates XML block contains the VolumeUpdates element and all its children. This XML block provides the volume change for all the wells in the labware at the specified location.
The parent VolumeUpdates element contains one
VolumeUpdates child element and has the following attributes:
|
|
|
|
|
0 = Set the volume change to the current volume plus the volume change specified in the VolumeUpdate element
1 = Set the volume change to the volume specified in the VolumeUpdate element
|
The VolumeUpdates child element contains one or more
VolumeUpdate elements.
The VolumeUpdate element contains the coordinates of the well and the volume change. This element has the following attributes:
The following sample code is a Volume update that returns an escaped VolumeUpdates XML block. This XML block provides the volume change of 10 wells in the labware at the location named
Stage 1. The update also tells
VWorks software to set the volume change to the current volume plus the volume change specified in the
VolumeUpdate element.
<Update Category='Volume'>
<Parameter Name='VolumeChange' Scriptable='1' Style='0' Type='1'
→Value='<?xml version='1.0' encoding='ASCII' ?>
→<Velocity11 file='MetaData'
→md5sum='2d50df57d9d719c31dabc56f0a8402ef' version='1.0' >
→<VolumeUpdates Location='Stage 1' OptionalDevice='Optional
→Device' ResetAbsolute='0' > <VolumeUpdates >
→<VolumeUpdate Col='0' Row='0'
→VolumeChange='0.0001' /> <VolumeUpdate Col='1'
→Row='0' VolumeChange='0.0001' /> <VolumeUpdate
→Col='2' Row='0' VolumeChange='0.0001' />
→<VolumeUpdate Col='3' Row='0'
→VolumeChange='0.0001' /> <VolumeUpdate Col='4'
→Row='0' VolumeChange='0.0001' /> <VolumeUpdate
→Col='5' Row='0' VolumeChange='0.0001' />
→<VolumeUpdate Col='6' Row='0'
→VolumeChange='0.0001' /> <VolumeUpdate Col='7'
→Row='0' VolumeChange='0.0001' /> <VolumeUpdate
→Col='8' Row='0' VolumeChange='0.0001' />
→<VolumeUpdate Col='9' Row='0'
→VolumeChange='0.0001' /> </VolumeUpdates> </
→VolumeUpdates> </Velocity11>' />
|
<VolumeUpdates Location='Stage 1' ResetAbsolute='0' >
<VolumeUpdate Col='0' Row='0' VolumeChange='0.0001' />
<VolumeUpdate Col='1' Row='0' VolumeChange='0.0001' />
<VolumeUpdate Col='2' Row='0' VolumeChange='0.0001' />
<VolumeUpdate Col='3' Row='0' VolumeChange='0.0001' />
<VolumeUpdate Col='4' Row='0' VolumeChange='0.0001' />
<VolumeUpdate Col='5' Row='0' VolumeChange='0.0001' />
<VolumeUpdate Col='6' Row='0' VolumeChange='0.0001' />
<VolumeUpdate Col='7' Row='0' VolumeChange='0.0001' />
<VolumeUpdate Col='8' Row='0' VolumeChange='0.0001' />
<VolumeUpdate Col='9' Row='0' VolumeChange='0.0001' />
|