NAME
Robotics::Tecan - Control Tecan robotics hardware as Robotics module
VERSION
Version 0.21
SYNOPSIS
Easy to use software interface for Tecan robotics devices. Query the locally-connected hardware, attach to the hardware, use the high level functions to send individual or multiple commands to the robotics.
NO WARRANTIES: Bugs in this software or any related software may possibly cause physical damage to robotics hardware and/or equipment operators. Be careful.
The following are required to communicate between Perl (or any scripting language) and the Tecan robotics: =over 4 Tecan requires the "Gemini" application to be running (and perhaps logged in). The login account may require special flags set to enable third-party communication. The Tecan hardware may also require hardware options to enable third-party communication (to turn on "the named pipe"). This hardware option is referred to as a "hardware lock" (a dongle attached to the application computer). The "named pipe" must exist and be writable/readable to the local user; this is outside of Perl control. When in doubt here, verify capabilities with Tecan support. =back
Example:
use Robotics;
use Robotics::Tecan;
$hardware = Robotics->query(); # Print available robots
if (!($hardware =~ /Tecan/)) {
die "Where's the Tecan?\n";
}
my $tecan = Robotics::Tecan->new();
$tecan->attach();
if (!($tecan->version =~ /Version 4.1.0.0/)) {
$tecan->detach();
die "Robot version mismatch: Exit.\n";
}
$tecan->home();
$tecan->configure("worktable.yaml");
$tecan->pipette( ... );
...
EXPORT
Write =item * Read
FUNCTIONS
new
Allocate new object for communication to Tecan hardware.
Arguments: (optional) Object class.
Returns: Object, or 0 if communication fails to initialize.
_find Internal function only. Do not call.
Attach
Start communication with the hardware.
Arguments are:
- Robotics object: The variable returned from new().
- (optional) Flags. A string which specifies attach options as single characters in the string: "o" for override
-
Returns: String containing hardware type and version from manufacturer "VERSION" output.
Will not attach to "BUSY" hardware unless override flag is given.
startService
- (Special method - Not normally used - Experimental)
-
Attempt to start the Windows GUI application associated with Tecan (such as running "Gemini.exe"). Since this will occur under Win32, and there is no mechanism for forking, this call will likely never return. Best not to call this method if the Tecan application is already running: unexpected Win32 results may occur.
This method should only be used when "Desktop" access to start the Tecan application is unavailable (such as starting the service from a remote machine over the network).
Usage, for Tecan: Do query() first, to see if the robotics is "not started"; if it is not, use this function to start Gemini, then query() again (the second time should find the named pipe).
server
Start network server. The server provides network access to the locally-attached robotics.
detach
End communication to the hardware.
status_hardware
Read hardware type. Return hardware type string (should always be "GENESIS").
configure
Loads configuration data into memory.
- pathname of configuration file in YAML format
-
Returns: 0 if success, 1 if file error, 2 if configuration error.
status
Read hardware status. Return status string.
initialize
Quickly initialize hardware for movement (perhaps running quick calibration). Return status string. May take time to complete.
initialize_full
Fully initialize hardware for movement (perhaps running calibration). Return status string. May take time to complete.
simulate_enable
Robotics::Tecan internal hook for simulation and test. Not normally used.
Write
Low level function to write commands to hardware.
WriteFirmware
Low level function to write commands to hardware's firmware.
- WARNING - Some firmware commands are dangerous to the equipment - No error checking is performed by this function - user beware.
-
Argument: string command.
Read
Low level function to read commands from hardware.
REFERENCE ON NAMED PIPES
Named pipes must be accessed as UNCs. This means that the computer name where the named pipe is running is a part of its name. Just like any UNC a share name must be specified. For named pipes the share name is pipe. Examples are:
\\machinename\pipe\My Named Pipe \\machinename\pipe\Test \\machinename\pipe\data\Logs\user_access.log
Notice how the third example makes use of an arbitrarly long path and that it has what appear to be subdirectories. Since a named pipe is not truly a part of the a disk based file system there is no need to create the data\logs subdirectories; they are simply part of the named pipes name. Also notice that the third example uses a file extension (.log). This extension does absolutely nothing and is (like the subdirectories) simply part of the named pipes name.
When a client process attempts to connect to a named pipe it must specify a full UNC. If, however, the named pipe is on the same computer as the client process then the machine name part of the UNC can be replaced with a dot "." as in:
\\.\pipe\My Named Pipe
AUTHOR
Jonathan Cline, <jcline at ieee.org>
BUGS
Please report any bugs or feature requests to bug-bio-robotics at rt.cpan.org
, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Bio-Robotics. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
SUPPORT
You can find documentation for this module with the perldoc command.
perldoc Robotics::Tecan
You can also look for information at:
RT: CPAN's request tracker
AnnoCPAN: Annotated CPAN documentation
CPAN Ratings
Search CPAN
ACKNOWLEDGEMENTS
COPYRIGHT & LICENSE
Copyright 2009 Jonathan Cline.
This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.
See http://dev.perl.org/licenses/ for more information.
10 POD Errors
The following errors were encountered while parsing the POD:
- Around line 87:
'=item' outside of any '=over'
- Around line 90:
You forgot a '=back' before '=head1'
- Around line 275:
'=item' outside of any '=over'
- Around line 421:
You forgot a '=back' before '=head2'
- Around line 423:
'=item' outside of any '=over'
- Around line 464:
You forgot a '=back' before '=head2'
- Around line 572:
'=item' outside of any '=over'
- Around line 607:
You forgot a '=back' before '=head2'
- Around line 702:
'=item' outside of any '=over'
- Around line 714:
You forgot a '=back' before '=head2'