IWorksController interface : Update method

Update method
Overview
This section covers the Update method. Updates are divided in the following categories. See “Update element” for a more complete list that includes descriptions.
Description
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.
Syntax
 
HRESULT Update(
[in] IControllerClient *Source,
[in] BSTR Update
);
Parameters
 
Update XML block
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.
Velocity11 element
For all update XML blocks, the value of the file attribute for the Velocity11 element is Update. See “Velocity11 element” .
Update element
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.
Update element’s children
The Update element’s children are defined in the “update” sections for each Category value.
AsyncTaskFinished update
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.
XML structure
 
<Update Category='AsyncTaskFinished'>
<Parameters>
<Parameter Name='Async_TaskVWorksID' ... />
</Parameters>
</Update>
Parameters element
The Parameters element contains one Parameter element.
Parameter element
The Parameter element has the following attributes plus the Scriptable, Style, and Type attributes:
 
The value Async_TaskVWorksID.
The task ID of the asynchronous task, which is automatically generated by VWorks software and used to identify and manage all asynchronous tasks from all plugins.
Example of an AsyncTaskFinished update
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' >
<Parameters >
<Parameter Name='Async_TaskVWorksID' Scriptable='1' Style='0' Type='1'
Value='26.18.1' />
</Parameters>
</Update>
AsyncTaskStarted update
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.
XML structure
 
<Update Category='AsyncTaskStarted'>
<Parameters>
<Parameter Name='Async_TaskVWorksID' ... />
</Parameters>
</Update>
Parameters element
The Parameters element contains one Parameter element.
Parameter element
The Parameter element has the following attributes plus the Scriptable, Style, and Type attributes:
 
The value Async_TaskVWorksID.
The task ID of the asynchronous task, which is automatically generated by VWorks software and used to identify and manage all asynchronous tasks from all plugins.
Example of an AsyncTaskStarted update
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' >
<Parameters >
<Parameter Name='Async_TaskVWorksID' Scriptable='1' Style='0' Type='1'
Value='26.18.1' />
</Update>
Barcode update
The Barcode update tells VWorks software to update the barcode on the specified side of the labware at the specified location as follows:
When a labeler prints and applies a barcode, the plugin returns the new barcode to VWorks software in the Barcode update.
IMPORTANT VWorks software cannot call the BarCodeRead and BarCodeMisread methods unless the plugin implements the IVHooks interface. See “IVHooks interface” .
XML structure
 
<Update Category='Barcode'>
<Parameters>
<Parameter Name='Location' ... />
<Parameter Name='Side' ... />
<Parameter Name='Barcode' ... />
</Parameters>
</Update>
Parameters element
The Parameters element contains three Parameter elements.
Parameter element
Each Parameter element has one of the following pairs of Name and Value attributes plus the Scriptable, Style, and Type attributes:
 
The value Location.
0 = South
1 = West
2 = North
3 = East
The value Barcode.
Example of a Barcode update
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' >
<Parameters >
<Parameter Name='Location' Scriptable='1' Style='0' Type='1'
Value='Stage 1' />
<Parameter Name='Side' Scriptable='1' Style='0' Type='1' Value='0' />
<Parameter Name='Barcode' Scriptable='1' Style='0' Type='1'
Value='barcode' />
</Parameters>
</Update>
ErrorAbortRetryIgnoreNonBlocking update
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:
1
The plugin calls the ErrorAbortRetryIgnoreNonBlocking update to notify VWorks software that an error occurred and to provide a literal string that describes the error.
2
VWorks software does the following:
a
b
The Abort, Ignore and Continue…, Retry, and Diagnostics buttons
The figure on page 41 shows a standard error dialog box.
3
4
VWorks software calls the appropriate IWorksAsyncDriver method, Abort, Ignore, or Retry, or the IWorksDiags ShowDiagsDialog method. See “Abort method” , “Ignore method” , and “Retry method” , and “ShowDiagsDialog method” .
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.]
XML structure
 
<Update Category='ErrorAbortRetryIgnoreNonBlocking' >
<Parameters >
<Parameter Name='Async_CommandMetaData' ... />
</Parameters>
</Update>
Parameters element
The Parameters element contains one Parameter element.
Parameter element
The Parameter element has the following attributes plus the Scriptable, Style, and Type attributes:
 
The value Async_CommandMetaData.
Command XML block (Shake task)
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.
XML structure
The value of the file attribute for the Velocity11 element is MetaData. See “Velocity11 element” .
 
<Command>
<Parameters>
<Parameter>
<Ranges>
<Range />
...
</Ranges>
</Parameter>
...
</Parameters>
<Locations>
<Value />
...
</Locations>
<AsyncParameters>
<AsyncParameter />
...
</AsyncParameters>
</Command>
Command element
The Command element has three children: Parameters, Locations, and AsyncParameters. The Command element has the following attributes:
 
If the protocol has been saved, the value of this attribute is the protocol’s file path. If the protocol has not been saved, the value is the default protocol name.
Parameters element
The Parameters element contains one or more Parameter elements.
Parameter element
The Parameter element contains one Ranges element and has the following attributes plus the Scriptable, Style, and Type attributes:
 
Ranges element
The Ranges element contains one or more Range elements.
Range element
The Range element has the following attribute:
 
Locations element
The Locations element contains one of more Value elements.
Value element
Each Value element contains the name of a location that is used by the task. This element has the following attribute:
 
AsyncParameters element
The AsyncParameters element contains five AsyncParameter elements.
AsyncParameter element
Each AsyncParameter element has one of the following pairs of Name and Value attributes plus the Style and Type attributes:
 
The value Async_TaskVWorksID.
The task ID of the asynchronous task, which is automatically generated by VWorks software and used by VWorks software to identify and manage all asynchronous tasks from all plugins.
Note: The AsyncParameters element contains two Async_TaskWorksID elements.
The value Async_ErrorDescription.
The value Async_TaskID.
The task ID of the asynchronous task, which is generated by the plugin and used to identify and manage its asynchronous tasks.
The value Async_Location.
Example of an ErrorAbortRetryIgnoreNonBlocking update (truncated)
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' >
<Parameters >
<Parameter Name='Async_CommandMetaData' Scriptable='1' Style='0' Type='1' Value='&lt;?xml version=&apos;1.0&apos; encoding=&apos;ASCII&apos; ?&gt;
&lt;Velocity11 file=&apos;MetaData&apos;
md5sum=&apos;f1805177f41cea7b08356c675b25714d&apos; version=&apos;1.0&apos; &gt;
&lt;Command Compiler=&apos;0&apos; Description=&apos;Shake plate&apos;
Editor=&apos;4&apos; Name=&apos;Shake&apos; NextTaskToExecute=&apos;1&apos;
ProtocolName=&apos;Protocol File - 1&apos; RequiresRefresh=&apos;0&apos;
TaskRequiresLocation=&apos;1&apos; VisibleAvailability=&apos;1&apos; &gt;
&lt;Parameters &gt; &lt;Parameter Name=&apos;Location&apos;
Scriptable=&apos;1&apos; Style=&apos;0&apos; Type=&apos;5&apos; Value=&apos;6&apos;
&gt; &lt;Ranges &gt; &lt;Range Value=&apos;process - 1&apos; /&gt; &lt;/Ranges&gt;
&lt;/Parameter&gt; &lt;Parameter Description=&apos;Mode to operate in&apos;
Name=&apos;Mode&apos; Scriptable=&apos;1&apos; Style=&apos;0&apos;
Type=&apos;2&apos; Value=&apos;Timed&apos; &gt; &lt;Ranges &gt; &lt;Range
Value=&apos;On&apos; /&gt; &lt;Range Value=&apos;Off&apos; /&gt; &lt;Range
Value=&apos;Timed&apos; /&gt; &lt;/Ranges&gt;
&lt;Parameter Name=&apos;Next task command name&apos; Scriptable=&apos;1&apos;
Style=&apos;0&apos; Type=&apos;1&apos; /&gt; &lt;/Parameters&gt; &lt;Locations &gt;
&lt;Value Value=&apos;6&apos; /&gt; &lt;/Locations&gt; &lt;AsyncParameters &gt;
&lt;AsyncParameter Name=&apos;Async_TaskVWorksID&apos; Style=&apos;0&apos;
Type=&apos;1&apos; Value=&apos;25.4.1&apos; /&gt; &lt;AsyncParameter
Name=&apos;Async_ErrorDescription&apos; Style=&apos;0&apos; Type=&apos;1&apos;
Value=&apos;Location 6 Orbital Shaking Station error: Could not set RPM. Make sure
the device is properly connected and initialized.&apos; /&gt; &lt;AsyncParameter
Name=&apos;Async_TaskID&apos; Style=&apos;0&apos; Type=&apos;1&apos;
Value=&apos;1&apos; /&gt; &lt;AsyncParameter Name=&apos;Async_TaskVWorksID&apos;
Style=&apos;0&apos; Type=&apos;1&apos; Value=&apos;25.4.1&apos; /&gt;
&lt;AsyncParameter Name=&apos;Async_Location&apos; Style=&apos;0&apos;
Type=&apos;1&apos; Value=&apos;6&apos; /&gt; &lt;/AsyncParameters&gt;
&lt;/Command&gt; &lt;/Velocity11&gt;' />
</Parameters>
</Update>
Un-escaped Update Command XML block (truncated)
The following code is the truncated un-escaped Command XML block from the previous ErrorAbortRetryIgnoreNonBlocking update example.
 
<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>
InventoryPlateBarcodes update
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” .
XML structure
 
<Update Category='InventoryPlateBarcodes'>
<Barcode />
...
</Update>
Barcode element
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
1 = A labware is present
Example of an InventoryPlateBarcodes update
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'
Value='barcode0001' />
<Barcode BarcodeError='0' Cassette='1' PlatePresent='1' Slot='2'
Value='barcode0002' />
<Barcode BarcodeError='0' Cassette='1' PlatePresent='1' Slot='3'
Value='barcode0003' />
</Update>
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.
 
LiquidTransferComplete update
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.
XML structure
 
<Update Category='LiquidTransferComplete'>
<Parameters>
<Parameter Name='LiquidTransferComplete' ... />
</Parameters>
</Update>
Parameters element
The Parameters element contains one Parameter element.
Parameter element
The Parameter element has the following attributes plus the Scriptable, Style, and Type attributes:
 
The value LiquidTransferComplete.
LiquidTransferCompleteUpdate XML block
The LiquidTransferCompleteUpdate XML block contains the LiquidTransferCompleteUpdate element and all its children. This XML block provides information about the completed liquid transfer.
XML structure
 
<LiquidTransferCompleteUpdate>
<PipetteHeadMode />
</LiquidTransferCompleteUpdate>
LiquidTransferCompleteUpdate element
The LiquidTransferCompleteUpdate element contains one PipetteHeadMode element and has the following attributes:
 
PipetteHeadMode element
See “PipetteHeadMode element” .
Example of a LiquidTransferComplete update
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'>
<Parameters>
<Parameter Name='LiquidTransferComplete' Scriptable='1' Style='0' Type='1'
Value='&lt;?xml version=&apos;1.0&apos; encoding=&apos;ASCII&apos; ?&gt;
&lt;Velocity11 file=&apos;MetaData&apos;
md5sum=&apos;0fd609ab6ccef7e255a2916357326df9&apos; version=&apos;1.0&apos; &gt;
&lt;LiquidTransferCompleteUpdate DestLocation=&apos;Destination Stage&apos;
SourceLocation=&apos;Source Stage&apos; &gt; &lt;PipetteHeadMode
Channels=&apos;0&apos; ColumnCount=&apos;12&apos; RowCount=&apos;8&apos;
SubsetConfig=&apos;0&apos; SubsetType=&apos;0&apos; /&gt;
&lt;/LiquidTransferCompleteUpdate&gt; &lt;/ Velocity11&gt;' />
</Parameters>
</Update>
Un-escaped LiquidTransferCompleteUpdate XML block
The following code is the un-escaped LiquidTransferCompleteUpdate XML block from the previous LiquidTransferComplete update example.
 
<LiquidTransferCompleteUpdate DestLocation='Destination Stage'
SourceLocation='Source Stage' >
<PipetteHeadMode Channels='0' ColumnCount='12' RowCount='8' SubsetConfig='0'
SubsetType='0' />
</LiquidTransferCompleteUpdate>
RackInfo update
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.
Note: Plugins usually provide a task that performs the rack check.
XML structure
 
<Update Category='RackInfo'>
<Parameters>
<Parameter Name='RackInfoType' ... />
<Parameter Name='Location' ... />
<Parameter Name='CheckRackResult' ... />
<Parameter Name='MismatchesVariable' ... />
<Parameter Name='Mismatches' ... />
<Parameter Name='ProtocolName' ... />
</Parameters>
</Update>
Parameters element
The Parameters element contains five Parameter elements.
Parameter element
Each Parameter element has one of the following pairs of Name and Value attributes plus the Scriptable, Style, and Type attributes:
 
The value RackInfoType.
The value Location.
The value CheckRackResult.
0 = One or more mismatches were found
1 = No mismatches were found
The value MismatchesVariable.
The name of a JavaScript variable set to the number of mismatches that occurred during the rack check.
The value Mismatches.
The value ProtocolName.
If the protocol has been saved, the value of this attribute is the protocol’s file path. If the protocol has not been saved, the value is the default protocol name.
Example of a RackInfo update
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' >
<Parameters >
<Parameter Name='RackInfoType' Scriptable='1' Style='0' Type='1'
Value='CheckRack' />
<Parameter Name='Location' Scriptable='1' Style='0' Type='1'
Value='Stage 1' />
<Parameter Name='CheckRackResult' Scriptable='1' Style='0' Type='0'
Value='0' />
<Parameter Name='MismatchesVariable' Scriptable='1' Style='0' Type='1'
Value='mismatches' />
<Parameter Name='Mismatches' Scriptable='1' Style='0' Type='8' Value='26' />
<Parameter Name='ProtocolName' Scriptable='1' Style='0' Type='1'
Value='Protocol File - 1' />
</Parameters>
</Update>
RunScript update
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.
XML structure
 
<Update Category='RunScript'>
<Parameters>
<Parameter Name='Script' ... />
<Parameter Name='ProtocolName' ... />
</Parameters>
</Update>
Parameters element
The Parameters element contains two Parameter elements.
Parameter element
Each Parameter element has one of the following pairs of Name and Value attributes plus the Scriptable, Style, and Type attributes:
 
The value Script.
The value ProtocolName.
If the protocol has been saved, the value of this attribute is the protocol’s file path. If the protocol has not been saved, the value is the default protocol name.
Example of a RunScript update
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' >
<Parameters >
<Parameter Name='Script' Scriptable='1' Style='0' Type='1'
Value='print(&quot;This is a testing for run script&quot;);a=1' />
<Parameter Name='ProtocolName' Scriptable='1' Style='0' Type='1'
Value='Protocol File - 1' />
</Parameters>
</Update>
Un-escaped JavaScript script
The following code is the un-escaped JavaScript script from the previous RunScript update example.
 
RunsetAdd update
The RunsetAdd update tells VWorks software to schedule a protocol run in the Runset Manager.
XML structure
 
<Update Category='RunsetAdd'>
<Parameters>
<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' ... />
</Parameters>
</Update>
Parameters element
The Parameters element contains 11 Parameter elements.
Parameter element
Each Parameter element has one of the following pairs of Name and Value attributes plus the Scriptable, Style, and Type attributes:
 
The value ProtocolName.
If the protocol has been saved, the value of this attribute is the protocol’s file path. If the protocol has not been saved, the value is the default protocol name.
The value StartTime_year.
The value StartTime_month.
The value StartTime_day.
The value StartTime_hour.
The value StartTime_minutes.
The value StartTime_seconds.
The value NumberOfRuns.
The value PluginName.
The value PluginFileName.
The value ProtocolNotes.
Example of a RunsetAdd update
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' >
<Parameters >
<Parameter Name='ProtocolName' Scriptable='1' Style='0' Type='1'
Value='Protocol File - 1' />
<Parameter Name='StartTime_year' Scriptable='1' Style='0' Type='8'
Value='2010' />
<Parameter Name='StartTime_month' Scriptable='1' Style='0' Type='8'
Value='4' />
<Parameter Name='StartTime_day' Scriptable='1' Style='0' Type='8'
Value='15' />
<Parameter Name='StartTime_hour' Scriptable='1' Style='0' Type='8'
Value='20' />
<Parameter Name='StartTime_minute' Scriptable='1' Style='0' Type='8'
Value='29' />
<Parameter Name='StartTime_second' Scriptable='1' Style='0' Type='8'
Value='11' />
<Parameter Name='NumberOfRuns' Scriptable='1' Style='0' Type='1'
Value='10' />
<Parameter Name='PluginName' Scriptable='1' Style='0' Type='1'
Value='PluginName' />
<Parameter Name='PluginFileName' Scriptable='1' Style='0' Type='1'
Value='PluginFileName' />
<Parameter Name='ProtocolNotes' Scriptable='1' Style='0' Type='1'
Value='ProtocolNotes' />
</Parameters>
</Update>
SetIOManagerPointDigitalOutput update
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.
XML structure
 
<Update Category='SetIOManagerPointDigitalOutput'>
<Parameters>
<Parameters >
<Parameter Name='PointName' ... />
<Parameter Name='NewValue' ... />
</Parameters>
</Update>
Parameters element
The Parameters element contains two Parameter elements.
Parameter element
Each Parameter element has one of the following pairs of Name and Value attributes plus the Scriptable, Style, and Type attributes:
 
The value PointName.
The value NewValue.
0 = Off
1 = On
Example of a SetIOManagerPointDigitalOutput update
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' >
<Parameters >
<Parameter Name='PointName' Scriptable='1' Style='0' Type='1'
Value='Vacuum Delid Suction' />
<Parameter Name='NewValue' Scriptable='1' Style='0' Type='0' Value='1' />
</Parameters>
</Update>
Volume update
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.
XML structure
 
<Update Category='Volume'>
<Parameters>
<Parameter Name='VolumeChange' ... />
</Parameters>
</Update>
Parameters element
The Parameters element contains one Parameter element.
Parameter element
The Parameter element has the following attributes plus the Scriptable, Style, and Type attributes:
 
The value VolumeChange.
VolumeUpdates XML block
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.
XML structure
 
<VolumeUpdates>
<VolumeUpdates>
<VolumeUpdate />
...
</VolumeUpdates>
</VolumeUpdates>
Volume Updates element (parent)
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
VolumeUpdates element (child)
The VolumeUpdates child element contains one or more VolumeUpdate elements.
VolumeUpdate element
The VolumeUpdate element contains the coordinates of the well and the volume change. This element has the following attributes:
 
Example of a Volume update
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'>
<Parameters>
<Parameter Name='VolumeChange' Scriptable='1' Style='0' Type='1'
Value='&lt;?xml version=&apos;1.0&apos; encoding=&apos;ASCII&apos; ?&gt;
&lt;Velocity11 file=&apos;MetaData&apos;
md5sum=&apos;2d50df57d9d719c31dabc56f0a8402ef&apos; version=&apos;1.0&apos; &gt;
&lt;VolumeUpdates Location=&apos;Stage 1&apos; OptionalDevice=&apos;Optional
Device&apos; ResetAbsolute=&apos;0&apos; &gt; &lt;VolumeUpdates &gt;
&lt;VolumeUpdate Col=&apos;0&apos; Row=&apos;0&apos;
VolumeChange=&apos;0.0001&apos; /&gt; &lt;VolumeUpdate Col=&apos;1&apos;
Row=&apos;0&apos; VolumeChange=&apos;0.0001&apos; /&gt; &lt;VolumeUpdate
Col=&apos;2&apos; Row=&apos;0&apos; VolumeChange=&apos;0.0001&apos; /&gt;
&lt;VolumeUpdate Col=&apos;3&apos; Row=&apos;0&apos;
VolumeChange=&apos;0.0001&apos; /&gt; &lt;VolumeUpdate Col=&apos;4&apos;
Row=&apos;0&apos; VolumeChange=&apos;0.0001&apos; /&gt; &lt;VolumeUpdate
Col=&apos;5&apos; Row=&apos;0&apos; VolumeChange=&apos;0.0001&apos; /&gt;
&lt;VolumeUpdate Col=&apos;6&apos; Row=&apos;0&apos;
VolumeChange=&apos;0.0001&apos; /&gt; &lt;VolumeUpdate Col=&apos;7&apos;
Row=&apos;0&apos; VolumeChange=&apos;0.0001&apos; /&gt; &lt;VolumeUpdate
Col=&apos;8&apos; Row=&apos;0&apos; VolumeChange=&apos;0.0001&apos; /&gt;
&lt;VolumeUpdate Col=&apos;9&apos; Row=&apos;0&apos;
VolumeChange=&apos;0.0001&apos; /&gt; &lt;/VolumeUpdates&gt; &lt;/
VolumeUpdates&gt; &lt;/Velocity11&gt;' />
</Parameters>
</Update>
Un-escaped VolumeUpdates XML block
The following code is the un-escaped VolumeUpdates XML block from the previous Volume update example.
 
<VolumeUpdates Location='Stage 1' 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>
Related information
 
IStorageDriver QueryStorageLocations method