| Lab-Instrument documentation | view source | Contained in the Lab-Instrument distribution. |
Lab::Instrument - General VISA based instrument
use Lab::Instrument;
my $hp22 = new Lab::Instrument(0,22); # GPIB board 0, address 22
print $hp22->Query('*IDN?');
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.)
$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.
$write_count=$instrument->Write($command);
Sends the command $command to the instrument.
$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.
$result=$instrument->BrutalRead($length);
Same as Read, but this command ignores all error conditions.
$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.
$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.
$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.
$instrument->Clear();
Sends a clear command to the instrument.
$instr_handle=$instrument->Handle();
Returns the VISA handle. You can use this handle with the Lab::VISA module.
Probably many.
This is $Id: Instrument.pm 650 2010-04-22 19:09:27Z schroeer $
Copyright 2004-2006 Daniel Schröer <schroeer@cpan.org>,
2009-2010 Daniel Schröer, Andreas K. Hüttel (L<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.
| Lab-Instrument documentation | view source | Contained in the Lab-Instrument distribution. |