NAME

Lab::Bus::LinuxGPIB - LinuxGPIB bus

SYNOPSIS

This is the USB TMC (Test & Measurement Class) bus class.

my $tmc = new Lab::Bus::USBtmc({ });

or implicit through instrument and connection creation:

my $instrument = new Lab::Instrument::HP34401A({
  connection_type => 'USBtmc',
  tmc_address=>1,
}

DESCRIPTION

Driver for the interface provided by the usbtmc linux kernel module.

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.

CONSTRUCTOR

new

my $bus = Lab::Bus::USBtmc({
 });

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

Thrown Exceptions

Lab::Bus::USBtmc throws

Lab::Exception::TMCOpenFileError

Lab::Exception::CorruptParameter

METHODS

connection_new

$tmc->connection_new({ tmc_address => $addr });

Creates a new connection ("instrument handle") for this bus. The argument is a hash, whose contents depend on the bus type.

For TMC there are several ways to indicate which device is to be used

if more than one is given, it is the first one that is used: tmc_address => $addr selects /dev/usbtmc$addr visa_name=> 'USB::0xVVVV::0xPPPP::SSSSSS::INSTR'; where VVVV is the hex usb vendor number, PPPP is the hex usb product number, and SSSSSS is the serial number string. If SSSSSS is '*', then the first device found that matches vendor and product will be used. usb_vendor=>'0xVVVV' or 0xVVVV vendor number usb_product=>'0xPPPP' or 0xPPPP product number usb_serial=>'SSSSSS' or '*' serial number, or wildcard.

The usb_serial defaults to '*' if not specified.

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 = $tmc->connection_new({ usb_vendor => 0x0699, usb_product => 0x1234 });
$result = $tmc->connection_read($self->InstrumentHandle(), { options });

See Lab::Instrument::Read().

connection_write

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

Sends $Command to the instrument specified by the handle.

connection_read

$tmc->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::Timeout 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

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

Sets the timeout in seconds for tmc 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.

$tmc_serial = $instrument->config(usb_serial);

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

$config = $bus->config();
$tmc_serial = $bus->config()->{'usb_serial'};

CAVEATS/BUGS

Sysfs settings for timeout not supported, yet.

SEE ALSO

AUTHOR/COPYRIGHT

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,
          2010      Matthias Völker <mvoelker@cpan.org>
          2011      Florian Olbrich, Andreas K. Hüttel
          2012      Hermann Kraus

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