NAME

Lab::Bus::LinuxGPIB - LinuxGPIB bus

VERSION

version 3.692

SYNOPSIS

This is the GPIB bus class for the GPIB library linux-gpib (aka libgpib0 in the debian world).

my $GPIB = new Lab::Bus::LinuxGPIB({ gpib_board => 0 });

or implicit through instrument and connection creation:

my $instrument = new Lab::Instrument::HP34401A({
  connection_type => 'LinuxGPIB',
  gpib_board => 0,
  gpib_address=>14,
}

DESCRIPTION

See http://linux-gpib.sourceforge.net/ for details on the LinuxGPIB package. The package provides both kernel drivers and Perl bindings. Obviously, this will work for Linux systems only. On Windows, please use Lab::Bus::VISA. The interfaces are (errr, will be) identical.

Note: you don't need to explicitly handle bus objects. The Instruments will create them themselves, and existing bus will be automagically reused.

In GPIB, instantiating two bus with identical parameter "gpib_board" will logically lead to the reuse of the first one. To override this, use the parameter "ignore_twins" at your own risk.

CONSTRUCTOR

new

my $bus = Lab::Bus::GPIB({
   gpib_board => $board_num
 });

Return blessed $self, with @_ accessible through $self->config().

gpib_board: Index of board to use. Can be omitted, 0 is the default.

Thrown Exceptions

Lab::Bus::GPIB throws

Lab::Exception::GPIBError
  fields:
  'ibsta', the raw ibsta status byte received from linux-gpib
  'ibsta_hash', the ibsta bit values in a named hash ( 'DCAS' => $val, 'DTAS' => $val, ... ). 
                Use Lab::Bus::GPIB::VerboseIbstatus() to get a nice string representation

Lab::Exception::GPIBTimeout
  fields:
  'Data', this is meant to contain the data that (maybe) has been read/obtained/generated despite and up to the timeout.
  ... and all the fields of Lab::Exception::GPIBError

METHODS

connection_new

$GPIB->connection_new({ gpib_address => $paddr });

Creates a new connection ("instrument handle") for this bus. The argument is a hash, whose contents depend on the bus type. For GPIB at least 'gpib_address' is needed.

The handle is usually stored in an instrument object and given to connection_read, connection_write etc. to identify and handle the calling instrument:

$InstrumentHandle = $GPIB->connection_new({ gpib_address => 13 });
$result = $GPIB->connection_read($self->InstrumentHandle(), { options });

See Lab::Instrument::Read().

TODO: this is probably not correct anymore

connection_write

$GPIB->connection_write( $InstrumentHandle, { Cmd => $Command } );

Sends $Command to the instrument specified by the handle.

connection_read

$GPIB->connection_read( $InstrumentHandle, { Cmd => $Command, ReadLength => $readlength, Brutal => 0/1 } );

Sends $Command to the instrument specified by the handle. Reads back a maximum of $readlength bytes. If a timeout or an error occurs, Lab::Exception::GPIBError or Lab::Exception::GPIBTimeout are thrown, respectively. The Timeout object carries the data received up to the timeout event, accessible through $Exception->Data().

Setting Brutal to a true value will result in timeouts being ignored, and the gathered data returned without error.

timeout

$GPIB->timeout( $connection_handle, $timeout );

Sets the timeout in seconds for GPIB operations on the device/connection specified by $connection_handle.

config

Provides unified access to the fields in initial @_ to all the child classes. E.g.

$GPIB_Address=$instrument->config(gpib_address);

Without arguments, returns a reference to the complete $self->config aka @_ of the constructor.

$config = $bus->config();
$GPIB_PAddress = $bus->config()->{'gpib_address'};

CAVEATS/BUGS

Few. Also, not a lot to be done here.

SEE ALSO

COPYRIGHT AND LICENSE

This software is copyright (c) 2020 by the Lab::Measurement team; in detail:

Copyright 2011       Andreas K. Huettel, Florian Olbrich
          2012       Florian Olbrich, Hermann Kraus, Stefan Geissler
          2016       Charles Lane, Simon Reinhardt
          2017       Andreas K. Huettel

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