The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

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:

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'