NAME

Lab::Instrument - General VISA based instrument

SYNOPSIS

use Lab::Instrument;

my $hp22 =  new Lab::Instrument(0,22); # GPIB board 0, address 22
print $hp22->Query('*IDN?');

DESCRIPTION

Lab::Instrument offers an abstract interface to an instrument, that is connected via GPIB, serial bus, USB, ethernet, or Oxford Instruments IsoBus. It provides general Read, Write and Query methods, and more.

It can be used either directly by the programmer to work with an instrument that doesn't have its own perl class (like Lab::Instrument::HP34401A). Or it can be used by such a specialized perl instrument class (like Lab::Instrument::HP34401A) to delegate the actual visa work. (All the instruments in the default package do so.)

CONSTRUCTOR

new

$instrument  = new Lab::Instrument($board,$addr);

$instrument2 = new Lab::Instrument({
   GPIB_board   => $board,
   GPIB_address => $addr
});

$instrument3 = new Lab::Instrument($resourcename);

$instrument4 = new Lab::Instrument($isobus,$addr);

Creates a new instrument object and open the instrument with GPIB address $addr connected to the GPIB board $board (usually 0). Alternatively, the VISA resource name $resourcename can be specified as string for serial or USB devices. All instrument classes that internally use the Lab::Instrument module (that's all instruments in the default distribution) can use these three forms of the constructor.

Lastly, an IsoBus device can be instantiated by providing the IsoBus instrument $isobus (of type Lab::Instrument::IsoBus) as first parameter and the numeric IsoBus address of the device $addr as second parameter.

METHODS

Write

$write_count=$instrument->Write($command);

Sends the command $command to the instrument.

Read

$result=$instrument->Read($length);

Reads a result of maximum length $length from the instrument and returns it. Dies with a message if an error occurs.

BrutalRead

$result=$instrument->BrutalRead($length);

Same as Read, but this command ignores all error conditions.

Query

$result=$instrument->Query($command, $wait_query, $wait_status);

Sends the command $command to the instrument and reads a result from the instrument and returns it. The length of the read buffer is haphazardly set to 300 bytes.

Optional second and third arguments specify waiting times, i.e. how long the instrument needs to process the query and provide a result ($wait_query) and how long the instrument needs to react on a command at all and set the status line ($wait_status). Both parameters are set to 10us if not specified in the command line.

LongQuery

$result=$instrument->LongQuery($command, $wait_query, $wait_status);

Same as Query, but with a read buffer size of 10240 bytes. If you need to read even more data, you will have to use separate Write and Read calls.

BrutalQuery

$result=$instrument->BrutalQuery($command);

Same as Query (i.e. buffer size 300 bytes), but with a lot less finesse. :) Sends command, asks for a value and returns whatever is returned. All error conditions including timeouts are blatantly ignored.

Clear

$instrument->Clear();

Sends a clear command to the instrument.

Handle

$instr_handle=$instrument->Handle();

Returns the VISA handle. You can use this handle with the Lab::VISA module.

CAVEATS/BUGS

Probably many.

SEE ALSO

Lab::VISA
Lab::Instrument::HP34401A
Lab::Instrument::HP34970A
Lab::Instrument::Source
Lab::Instrument::KnickS252
Lab::Instrument::Yokogawa7651
Lab::Instrument::SR780
Lab::Instrument::ILM
and many more...

AUTHOR/COPYRIGHT

This is $Id: Instrument.pm 612 2010-04-14 20:30:26Z schroeer $

Copyright 2004-2006 Daniel Schröer <schroeer@cpan.org>, 2009-2010 Andreas K. Hüttel (http://www.akhuettel.de/) and David Kalok

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

1 POD Error

The following errors were encountered while parsing the POD:

Around line 405:

Non-ASCII character seen before =encoding in 'Schröer'. Assuming CP1252